On Wed, Aug 14, 2024 at 02:30:50PM +1000, David Gibson wrote: > In every place we use our_tap_ll, we only use it as a fallback if the > IPv6 gateway address is not link-local. We can avoid that conditional at > use time by doing it at initialisation of our_tap_ll instead. > > Signed-off-by: David Gibson Ugh, sorry. Please don't apply this one, I missed a case. > --- > conf.c | 3 +++ > dhcpv6.c | 5 +---- > ndp.c | 5 +---- > 3 files changed, 5 insertions(+), 8 deletions(-) > > diff --git a/conf.c b/conf.c > index f1727ade..30769474 100644 > --- a/conf.c > +++ b/conf.c > @@ -721,6 +721,9 @@ static unsigned int conf_ip6(unsigned int ifi, > > ip6->addr_seen = ip6->addr; > > + if (IN6_IS_ADDR_LINKLOCAL(&ip6->gw)) > + ip6->our_tap_ll = ip6->gw; > + > if (MAC_IS_ZERO(mac)) { > rc = nl_link_get_mac(nl_sock, ifi, mac); > if (rc < 0) { > diff --git a/dhcpv6.c b/dhcpv6.c > index 44e954e7..69841abc 100644 > --- a/dhcpv6.c > +++ b/dhcpv6.c > @@ -453,10 +453,7 @@ int dhcpv6(struct ctx *c, const struct pool *p, > > c->ip6.addr_ll_seen = *saddr; > > - if (IN6_IS_ADDR_LINKLOCAL(&c->ip6.gw)) > - src = &c->ip6.gw; > - else > - src = &c->ip6.our_tap_ll; > + src = &c->ip6.our_tap_ll; > > mh = packet_get(p, 0, sizeof(*uh), sizeof(*mh), NULL); > if (!mh) > diff --git a/ndp.c b/ndp.c > index 3a76b00a..a1ee8349 100644 > --- a/ndp.c > +++ b/ndp.c > @@ -341,10 +341,7 @@ dns_done: > else > c->ip6.addr_seen = *saddr; > > - if (IN6_IS_ADDR_LINKLOCAL(&c->ip6.gw)) > - rsaddr = &c->ip6.gw; > - else > - rsaddr = &c->ip6.our_tap_ll; > + rsaddr = &c->ip6.our_tap_ll; > > if (ih->icmp6_type == NS) { > dlen = sizeof(struct ndp_na); -- David Gibson (he or they) | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you, not the other way | around. http://www.ozlabs.org/~dgibson