summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjoern A. Zeeb <bz@FreeBSD.org>2009-04-22 08:37:02 +0000
committerBjoern A. Zeeb <bz@FreeBSD.org>2009-04-22 08:37:02 +0000
commitf8cb494d51b489e5f26f754a40cf6385b006a2d3 (patch)
tree8c7dbcd26d1f3b1845ed2d38c3f1b7d6f078af7a
parent4e7ac0d6fc64af60139a2ad3ad7e9d06504fb62a (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.c4
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);