diff options
author | bz <bz@FreeBSD.org> | 2009-04-20 11:22:51 +0000 |
---|---|---|
committer | bz <bz@FreeBSD.org> | 2009-04-20 11:22:51 +0000 |
commit | 1a4d93caae0d800baf8db692c68e58bcde36c06e (patch) | |
tree | 46b74e482705acdce65344fc39ad2c0ec9602c51 /usr.sbin | |
parent | 13610dbcefc0bbdbd4dcc21a795f89936aa10d62 (diff) | |
download | FreeBSD-src-1a4d93caae0d800baf8db692c68e58bcde36c06e.zip FreeBSD-src-1a4d93caae0d800baf8db692c68e58bcde36c06e.tar.gz |
Back out r186308:
in case of AF_LINK, which the kernel still returns for an RTAX_GATEWAY
as an empty sockaddr_dl in the classic tun<n> case.
Copying the address into the message payload, but not the RTA_GATEWAY
flag results in rt_xaddrs() in the kernel tripping over that and parsing
the next attribute set with a flag, i.e. RTA_NETMASK, with the gateway
address, resulting in bogus route entry.
MFC after: 3 days
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/ppp/route.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/usr.sbin/ppp/route.c b/usr.sbin/ppp/route.c index 7609681..f5efe63 100644 --- a/usr.sbin/ppp/route.c +++ b/usr.sbin/ppp/route.c @@ -910,10 +910,8 @@ rt_Update(struct bundle *bundle, const struct sockaddr *dst, p += memcpy_roundup(p, dst, dst->sa_len); } - if (gw != NULL && (gw->sa_family != AF_LINK)) - rtmes.m_rtm.rtm_addrs |= RTA_GATEWAY; + rtmes.m_rtm.rtm_addrs |= RTA_GATEWAY; p += memcpy_roundup(p, gw, gw->sa_len); - if (mask) { rtmes.m_rtm.rtm_addrs |= RTA_NETMASK; p += memcpy_roundup(p, mask, mask->sa_len); |