public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] Coordinate if.h definitions for Linux and glibc (BZ #21367)
@ 2017-04-09 20:08 Aurelien Jarno
  2017-04-09 20:23 ` Dmitry V. Levin
  0 siblings, 1 reply; 2+ messages in thread
From: Aurelien Jarno @ 2017-04-09 20:08 UTC (permalink / raw)
  To: libc-alpha; +Cc: Aurelien Jarno

This commit coordinates the definition of structures and enum already
defined the Linux kernel UAPI headers, following the procedure described
on https://sourceware.org/glibc/wiki/Synchronizing_Headers.

With this change, it is safe to include <net/if.h> and <linux/if.h> in
any order in a a userspace application.

Note: this as been fixed in commit 4a91cb61bb995 on the Linux side.

Changelog:
	[BZ #21367]
	* sysdeps/gnu/net/if.h: wrap IFF_* enums in
	! __UAPI_DEF_IF_NET_DEVICE_FLAGS defines.
	(struct ifmap): Wrap in !__UAPI_DEF_IF_IFMAP defines.
	(struct ifreq): Wrap in !__UAPI_DEF_IF_IFREQ defines.
	(struct ifconf): Wrap in !__UAPI_DEF_IF_IFCONF defines.
---
 ChangeLog            | 9 +++++++++
 sysdeps/gnu/net/if.h | 9 +++++++++
 2 files changed, 18 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index b72d52164e..7a150cf048 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2017-04-09 Aurelien Jarno  <aurelien@aurel32.net>
+
+	[BZ #21367]
+	* sysdeps/gnu/net/if.h: wrap IFF_* enums in
+	! __UAPI_DEF_IF_NET_DEVICE_FLAGS defines.
+	(struct ifmap): Wrap in !__UAPI_DEF_IF_IFMAP defines.
+	(struct ifreq): Wrap in !__UAPI_DEF_IF_IFREQ defines.
+	(struct ifconf): Wrap in !__UAPI_DEF_IF_IFCONF defines.
+
 2017-04-07  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* sysdeps/i386/fpu/fclrexcpt.c (__feclearexcept): Use
diff --git a/sysdeps/gnu/net/if.h b/sysdeps/gnu/net/if.h
index 0afce08238..19d41d3d3a 100644
--- a/sysdeps/gnu/net/if.h
+++ b/sysdeps/gnu/net/if.h
@@ -39,6 +39,7 @@ struct if_nameindex
 
 #ifdef __USE_MISC
 /* Standard interface flags. */
+#if !__UAPI_DEF_IF_NET_DEVICE_FLAGS
 enum
   {
     IFF_UP = 0x1,		/* Interface is up.  */
@@ -79,6 +80,7 @@ enum
     IFF_DYNAMIC = 0x8000	/* Dialup device with changing addresses.  */
 # define IFF_DYNAMIC	IFF_DYNAMIC
   };
+#endif /* !__UAPI_DEF_IF_NET_DEVICE_FLAGS */
 
 /* The ifaddr structure contains information about one address of an
    interface.  They are maintained by the different address families,
@@ -108,6 +110,7 @@ struct ifaddr
    handy for debugging things. The set side is fine for now and being
    very small might be worth keeping for clean configuration.  */
 
+#if !__UAPI_DEF_IF_IFMAP
 struct ifmap
   {
     unsigned long int mem_start;
@@ -118,11 +121,13 @@ struct ifmap
     unsigned char port;
     /* 3 bytes spare */
   };
+#endif /* !__UAPI_DEF_IF_IFMAP */
 
 /* Interface request structure used for socket ioctl's.  All interface
    ioctl's must have parameter definitions which begin with ifr_name.
    The remainder may be interface specific.  */
 
+#if !__UAPI_DEF_IF_IFREQ
 struct ifreq
   {
 # define IFHWADDRLEN	6
@@ -148,6 +153,8 @@ struct ifreq
 	__caddr_t ifru_data;
       } ifr_ifru;
   };
+#endif /* !__UAPI_DEF_IF_IFREQ */
+
 # define ifr_name	ifr_ifrn.ifrn_name	/* interface name 	*/
 # define ifr_hwaddr	ifr_ifru.ifru_hwaddr	/* MAC address 		*/
 # define ifr_addr	ifr_ifru.ifru_addr	/* address		*/
@@ -173,6 +180,7 @@ struct ifreq
    configuration for machine (useful for programs which must know all
    networks accessible).  */
 
+#if !__UAPI_DEF_IF_IFCONF
 struct ifconf
   {
     int	ifc_len;			/* Size of buffer.  */
@@ -182,6 +190,7 @@ struct ifconf
 	struct ifreq *ifcu_req;
       } ifc_ifcu;
   };
+#endif /* !__UAPI_DEF_IF_IFCONF */
 # define ifc_buf	ifc_ifcu.ifcu_buf	/* Buffer address.  */
 # define ifc_req	ifc_ifcu.ifcu_req	/* Array of structures.  */
 # define _IOT_ifconf _IOT(_IOTS(struct ifconf),1,0,0,0,0) /* not right */
-- 
2.11.0

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] Coordinate if.h definitions for Linux and glibc (BZ #21367)
  2017-04-09 20:08 [PATCH] Coordinate if.h definitions for Linux and glibc (BZ #21367) Aurelien Jarno
@ 2017-04-09 20:23 ` Dmitry V. Levin
  0 siblings, 0 replies; 2+ messages in thread
From: Dmitry V. Levin @ 2017-04-09 20:23 UTC (permalink / raw)
  To: libc-alpha

[-- Attachment #1: Type: text/plain, Size: 728 bytes --]

On Sun, Apr 09, 2017 at 10:08:31PM +0200, Aurelien Jarno wrote:
> This commit coordinates the definition of structures and enum already
> defined the Linux kernel UAPI headers, following the procedure described
> on https://sourceware.org/glibc/wiki/Synchronizing_Headers.

Sorry but the whole procedure looks wrong.  For example,

[...]
> --- a/sysdeps/gnu/net/if.h
> +++ b/sysdeps/gnu/net/if.h
> @@ -39,6 +39,7 @@ struct if_nameindex
>  
>  #ifdef __USE_MISC
>  /* Standard interface flags. */
> +#if !__UAPI_DEF_IF_NET_DEVICE_FLAGS

as of v4.11-rc6, __UAPI_DEF_IF_NET_DEVICE_FLAGS == 1 doesn't mean that
linux/if.h has been included, it only means that linux/libc-compat.h
has been included.


-- 
ldv

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-04-09 20:23 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-09 20:08 [PATCH] Coordinate if.h definitions for Linux and glibc (BZ #21367) Aurelien Jarno
2017-04-09 20:23 ` Dmitry V. Levin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).