diff options
| author | Bjoern A. Zeeb <bz@FreeBSD.org> | 2009-04-22 08:37:02 +0000 |
|---|---|---|
| committer | Bjoern A. Zeeb <bz@FreeBSD.org> | 2009-04-22 08:37:02 +0000 |
| commit | f8cb494d51b489e5f26f754a40cf6385b006a2d3 (patch) | |
| tree | 8c7dbcd26d1f3b1845ed2d38c3f1b7d6f078af7a | |
| parent | 4e7ac0d6fc64af60139a2ad3ad7e9d06504fb62a (diff) | |
MFC r191305:
Back out r186308 (r191014 in stable/7):
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.
Approved by: re (kensmith)
Notes
svn path=/releng/7.2/; revision=191373
| -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 f8fc94b69f36..fdc60020e5dc 100644 --- a/usr.sbin/ppp/route.c +++ b/usr.sbin/ppp/route.c @@ -902,10 +902,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); |
