Initialise our_tap_ll to ip6.gw when suitable
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 <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
parent
8d4baa4446
commit
975cfa5f32
4 changed files with 6 additions and 12 deletions
3
conf.c
3
conf.c
|
@ -721,6 +721,9 @@ static unsigned int conf_ip6(unsigned int ifi,
|
||||||
|
|
||||||
ip6->addr_seen = ip6->addr;
|
ip6->addr_seen = ip6->addr;
|
||||||
|
|
||||||
|
if (IN6_IS_ADDR_LINKLOCAL(&ip6->gw))
|
||||||
|
ip6->our_tap_ll = ip6->gw;
|
||||||
|
|
||||||
if (MAC_IS_ZERO(mac)) {
|
if (MAC_IS_ZERO(mac)) {
|
||||||
rc = nl_link_get_mac(nl_sock, ifi, mac);
|
rc = nl_link_get_mac(nl_sock, ifi, mac);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
|
|
3
dhcpv6.c
3
dhcpv6.c
|
@ -453,9 +453,6 @@ int dhcpv6(struct ctx *c, const struct pool *p,
|
||||||
|
|
||||||
c->ip6.addr_ll_seen = *saddr;
|
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);
|
mh = packet_get(p, 0, sizeof(*uh), sizeof(*mh), NULL);
|
||||||
|
|
3
fwd.c
3
fwd.c
|
@ -317,9 +317,6 @@ uint8_t fwd_nat_from_host(const struct ctx *c, uint8_t proto,
|
||||||
} else if (inany_is_loopback6(&tgt->oaddr) ||
|
} else if (inany_is_loopback6(&tgt->oaddr) ||
|
||||||
inany_equals6(&tgt->oaddr, &c->ip6.addr_seen) ||
|
inany_equals6(&tgt->oaddr, &c->ip6.addr_seen) ||
|
||||||
inany_equals6(&tgt->oaddr, &c->ip6.addr)) {
|
inany_equals6(&tgt->oaddr, &c->ip6.addr)) {
|
||||||
if (IN6_IS_ADDR_LINKLOCAL(&c->ip6.gw))
|
|
||||||
tgt->oaddr.a6 = c->ip6.gw;
|
|
||||||
else
|
|
||||||
tgt->oaddr.a6 = c->ip6.our_tap_ll;
|
tgt->oaddr.a6 = c->ip6.our_tap_ll;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
3
ndp.c
3
ndp.c
|
@ -341,9 +341,6 @@ dns_done:
|
||||||
else
|
else
|
||||||
c->ip6.addr_seen = *saddr;
|
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) {
|
if (ih->icmp6_type == NS) {
|
||||||
|
|
Loading…
Reference in a new issue