summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormpi <mpi@openbsd.org>2016-06-14 09:48:52 +0000
committermpi <mpi@openbsd.org>2016-06-14 09:48:52 +0000
commitc535a47493415003e820ea86176e68c797cb063c (patch)
tree86d2784f586eac481c00e59ed98f0a38f54b8ae5
parentStore the source address associated with a route in its own chunk of (diff)
downloadwireguard-openbsd-c535a47493415003e820ea86176e68c797cb063c.tar.xz
wireguard-openbsd-c535a47493415003e820ea86176e68c797cb063c.zip
Pass the configured ``ifa'' to rt_sendaddrmsg() instead of getting it via
``rt->rt_ifa'' later.
-rw-r--r--sys/net/route.c6
-rw-r--r--sys/net/route.h4
-rw-r--r--sys/net/rtsock.c5
3 files changed, 7 insertions, 8 deletions
diff --git a/sys/net/route.c b/sys/net/route.c
index 50cd1112ae3..d4d708a8df1 100644
--- a/sys/net/route.c
+++ b/sys/net/route.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: route.c,v 1.308 2016/06/14 09:44:41 mpi Exp $ */
+/* $OpenBSD: route.c,v 1.309 2016/06/14 09:48:52 mpi Exp $ */
/* $NetBSD: route.c,v 1.14 1996/02/13 22:00:46 christos Exp $ */
/*
@@ -1279,7 +1279,7 @@ rt_ifa_add(struct ifaddr *ifa, int flags, struct sockaddr *dst)
* userland that a new address has been added.
*/
if (flags & RTF_LOCAL)
- rt_sendaddrmsg(rt, RTM_NEWADDR);
+ rt_sendaddrmsg(rt, RTM_NEWADDR, ifa);
rt_sendmsg(rt, RTM_ADD, rtableid);
rtfree(rt);
}
@@ -1335,7 +1335,7 @@ rt_ifa_del(struct ifaddr *ifa, int flags, struct sockaddr *dst)
if (error == 0) {
rt_sendmsg(rt, RTM_DELETE, rtableid);
if (flags & RTF_LOCAL)
- rt_sendaddrmsg(rt, RTM_DELADDR);
+ rt_sendaddrmsg(rt, RTM_DELADDR, ifa);
rtfree(rt);
}
if (m != NULL)
diff --git a/sys/net/route.h b/sys/net/route.h
index 3286f4118bb..f7ba9c3b5a2 100644
--- a/sys/net/route.h
+++ b/sys/net/route.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: route.h,v 1.137 2016/06/14 09:44:41 mpi Exp $ */
+/* $OpenBSD: route.h,v 1.138 2016/06/14 09:48:52 mpi Exp $ */
/* $NetBSD: route.h,v 1.9 1996/02/13 22:00:49 christos Exp $ */
/*
@@ -361,7 +361,7 @@ void rt_maskedcopy(struct sockaddr *,
struct sockaddr *, struct sockaddr *);
struct sockaddr *rt_plen2mask(struct rtentry *, struct sockaddr_in6 *);
void rt_sendmsg(struct rtentry *, int, u_int);
-void rt_sendaddrmsg(struct rtentry *, int);
+void rt_sendaddrmsg(struct rtentry *, int, struct ifaddr *);
void rt_missmsg(int, struct rt_addrinfo *, int, uint8_t, u_int, int, u_int);
int rt_setgate(struct rtentry *, struct sockaddr *);
int rt_checkgate(struct rtentry *, struct rtentry **);
diff --git a/sys/net/rtsock.c b/sys/net/rtsock.c
index 4523c771ce9..54d5600e9cc 100644
--- a/sys/net/rtsock.c
+++ b/sys/net/rtsock.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rtsock.c,v 1.191 2016/06/14 09:44:41 mpi Exp $ */
+/* $OpenBSD: rtsock.c,v 1.192 2016/06/14 09:48:52 mpi Exp $ */
/* $NetBSD: rtsock.c,v 1.18 1996/03/29 00:32:10 cgd Exp $ */
/*
@@ -1186,9 +1186,8 @@ rt_ifmsg(struct ifnet *ifp)
* copies of it.
*/
void
-rt_sendaddrmsg(struct rtentry *rt, int cmd)
+rt_sendaddrmsg(struct rtentry *rt, int cmd, struct ifaddr *ifa)
{
- struct ifaddr *ifa = rt->rt_ifa;
struct ifnet *ifp = ifa->ifa_ifp;
struct mbuf *m = NULL;
struct rt_addrinfo info;