Add more IPV6_* macros to sysdeps/unix/sysv/linux/bits/in.h

Message ID alpine.DEB.2.20.1702212319300.13743@digraph.polyomino.org.uk
State Committed
Headers

Commit Message

Joseph Myers Feb. 21, 2017, 11:19 p.m. UTC
  Linux 4.10 adds IPV6_RECVFRAGSIZE to include/uapi/linux/in6.h, which
shows that several such IPV6_* macros are missing from glibc's
sysdeps/unix/sysv/linux/bits/in.h (while older ones are present).  I
don't know whether any of these might be deliberately omitted, but
this patch adds what appear to be the missing more recent macros to
glibc.

Tested for x86_64.

2017-02-21  Joseph Myers  <joseph@codesourcery.com>

	* sysdeps/unix/sysv/linux/bits/in.h (IPV6_AUTOFLOWLABEL): New
	macro.
	(IPV6_ADDR_PREFERENCES): Likewise.
	(IPV6_MINHOPCOUNT): Likewise.
	(IPV6_ORIGDSTADDR): Likewise.
	(IPV6_RECVORIGDSTADDR): Likewise.
	(IPV6_TRANSPARENT): Likewise.
	(IPV6_UNICAST_IF): Likewise.
	(IPV6_RECVFRAGSIZE): Likewise.
  

Comments

Joseph Myers March 10, 2017, 6:13 p.m. UTC | #1
Ping.  This patch 
<https://sourceware.org/ml/libc-alpha/2017-02/msg00397.html> is pending 
review.
  
Phil Blundell March 10, 2017, 8:57 p.m. UTC | #2
On Tue, 2017-02-21 at 23:19 +0000, Joseph Myers wrote:
> +#define IPV6_AUTOFLOWLABEL	70
> +
> +/* RFC5014.  */
> +#define IPV6_ADDR_PREFERENCES	72
> +
> +/* RFC5082.  */
> +#define IPV6_MINHOPCOUNT	73
> +
> +#define IPV6_ORIGDSTADDR	74
> +#define IPV6_RECVORIGDSTADDR	IPV6_ORIGDSTADDR
> +#define IPV6_TRANSPARENT	75
> +#define IPV6_UNICAST_IF		76
> +#define IPV6_RECVFRAGSIZE	77
> +
>  /* Obsolete synonyms for the above.  */
> 

I don't know of any particular reason for these to be omitted. 

I'm not sure that IPV6_AUTOFLOWLABEL ever progressed beyond the status
of an Internet-Draft (back in 2001-ish) but the kernel does implement
it and it seems reasonable for glibc to expose that.

IPV6_ORIGDSTADDR etc are for the transparent proxy API which I think is
Linux specific.

IPV6_UNICAST_IF was apparently added for the Wine project and
presumably is also Linux specific.

All of these seem like fairly fringe interests, which probably explains
why nobody has missed them in the five years or so that the kernel has
had these options and glibc hasn't, but I think we should probably go
ahead and add them.  For what that's worth.

p.
  

Patch

diff --git a/sysdeps/unix/sysv/linux/bits/in.h b/sysdeps/unix/sysv/linux/bits/in.h
index cd7fd31..377732b 100644
--- a/sysdeps/unix/sysv/linux/bits/in.h
+++ b/sysdeps/unix/sysv/linux/bits/in.h
@@ -215,6 +215,20 @@  struct in_pktinfo
 #define IPV6_RECVTCLASS		66
 #define IPV6_TCLASS		67
 
+#define IPV6_AUTOFLOWLABEL	70
+
+/* RFC5014.  */
+#define IPV6_ADDR_PREFERENCES	72
+
+/* RFC5082.  */
+#define IPV6_MINHOPCOUNT	73
+
+#define IPV6_ORIGDSTADDR	74
+#define IPV6_RECVORIGDSTADDR	IPV6_ORIGDSTADDR
+#define IPV6_TRANSPARENT	75
+#define IPV6_UNICAST_IF		76
+#define IPV6_RECVFRAGSIZE	77
+
 /* Obsolete synonyms for the above.  */
 #if !__USE_KERNEL_IPV6_DEFS
 # define IPV6_ADD_MEMBERSHIP	IPV6_JOIN_GROUP