diff options
| author | Roy Marples <roy@marples.name> | 2019-01-06 10:10:59 +0000 |
|---|---|---|
| committer | Roy Marples <roy@marples.name> | 2019-01-06 10:10:59 +0000 |
| commit | 12489da256cfd51afb736b278b88510e5e4303e7 (patch) | |
| tree | 4acf18d0785a17a5d59f857e3ee8525e39d4f06d /src/ipv6.c | |
| parent | 2f2db8dcf1a3acd87accc71951cae044118edcbf (diff) | |
| download | dhcpcd-12489da256cfd51afb736b278b88510e5e4303e7.tar.xz | |
ip6: Install not on link routes with a gateway of the router
This allows a secondary router to broadcast prefixes it controls
without being a default router itself.
Diffstat (limited to 'src/ipv6.c')
| -rw-r--r-- | src/ipv6.c | 12 |
1 files changed, 6 insertions, 6 deletions
@@ -2151,13 +2151,11 @@ inet6_makeprefix(struct interface *ifp, const struct ra *rap, } /* There is no point in trying to manage a /128 prefix, - * ones without a lifetime or ones not on link or delegated */ - if (addr->prefix_len == 128 || - addr->prefix_vltime == 0 || - !(addr->flags & (IPV6_AF_ONLINK | IPV6_AF_DELEGATEDPFX))) + * ones without a lifetime. */ + if (addr->prefix_len == 128 || addr->prefix_vltime == 0) return NULL; - /* Don't install a reject route when not creating bigger prefixes */ + /* Don't install a reject route when not creating bigger prefixes. */ if (addr->flags & IPV6_AF_NOREJECT) return NULL; @@ -2189,7 +2187,9 @@ inet6_makeprefix(struct interface *ifp, const struct ra *rap, #ifndef __linux__ sa_in6_init(&rt->rt_gateway, &in6addr_loopback); #endif - } else + } else if (!(addr->flags & IPV6_AF_ONLINK)) + sa_in6_init(&rt->rt_gateway, &rap->from); + else rt->rt_gateway.sa_family = AF_UNSPEC; sa_in6_init(&rt->rt_ifa, &addr->addr); return rt; |
