diff options
author | 2015-01-28 22:10:13 +0000 | |
---|---|---|
committer | 2015-01-28 22:10:13 +0000 | |
commit | 4d2cbb0d3871714608ab02c6291a47dbc2a90648 (patch) | |
tree | f90d7509b694cd71d32f8a4b6eff9a499775e0e5 /sys/netinet6/in6_ifattach.c | |
parent | avoid fatal() calls in packet code (diff) | |
download | wireguard-openbsd-4d2cbb0d3871714608ab02c6291a47dbc2a90648.tar.xz wireguard-openbsd-4d2cbb0d3871714608ab02c6291a47dbc2a90648.zip |
Revert rtdeletemsg conversion. It was not ok'd, I misunderstood bluhm@'s
email.
Diffstat (limited to '')
-rw-r--r-- | sys/netinet6/in6_ifattach.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/sys/netinet6/in6_ifattach.c b/sys/netinet6/in6_ifattach.c index a9363527df8..70fbe2a8e79 100644 --- a/sys/netinet6/in6_ifattach.c +++ b/sys/netinet6/in6_ifattach.c @@ -1,4 +1,4 @@ -/* $OpenBSD: in6_ifattach.c,v 1.83 2015/01/27 10:31:19 mpi Exp $ */ +/* $OpenBSD: in6_ifattach.c,v 1.84 2015/01/28 22:10:13 mpi Exp $ */ /* $KAME: in6_ifattach.c,v 1.124 2001/07/18 08:32:51 jinmei Exp $ */ /* @@ -630,7 +630,15 @@ in6_ifdetach(struct ifnet *ifp) sin6.sin6_addr.s6_addr16[1] = htons(ifp->if_index); rt = rtalloc(sin6tosa(&sin6), 0, ifp->if_rdomain); if (rt && rt->rt_ifp == ifp) { - rtdeletemsg(rt, ifp->if_rdomain); + struct rt_addrinfo info; + + bzero(&info, sizeof(info)); + info.rti_flags = rt->rt_flags; + info.rti_info[RTAX_DST] = rt_key(rt); + info.rti_info[RTAX_GATEWAY] = rt->rt_gateway; + info.rti_info[RTAX_NETMASK] = rt_mask(rt); + rtrequest1(RTM_DELETE, &info, rt->rt_priority, NULL, + ifp->if_rdomain); rtfree(rt); } @@ -642,7 +650,15 @@ in6_ifdetach(struct ifnet *ifp) sin6.sin6_addr.s6_addr16[1] = htons(ifp->if_index); rt = rtalloc(sin6tosa(&sin6), 0, ifp->if_rdomain); if (rt && rt->rt_ifp == ifp) { - rtdeletemsg(rt, ifp->if_rdomain); + struct rt_addrinfo info; + + bzero(&info, sizeof(info)); + info.rti_flags = rt->rt_flags; + info.rti_info[RTAX_DST] = rt_key(rt); + info.rti_info[RTAX_GATEWAY] = rt->rt_gateway; + info.rti_info[RTAX_NETMASK] = rt_mask(rt); + rtrequest1(RTM_DELETE, &info, rt->rt_priority, NULL, + ifp->if_rdomain); rtfree(rt); } |