about summary refs log tree commit diff
path: root/sysdeps/gnu/netinet/tcp.h
diff options
context:
space:
mode:
authorZack Weinberg <zackw@panix.com>2016-08-21 15:38:41 -0400
committerZack Weinberg <zackw@panix.com>2016-09-23 08:43:56 -0400
commit11160cb76f56e0a711686e34881a4eaf1ad2fa0e (patch)
tree32de3923d10cdda555e5c1d3b230ba6527b67544 /sysdeps/gnu/netinet/tcp.h
parentcb765808fbffca30a1c67cf01ffdce30f8e6df3e (diff)
downloadglibc-11160cb76f56e0a711686e34881a4eaf1ad2fa0e.tar.gz
glibc-11160cb76f56e0a711686e34881a4eaf1ad2fa0e.tar.xz
glibc-11160cb76f56e0a711686e34881a4eaf1ad2fa0e.zip
Installed-header hygiene (BZ#20366): obsolete BSD u_* types.
The types u_char, u_short, u_int, u_long, ushort, uint, ulong, u_int8_t,
u_int16_t, u_int32_t, u_int64_t, quad_t, and u_quad_t are BSDisms that
have never been standardized.  While glibc should continue to *provide*
these types for compatibility's sake, its public headers should not
use them.

The meat of this change was mechanically generated by the following
shell command:

    perl -pi~ -e '
        s/\b(__)?u_char\b/unsigned char/g;
        s/\b(__)?u_?short\b/unsigned short/g;
        s/\b(__)?u_?int\b/unsigned int/g;
        s/\b(__)?u_?long\b/unsigned long/g;
        s/\b(__)?u_int8_t\b/uint8_t/g;
        s/\b(__)?u_int16_t\b/uint16_t/g;
        s/\b(__)?u_int32_t\b/uint32_t/g;
        s/\b(__)?u_int64_t\b/uint64_t/g;
        s/\b(__)?u_quad_t\b/uint64_t/g;
        s/\b(__)?quad_t\b/uint64_t/g;
    ' $(grep -lE -e '\<((__)?(quad_t|u(short|int|long|_(char|short|int([0-9]+_t)?|long|quad_t))))\>' \
        $(grep -LE '\<(_(SYS|BITS)_TYPES_H|rpc/(rpc|rpc_msg|types|xdr)\.h)\>' \
          $(find . \( -false $(sed 's/^/-o -name /' all-installed-headers) \
                   \) -printf '%P\n' | sort -u)))

where 'all-installed-headers' was a list of the basenames of all installed
header files, manually extracted from the Makefiles.  Non-installed
wrapper headers in include/ are also adjusted, for consistency.
I then manually fixed up indentation and line-wrapping.

sys/types.h and bits/types.h are excluded because they must continue
to define the u_* types (under __USE_MISC) for compatibility with
applications.  They do not use these types themselves.

All headers that (transitively) include rpc/types.h are also excluded,
for three reasons.  First, the u_* types are defined by rpc/types.h,
unconditionally (not just under __USE_MISC) so they are logically part
of the SunRPC API.  Second, many of those headers appear to be
machine-generated.  Third, it's my understanding that we are getting
rid of as much of SunRPC as possible in the near future.

(The one file under sunrpc/ that's touched, sunrpc/rpc/rpc_des.h, does
*not* include rpc/types.h.  This may itself be a bug.)

After changing from u_intNN_t to uintNN_t, a number of headers now
need to include stdint.h to pick up those types.  It might be more
hygenic, namespace-wise, to use __uintNN_t instead, but none of these
headers are bound by ISO or POSIX to do so, and it's unlikely that
anyone using them will be bothered.  (The two files that were using
__-prefixed versions of the u_types, sysdeps/mach/hurd/net/route.h and
sysdeps/unix/sysv/linux/net/route.h, both already also contained uses of
the unprefixed versions.)

Some of these files directly included features.h and/or sys/cdefs.h,
which I removed, as the style generally seems to be to let sys/types.h
do that for us.  (This does not change the set of definitions exposed
by any header; sys/types.h unconditionally includes both features.h
and sys/cdefs.h.)

One file included asm/types.h unnecessarily.

	* bits/in.h, gmon/sys/gmon.h, inet/netinet/igmp.h
	* inet/protocols/routed.h, inet/protocols/talkd.h
	* inet/protocols/timed.h, io/fts.h, nptl_db/thread_db.h
	* resolv/arpa/nameser.h, resolv/resolv.h, sunrpc/rpc/rpc_des.h
	* sysdeps/generic/netinet/if_ether.h
	* sysdeps/generic/netinet/in_systm.h
	* sysdeps/generic/netinet/ip.h, sysdeps/generic/netinet/tcp.h
	* sysdeps/gnu/netinet/ip_icmp.h, sysdeps/gnu/netinet/tcp.h
	* sysdeps/gnu/netinet/udp.h, sysdeps/mach/hurd/net/ethernet.h
	* sysdeps/mach/hurd/net/if_arp.h
	* sysdeps/mach/hurd/net/if_ppp.h
	* sysdeps/mach/hurd/net/route.h, sysdeps/mach/sys/reboot.h
	* sysdeps/unix/sysv/linux/bits/in.h
	* sysdeps/unix/sysv/linux/net/ethernet.h
	* sysdeps/unix/sysv/linux/net/if_arp.h
	* sysdeps/unix/sysv/linux/net/if_ppp.h
	* sysdeps/unix/sysv/linux/net/if_shaper.h
	* sysdeps/unix/sysv/linux/net/route.h
	* sysdeps/unix/sysv/linux/netinet/if_ether.h
	* sysdeps/unix/sysv/linux/netinet/if_fddi.h
	* sysdeps/unix/sysv/linux/netinet/if_tr.h
	* sysdeps/unix/sysv/linux/netipx/ipx.h
	* sysdeps/unix/sysv/linux/sys/acct.h
	* include/arpa/nameser.h, include/resolv.h:
	Change all uses of u_char to unsigned char,
	u_short and ushort to unsigned short, u_int and uint to unsigned int,
	u_long and ulong to unsigned long, u_int8_t to uint8_t,
        u_int16_t to uint16_t, u_int32_t to uint32_t, quad_t to int64_t,
	and u_int64_t and u_quad_t to uint64_t.

	* mach/sys/reboot.h: Remove two casts of integer literals
	to the types they already have.

	* bits/in.h: Correct error in description of IP_MULTICAST_LOOP.
	* sysdeps/unix/sysv/linux/bits/in.h: Likewise.
	* sysdeps/unix/sysv/linux/netinet/if_ether.h: Change a comment
	from referring to 'unsigned char' to 'uint8_t' for consistency with
	the macro definition below.

	* gmon/sys/gmon.h, inet/netinet/igmp.h, inet/protocols/talkd.h
	* io/fts.h, resolv/arpa/nameser.h, resolv/resolv.h
	* sunrpc/rpc/rpc_des.h, sysdeps/generic/netinet/ip.h
	* sysdeps/gnu/netinet/tcp.h, sysdeps/gnu/netinet/udp.h
	* sysdeps/mach/hurd/net/if_ppp.h, sysdeps/unix/sysv/linux/net/if_ppp.h
	* sysdeps/unix/sysv/linux/sys/acct.h
	* include/arpa/nameser.h, include/resolv.h:
	Fix indentation disrupted by mechanical edits.

	* inet/protocols/talkd.h, resolv/arpa/nameser.h
	* sysdeps/generic/netinet/in_systm.h
	* sysdeps/gnu/netinet/ip_icmp.h, sysdeps/gnu/netinet/tcp.h
	* sysdeps/gnu/netinet/udp.h
	* sysdeps/unix/sysv/linux/net/ethernet.h
	* sysdeps/unix/sysv/linux/net/if_arp.h
	* sysdeps/unix/sysv/linux/net/if_ppp.h
	* sysdeps/unix/sysv/linux/net/if_shaper.h
	* sysdeps/unix/sysv/linux/netinet/if_fddi.h
	* sysdeps/unix/sysv/linux/netinet/if_tr.h
	* sysdeps/unix/sysv/linux/netipx/ipx.h
	* sysdeps/unix/sysv/linux/sys/acct.h
	Include stdint.h for uintNN_t definitions.
	Don't include sys/cdefs.h, features.h, or asm/types.h directly.
Diffstat (limited to 'sysdeps/gnu/netinet/tcp.h')
-rw-r--r--sysdeps/gnu/netinet/tcp.h167
1 files changed, 84 insertions, 83 deletions
diff --git a/sysdeps/gnu/netinet/tcp.h b/sysdeps/gnu/netinet/tcp.h
index 3918bcac4f..3fbea54daf 100644
--- a/sysdeps/gnu/netinet/tcp.h
+++ b/sysdeps/gnu/netinet/tcp.h
@@ -73,8 +73,9 @@
 #ifdef __USE_MISC
 # include <sys/types.h>
 # include <sys/socket.h>
+# include <stdint.h>
 
-typedef	u_int32_t tcp_seq;
+typedef	uint32_t tcp_seq;
 /*
  * TCP header.
  * Per RFC 793, September, 1981.
@@ -85,61 +86,61 @@ struct tcphdr
     {
       struct
       {
-	u_int16_t th_sport;		/* source port */
-	u_int16_t th_dport;		/* destination port */
+	uint16_t th_sport;	/* source port */
+	uint16_t th_dport;	/* destination port */
 	tcp_seq th_seq;		/* sequence number */
 	tcp_seq th_ack;		/* acknowledgement number */
 # if __BYTE_ORDER == __LITTLE_ENDIAN
-	u_int8_t th_x2:4;		/* (unused) */
-	u_int8_t th_off:4;		/* data offset */
+	uint8_t th_x2:4;	/* (unused) */
+	uint8_t th_off:4;	/* data offset */
 # endif
 # if __BYTE_ORDER == __BIG_ENDIAN
-	u_int8_t th_off:4;		/* data offset */
-	u_int8_t th_x2:4;		/* (unused) */
+	uint8_t th_off:4;	/* data offset */
+	uint8_t th_x2:4;	/* (unused) */
 # endif
-	u_int8_t th_flags;
+	uint8_t th_flags;
 # define TH_FIN	0x01
 # define TH_SYN	0x02
 # define TH_RST	0x04
 # define TH_PUSH	0x08
 # define TH_ACK	0x10
 # define TH_URG	0x20
-	u_int16_t th_win;		/* window */
-	u_int16_t th_sum;		/* checksum */
-	u_int16_t th_urp;		/* urgent pointer */
+	uint16_t th_win;	/* window */
+	uint16_t th_sum;	/* checksum */
+	uint16_t th_urp;	/* urgent pointer */
       };
       struct
       {
-	u_int16_t source;
-	u_int16_t dest;
-	u_int32_t seq;
-	u_int32_t ack_seq;
+	uint16_t source;
+	uint16_t dest;
+	uint32_t seq;
+	uint32_t ack_seq;
 # if __BYTE_ORDER == __LITTLE_ENDIAN
-	u_int16_t res1:4;
-	u_int16_t doff:4;
-	u_int16_t fin:1;
-	u_int16_t syn:1;
-	u_int16_t rst:1;
-	u_int16_t psh:1;
-	u_int16_t ack:1;
-	u_int16_t urg:1;
-	u_int16_t res2:2;
+	uint16_t res1:4;
+	uint16_t doff:4;
+	uint16_t fin:1;
+	uint16_t syn:1;
+	uint16_t rst:1;
+	uint16_t psh:1;
+	uint16_t ack:1;
+	uint16_t urg:1;
+	uint16_t res2:2;
 # elif __BYTE_ORDER == __BIG_ENDIAN
-	u_int16_t doff:4;
-	u_int16_t res1:4;
-	u_int16_t res2:2;
-	u_int16_t urg:1;
-	u_int16_t ack:1;
-	u_int16_t psh:1;
-	u_int16_t rst:1;
-	u_int16_t syn:1;
-	u_int16_t fin:1;
+	uint16_t doff:4;
+	uint16_t res1:4;
+	uint16_t res2:2;
+	uint16_t urg:1;
+	uint16_t ack:1;
+	uint16_t psh:1;
+	uint16_t rst:1;
+	uint16_t syn:1;
+	uint16_t fin:1;
 # else
 #  error "Adjust your <bits/endian.h> defines"
 # endif
-	u_int16_t window;
-	u_int16_t check;
-	u_int16_t urg_ptr;
+	uint16_t window;
+	uint16_t check;
+	uint16_t urg_ptr;
       };
     };
 };
@@ -209,45 +210,45 @@ enum tcp_ca_state
 
 struct tcp_info
 {
-  u_int8_t	tcpi_state;
-  u_int8_t	tcpi_ca_state;
-  u_int8_t	tcpi_retransmits;
-  u_int8_t	tcpi_probes;
-  u_int8_t	tcpi_backoff;
-  u_int8_t	tcpi_options;
-  u_int8_t	tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
-
-  u_int32_t	tcpi_rto;
-  u_int32_t	tcpi_ato;
-  u_int32_t	tcpi_snd_mss;
-  u_int32_t	tcpi_rcv_mss;
-
-  u_int32_t	tcpi_unacked;
-  u_int32_t	tcpi_sacked;
-  u_int32_t	tcpi_lost;
-  u_int32_t	tcpi_retrans;
-  u_int32_t	tcpi_fackets;
+  uint8_t	tcpi_state;
+  uint8_t	tcpi_ca_state;
+  uint8_t	tcpi_retransmits;
+  uint8_t	tcpi_probes;
+  uint8_t	tcpi_backoff;
+  uint8_t	tcpi_options;
+  uint8_t	tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
+
+  uint32_t	tcpi_rto;
+  uint32_t	tcpi_ato;
+  uint32_t	tcpi_snd_mss;
+  uint32_t	tcpi_rcv_mss;
+
+  uint32_t	tcpi_unacked;
+  uint32_t	tcpi_sacked;
+  uint32_t	tcpi_lost;
+  uint32_t	tcpi_retrans;
+  uint32_t	tcpi_fackets;
 
   /* Times. */
-  u_int32_t	tcpi_last_data_sent;
-  u_int32_t	tcpi_last_ack_sent;	/* Not remembered, sorry.  */
-  u_int32_t	tcpi_last_data_recv;
-  u_int32_t	tcpi_last_ack_recv;
+  uint32_t	tcpi_last_data_sent;
+  uint32_t	tcpi_last_ack_sent;	/* Not remembered, sorry.  */
+  uint32_t	tcpi_last_data_recv;
+  uint32_t	tcpi_last_ack_recv;
 
   /* Metrics. */
-  u_int32_t	tcpi_pmtu;
-  u_int32_t	tcpi_rcv_ssthresh;
-  u_int32_t	tcpi_rtt;
-  u_int32_t	tcpi_rttvar;
-  u_int32_t	tcpi_snd_ssthresh;
-  u_int32_t	tcpi_snd_cwnd;
-  u_int32_t	tcpi_advmss;
-  u_int32_t	tcpi_reordering;
-
-  u_int32_t	tcpi_rcv_rtt;
-  u_int32_t	tcpi_rcv_space;
-
-  u_int32_t	tcpi_total_retrans;
+  uint32_t	tcpi_pmtu;
+  uint32_t	tcpi_rcv_ssthresh;
+  uint32_t	tcpi_rtt;
+  uint32_t	tcpi_rttvar;
+  uint32_t	tcpi_snd_ssthresh;
+  uint32_t	tcpi_snd_cwnd;
+  uint32_t	tcpi_advmss;
+  uint32_t	tcpi_reordering;
+
+  uint32_t	tcpi_rcv_rtt;
+  uint32_t	tcpi_rcv_space;
+
+  uint32_t	tcpi_total_retrans;
 };
 
 
@@ -257,17 +258,17 @@ struct tcp_info
 struct tcp_md5sig
 {
   struct sockaddr_storage tcpm_addr;		/* Address associated.  */
-  u_int16_t	__tcpm_pad1;			/* Zero.  */
-  u_int16_t	tcpm_keylen;			/* Key length.  */
-  u_int32_t	__tcpm_pad2;			/* Zero.  */
-  u_int8_t	tcpm_key[TCP_MD5SIG_MAXKEYLEN];	/* Key (binary).  */
+  uint16_t	__tcpm_pad1;			/* Zero.  */
+  uint16_t	tcpm_keylen;			/* Key length.  */
+  uint32_t	__tcpm_pad2;			/* Zero.  */
+  uint8_t	tcpm_key[TCP_MD5SIG_MAXKEYLEN];	/* Key (binary).  */
 };
 
 /* For socket repair options.  */
 struct tcp_repair_opt
 {
-  u_int32_t	opt_code;
-  u_int32_t	opt_val;
+  uint32_t	opt_code;
+  uint32_t	opt_val;
 };
 
 /* Queue to repair, for TCP_REPAIR_QUEUE.  */
@@ -298,12 +299,12 @@ enum
 
 struct tcp_cookie_transactions
 {
-  u_int16_t	tcpct_flags;
-  u_int8_t	__tcpct_pad1;
-  u_int8_t	tcpct_cookie_desired;
-  u_int16_t	tcpct_s_data_desired;
-  u_int16_t	tcpct_used;
-  u_int8_t	tcpct_value[TCP_MSS_DEFAULT];
+  uint16_t	tcpct_flags;
+  uint8_t	__tcpct_pad1;
+  uint8_t	tcpct_cookie_desired;
+  uint16_t	tcpct_s_data_desired;
+  uint16_t	tcpct_used;
+  uint8_t	tcpct_value[TCP_MSS_DEFAULT];
 };
 
 #endif /* Misc.  */