David - Would it be better to have the #define's created as part of the configure run at build start? That way when *bsd changes it's mind we won't have to pull any code from nexthop.h.
thanks! donald On Wed, May 20, 2015 at 1:47 PM, David Lamparter < [email protected]> wrote: > 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 <[email protected]> > Fixes: 9196caf ("sockunion: add hash function") > Cc: Timo Teräs <[email protected]> > Signed-off-by: David Lamparter <[email protected]> > --- > > Oops, broke the build on FreeBSD & NetBSD... > ... pushed fix to master already. Good thing we have a CI system :) > [ https://ci1.netdef.org/ ] > > --- > lib/prefix.h | 10 ++++++++++ > ripngd/ripng_nexthop.h | 13 ++----------- > 2 files changed, 12 insertions(+), 11 deletions(-) > > diff --git a/lib/prefix.h b/lib/prefix.h > index 45889e0..a1a0679 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 7c04105..19bd32b 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] > > -- > 2.3.6 > > > _______________________________________________ > Quagga-dev mailing list > [email protected] > https://lists.quagga.net/mailman/listinfo/quagga-dev >
_______________________________________________ Quagga-dev mailing list [email protected] https://lists.quagga.net/mailman/listinfo/quagga-dev
