Your message dated Wed, 8 May 2013 17:32:42 +0200
with message-id <20130508153242.gc22...@hall.aurel32.net>
and subject line Re: Bug#705630: libc6-dev: Defines missing for TCP options
has caused the Debian Bug report #705630,
regarding libc6-dev: Defines missing for TCP options
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)
--
705630: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=705630
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: libc6-dev
Version: 2.13-38
Severity: wishlist
Tags: upstream patch
(submitting this on behalf of the CC target, since it blocks his email?)
Though supported in the default kernel, the defines for the TCP_THIN* and
several
other fully supported TCP socket options are missing from tcp.h. This makes it
very hard to build applications that utilize these features.
I have backported the relevant patch from upstream eglibc and included it below.
diff -urB eglibc-2.13.orig/sysdeps/gnu/netinet/tcp.h
eglibc-2.13/sysdeps/gnu/netinet/tcp.h
--- eglibc-2.13.orig/sysdeps/gnu/netinet/tcp.h 2007-10-15 16:14:17.000000000
-0400
+++ eglibc-2.13/sysdeps/gnu/netinet/tcp.h 2013-04-16 15:10:29.000000000
-0400
@@ -37,20 +37,24 @@
/*
* User-settable options (used with setsockopt).
*/
-#define TCP_NODELAY 1 /* Don't delay send to coalesce packets
*/
-#define TCP_MAXSEG 2 /* Set maximum segment size */
-#define TCP_CORK 3 /* Control sending of partial frames */
-#define TCP_KEEPIDLE 4 /* Start keeplives after this period */
-#define TCP_KEEPINTVL 5 /* Interval between keepalives */
-#define TCP_KEEPCNT 6 /* Number of keepalives before death */
-#define TCP_SYNCNT 7 /* Number of SYN retransmits */
-#define TCP_LINGER2 8 /* Life time of orphaned FIN-WAIT-2 state */
-#define TCP_DEFER_ACCEPT 9 /* Wake up listener only when data arrive */
-#define TCP_WINDOW_CLAMP 10 /* Bound advertised window */
-#define TCP_INFO 11 /* Information about this connection. */
-#define TCP_QUICKACK 12 /* Bock/reenable quick ACKs. */
-#define TCP_CONGESTION 13 /* Congestion control algorithm. */
-#define TCP_MD5SIG 14 /* TCP MD5 Signature (RFC2385) */
+#define TCP_NODELAY 1 /* Don't delay send to coalesce
packets */
+#define TCP_MAXSEG 2 /* Set maximum segment size */
+#define TCP_CORK 3 /* Control sending of partial frames */
+#define TCP_KEEPIDLE 4 /* Start keeplives after this period */
+#define TCP_KEEPINTVL 5 /* Interval between keepalives */
+#define TCP_KEEPCNT 6 /* Number of keepalives before death */
+#define TCP_SYNCNT 7 /* Number of SYN retransmits */
+#define TCP_LINGER2 8 /* Life time of orphaned FIN-WAIT-2 state */
+#define TCP_DEFER_ACCEPT 9 /* Wake up listener only when data arrive */
+#define TCP_WINDOW_CLAMP 10 /* Bound advertised window */
+#define TCP_INFO 11 /* Information about this connection. */
+#define TCP_QUICKACK 12 /* Bock/reenable quick ACKs. */
+#define TCP_CONGESTION 13 /* Congestion control algorithm. */
+#define TCP_MD5SIG 14 /* TCP MD5 Signature (RFC2385) */
+#define TCP_COOKIE_TRANSACTIONS 15 /* TCP Cookie Transactions */
+#define TCP_THIN_LINEAR_TIMEOUTS 16 /* Use linear timeouts for thin streams*/
+#define TCP_THIN_DUPACK 17 /* Fast retrans. after 1 dupack */
+#define TCP_USER_TIMEOUT 18 /* How long for loss retry before timeout */
#ifdef __USE_MISC
# include <sys/types.h>
@@ -173,7 +177,8 @@
# define TCPI_OPT_TIMESTAMPS 1
# define TCPI_OPT_SACK 2
# define TCPI_OPT_WSCALE 4
-# define TCPI_OPT_ECN 8
+# define TCPI_OPT_ECN 8 /* ECN was negociated at TCP session init */
+# define TCPI_OPT_ECN_SEEN 16 /* we received at least one packet with ECT
*/
/* Values for tcpi_state. */
enum tcp_ca_state
@@ -241,6 +246,33 @@
u_int8_t tcpm_key[TCP_MD5SIG_MAXKEYLEN]; /* Key (binary). */
};
+/* For cookie transactions socket options. */
+#define TCP_COOKIE_MIN 8 /* 64-bits */
+#define TCP_COOKIE_MAX 16 /* 128-bits */
+#define TCP_COOKIE_PAIR_SIZE (2*TCP_COOKIE_MAX)
+
+/* Flags for both getsockopt and setsockopt */
+#define TCP_COOKIE_IN_ALWAYS (1 << 0) /* Discard SYN without cookie */
+#define TCP_COOKIE_OUT_NEVER (1 << 1) /* Prohibit outgoing cookies,
+ * supercedes everything. */
+
+/* Flags for getsockopt */
+#define TCP_S_DATA_IN (1 << 2) /* Was data received? */
+#define TCP_S_DATA_OUT (1 << 3) /* Was data sent? */
+
+#define TCP_MSS_DEFAULT 536U /* IPv4 (RFC1122, RFC2581) */
+#define TCP_MSS_DESIRED 1220U /* IPv6 (tunneled), EDNS0
(RFC3226) */
+
+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];
+};
+
#endif /* Misc. */
#endif /* netinet/tcp.h */
--- End Message ---
--- Begin Message ---
Version 2.17-1
On Wed, Apr 17, 2013 at 11:15:48AM -0700, Ben Longbons wrote:
> Package: libc6-dev
> Version: 2.13-38
> Severity: wishlist
> Tags: upstream patch
>
> (submitting this on behalf of the CC target, since it blocks his email?)
>
> Though supported in the default kernel, the defines for the TCP_THIN* and
> several
> other fully supported TCP socket options are missing from tcp.h. This makes it
> very hard to build applications that utilize these features.
>
> I have backported the relevant patch from upstream eglibc and included it
> below.
>
> diff -urB eglibc-2.13.orig/sysdeps/gnu/netinet/tcp.h
> eglibc-2.13/sysdeps/gnu/netinet/tcp.h
> --- eglibc-2.13.orig/sysdeps/gnu/netinet/tcp.h 2007-10-15 16:14:17.000000000
> -0400
> +++ eglibc-2.13/sysdeps/gnu/netinet/tcp.h 2013-04-16 15:10:29.000000000
> -0400
> @@ -37,20 +37,24 @@
> /*
> * User-settable options (used with setsockopt).
> */
> -#define TCP_NODELAY 1 /* Don't delay send to coalesce
> packets */
> -#define TCP_MAXSEG 2 /* Set maximum segment size */
> -#define TCP_CORK 3 /* Control sending of partial frames */
> -#define TCP_KEEPIDLE 4 /* Start keeplives after this period */
> -#define TCP_KEEPINTVL 5 /* Interval between keepalives */
> -#define TCP_KEEPCNT 6 /* Number of keepalives before death */
> -#define TCP_SYNCNT 7 /* Number of SYN retransmits */
> -#define TCP_LINGER2 8 /* Life time of orphaned FIN-WAIT-2 state */
> -#define TCP_DEFER_ACCEPT 9 /* Wake up listener only when data arrive */
> -#define TCP_WINDOW_CLAMP 10 /* Bound advertised window */
> -#define TCP_INFO 11 /* Information about this connection. */
> -#define TCP_QUICKACK 12 /* Bock/reenable quick ACKs. */
> -#define TCP_CONGESTION 13 /* Congestion control algorithm. */
> -#define TCP_MD5SIG 14 /* TCP MD5 Signature (RFC2385) */
> +#define TCP_NODELAY 1 /* Don't delay send to coalesce
> packets */
> +#define TCP_MAXSEG 2 /* Set maximum segment size */
> +#define TCP_CORK 3 /* Control sending of partial frames */
> +#define TCP_KEEPIDLE 4 /* Start keeplives after this period */
> +#define TCP_KEEPINTVL 5 /* Interval between keepalives */
> +#define TCP_KEEPCNT 6 /* Number of keepalives before death */
> +#define TCP_SYNCNT 7 /* Number of SYN retransmits */
> +#define TCP_LINGER2 8 /* Life time of orphaned FIN-WAIT-2 state
> */
> +#define TCP_DEFER_ACCEPT 9 /* Wake up listener only when data arrive
> */
> +#define TCP_WINDOW_CLAMP 10 /* Bound advertised window */
> +#define TCP_INFO 11 /* Information about this connection. */
> +#define TCP_QUICKACK 12 /* Bock/reenable quick ACKs. */
> +#define TCP_CONGESTION 13 /* Congestion control algorithm. */
> +#define TCP_MD5SIG 14 /* TCP MD5 Signature (RFC2385) */
> +#define TCP_COOKIE_TRANSACTIONS 15 /* TCP Cookie Transactions */
> +#define TCP_THIN_LINEAR_TIMEOUTS 16 /* Use linear timeouts for thin streams*/
> +#define TCP_THIN_DUPACK 17 /* Fast retrans. after 1 dupack */
> +#define TCP_USER_TIMEOUT 18 /* How long for loss retry before timeout
> */
>
> #ifdef __USE_MISC
> # include <sys/types.h>
> @@ -173,7 +177,8 @@
> # define TCPI_OPT_TIMESTAMPS 1
> # define TCPI_OPT_SACK 2
> # define TCPI_OPT_WSCALE 4
> -# define TCPI_OPT_ECN 8
> +# define TCPI_OPT_ECN 8 /* ECN was negociated at TCP session init
> */
> +# define TCPI_OPT_ECN_SEEN 16 /* we received at least one packet with
> ECT */
>
> /* Values for tcpi_state. */
> enum tcp_ca_state
> @@ -241,6 +246,33 @@
> u_int8_t tcpm_key[TCP_MD5SIG_MAXKEYLEN]; /* Key (binary). */
> };
>
> +/* For cookie transactions socket options. */
> +#define TCP_COOKIE_MIN 8 /* 64-bits */
> +#define TCP_COOKIE_MAX 16 /* 128-bits */
> +#define TCP_COOKIE_PAIR_SIZE (2*TCP_COOKIE_MAX)
> +
> +/* Flags for both getsockopt and setsockopt */
> +#define TCP_COOKIE_IN_ALWAYS (1 << 0) /* Discard SYN without cookie
> */
> +#define TCP_COOKIE_OUT_NEVER (1 << 1) /* Prohibit outgoing cookies,
> + * supercedes everything. */
> +
> +/* Flags for getsockopt */
> +#define TCP_S_DATA_IN (1 << 2) /* Was data received? */
> +#define TCP_S_DATA_OUT (1 << 3) /* Was data sent? */
> +
> +#define TCP_MSS_DEFAULT 536U /* IPv4 (RFC1122, RFC2581) */
> +#define TCP_MSS_DESIRED 1220U /* IPv6 (tunneled), EDNS0
> (RFC3226) */
> +
> +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];
> +};
> +
> #endif /* Misc. */
>
> #endif /* netinet/tcp.h */
>
This has been fixed in libc6-dev version 2.17-1
--
Aurelien Jarno GPG: 1024D/F1BCDB73
aurel...@aurel32.net http://www.aurel32.net
--- End Message ---