From: David Lamparter Date: Wed, 20 May 2015 20:34:56 +0000 (+0200) Subject: lib: fix "sockunion: add hash function" for BSD (9196caf) X-Git-Tag: frr-2.0-rc1~1263 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=5c6ed111e5ef6e26b1ae8a42da07f4fce3e9567f;p=matthieu%2Ffrr.git lib: fix "sockunion: add hash function" for BSD (9196caf) The sockunion_hash() function uses s6_addr32, which is not defined on BSD systems. (It only works on glibc because we set _GNU_SOURCE) ripngd/ripng_nexthop.h already contains a workaround for this. Bump workaround to prefix.h so it's available everywhere. Reported-by: NetDEF CI System Fixes: 9196caf ("sockunion: add hash function") Cc: Timo Teräs Signed-off-by: David Lamparter --- diff --git a/lib/prefix.h b/lib/prefix.h index 30fdaed3cf..cc4bbe280d 100644 --- a/lib/prefix.h +++ b/lib/prefix.h @@ -156,6 +156,16 @@ union prefix46constptr /* Prefix's family member. */ #define PREFIX_FAMILY(p) ((p)->family) +/* glibc defines s6_addr32 to __in6_u.__u6_addr32 if __USE_{MISC || GNU} */ +#ifndef s6_addr32 +#if defined(SUNOS_5) +/* Some SunOS define s6_addr32 only to kernel */ +#define s6_addr32 _S6_un._S6_u32 +#else +#define s6_addr32 __u6_addr.__u6_addr32 +#endif /* SUNOS_5 */ +#endif /*s6_addr32*/ + /* Prototypes. */ extern int afi2family (afi_t); extern afi_t family2afi (int); diff --git a/ripngd/ripng_nexthop.h b/ripngd/ripng_nexthop.h index 7c04105924..19bd32b503 100644 --- a/ripngd/ripng_nexthop.h +++ b/ripngd/ripng_nexthop.h @@ -41,17 +41,8 @@ extern void ripng_rte_send(struct list *ripng_rte_list, struct interface *ifp, * -1 if A < B **/ static inline int -addr6_cmp(struct in6_addr *A, struct in6_addr *B) { - -#ifndef s6_addr32 -#if defined(SUNOS_5) -/* Some SunOS define s6_addr32 only to kernel */ -#define s6_addr32 _S6_un._S6_u32 -#else -#define s6_addr32 __u6_addr.__u6_addr32 -#endif /* SUNOS_5 */ -#endif /*s6_addr32*/ - +addr6_cmp(struct in6_addr *A, struct in6_addr *B) +{ #define a(i) A->s6_addr32[i] #define b(i) B->s6_addr32[i]