[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#705630: marked as done (libc6-dev: Defines missing for TCP options)



Your message dated Wed, 8 May 2013 17:32:42 +0200
with message-id <20130508153242.GC22305@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 owner@bugs.debian.org
immediately.)


-- 
705630: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=705630
Debian Bug Tracking System
Contact owner@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
aurelien@aurel32.net                 http://www.aurel32.net

--- End Message ---

Reply to: