On Mon, Aug 14, 2017 at 05:53:10PM +0000, Florian Obser wrote: > After we stopped processing router advertisements in the kernel > sppp_update_ip6_addr() became the last user of n6_are_prefix_equal(). > Since it compares /128 prefixes it doesn't need all the bells and > whistles and can be converted to a memcmp. Remove the new unused > n6_are_prefix_equal(). > > OK?
OK bluhm@ > > diff --git net/if_spppsubr.c net/if_spppsubr.c > index 4b541535bda..89e3f1b5713 100644 > --- net/if_spppsubr.c > +++ net/if_spppsubr.c > @@ -4355,7 +4355,6 @@ sppp_update_ip6_addr(void *arg) > struct sppp *sp = arg; > struct ifnet *ifp = &sp->pp_if; > struct in6_aliasreq *ifra = &sp->ipv6cp.req_ifid; > - struct in6_addr mask = in6mask128; > struct in6_ifaddr *ia6; > int error; > > @@ -4386,7 +4385,8 @@ sppp_update_ip6_addr(void *arg) > */ > > /* Destination address can only be set for /128. */ > - if (!in6_are_prefix_equal(&ia6->ia_prefixmask.sin6_addr, &mask, 128)) { > + if (memcmp(&ia6->ia_prefixmask.sin6_addr, &in6mask128, > + sizeof(in6mask128)) != 0) { > ifra->ifra_dstaddr.sin6_len = 0; > ifra->ifra_dstaddr.sin6_family = AF_UNSPEC; > } > diff --git netinet6/in6.c netinet6/in6.c > index b83e6df6c66..f9596be629b 100644 > --- netinet6/in6.c > +++ netinet6/in6.c > @@ -1519,32 +1519,6 @@ in6_matchlen(struct in6_addr *src, struct in6_addr > *dst) > return match; > } > > -int > -in6_are_prefix_equal(struct in6_addr *p1, struct in6_addr *p2, int len) > -{ > - int bytelen, bitlen; > - > - /* sanity check */ > - if (0 > len || len > 128) { > - log(LOG_ERR, "in6_are_prefix_equal: invalid prefix > length(%d)\n", > - len); > - return (0); > - } > - > - bytelen = len / 8; > - bitlen = len % 8; > - > - if (bcmp(&p1->s6_addr, &p2->s6_addr, bytelen)) > - return (0); > - /* len == 128 is ok because bitlen == 0 then */ > - if (bitlen != 0 && > - p1->s6_addr[bytelen] >> (8 - bitlen) != > - p2->s6_addr[bytelen] >> (8 - bitlen)) > - return (0); > - > - return (1); > -} > - > void > in6_prefixlen2mask(struct in6_addr *maskp, int len) > { > diff --git netinet6/in6_var.h netinet6/in6_var.h > index a023d12a1bf..e5a72e6f903 100644 > --- netinet6/in6_var.h > +++ netinet6/in6_var.h > @@ -395,7 +395,6 @@ struct in6_ifaddr *in6ifa_ifpforlinklocal(struct ifnet *, > int); > struct in6_ifaddr *in6ifa_ifpwithaddr(struct ifnet *, struct in6_addr *); > int in6_addr2scopeid(unsigned int, struct in6_addr *); > int in6_matchlen(struct in6_addr *, struct in6_addr *); > -int in6_are_prefix_equal(struct in6_addr *, struct in6_addr *, int); > void in6_prefixlen2mask(struct in6_addr *, int); > void in6_purgeprefix(struct ifnet *); > #endif /* _KERNEL */ > > -- > I'm not entirely sure you are real.