ipv6: fix redefinition of in6_pktinfo and ip6_mtuinfo
authorWANG Cong <xiyou.wangcong@gmail.com>
Tue, 6 Jan 2015 23:45:31 +0000 (15:45 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 9 Jan 2015 03:29:11 +0000 (19:29 -0800)
Both netinet/in.h and linux/ipv6.h define these two structs,
if we include both of them, we got:

/usr/include/linux/ipv6.h:19:8: error: redefinition of ‘struct in6_pktinfo’
 struct in6_pktinfo {
^
In file included from /usr/include/arpa/inet.h:22:0,
 from txtimestamp.c:33:
/usr/include/netinet/in.h:524:8: note: originally defined here
 struct in6_pktinfo
^
In file included from txtimestamp.c:40:0:
/usr/include/linux/ipv6.h:24:8: error: redefinition of ‘struct ip6_mtuinfo’
 struct ip6_mtuinfo {
^
In file included from /usr/include/arpa/inet.h:22:0,
 from txtimestamp.c:33:
/usr/include/netinet/in.h:531:8: note: originally defined here
 struct ip6_mtuinfo
^
So similarly to what we did for in6_addr, we need to sync with
libc header on their definitions.

Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/uapi/linux/ipv6.h
include/uapi/linux/libc-compat.h

index e863d088b9a5a54cfd18d1e507c6c6e758ba5516..b9b1b7d1c8395ecf15bba7fe48ba7b69449686f6 100644 (file)
  *     *under construction*
  */
 
-
+#if __UAPI_DEF_IN6_PKTINFO
 struct in6_pktinfo {
        struct in6_addr ipi6_addr;
        int             ipi6_ifindex;
 };
+#endif
 
+#if __UAPI_DEF_IP6_MTUINFO
 struct ip6_mtuinfo {
        struct sockaddr_in6     ip6m_addr;
        __u32                   ip6m_mtu;
 };
+#endif
 
 struct in6_ifreq {
        struct in6_addr ifr6_addr;
index e28807ad17fa8dffb69879e1c0eaf23bf8971f88..fa673e9cc040aefcee4e96ee3e4bd6892c5be562 100644 (file)
@@ -70,6 +70,8 @@
 #define __UAPI_DEF_IPV6_MREQ           0
 #define __UAPI_DEF_IPPROTO_V6          0
 #define __UAPI_DEF_IPV6_OPTIONS                0
+#define __UAPI_DEF_IN6_PKTINFO         0
+#define __UAPI_DEF_IP6_MTUINFO         0
 
 #else
 
@@ -84,6 +86,8 @@
 #define __UAPI_DEF_IPV6_MREQ           1
 #define __UAPI_DEF_IPPROTO_V6          1
 #define __UAPI_DEF_IPV6_OPTIONS                1
+#define __UAPI_DEF_IN6_PKTINFO         1
+#define __UAPI_DEF_IP6_MTUINFO         1
 
 #endif /* _NETINET_IN_H */
 
 #define __UAPI_DEF_IPV6_MREQ           1
 #define __UAPI_DEF_IPPROTO_V6          1
 #define __UAPI_DEF_IPV6_OPTIONS                1
+#define __UAPI_DEF_IN6_PKTINFO         1
+#define __UAPI_DEF_IP6_MTUINFO         1
 
 /* Definitions for xattr.h */
 #define __UAPI_DEF_XATTR               1