summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/net/rtsock.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/sys/net/rtsock.c b/sys/net/rtsock.c
index fb21a770d02..97a6c5b7c11 100644
--- a/sys/net/rtsock.c
+++ b/sys/net/rtsock.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rtsock.c,v 1.296 2019/11/22 15:28:05 florian Exp $ */
+/* $OpenBSD: rtsock.c,v 1.297 2019/11/24 07:56:03 claudio Exp $ */
/* $NetBSD: rtsock.c,v 1.18 1996/03/29 00:32:10 cgd Exp $ */
/*
@@ -815,6 +815,19 @@ route_output(struct mbuf *m, struct socket *so, struct sockaddr *dstaddr,
error = EINVAL;
goto fail;
}
+ /*
+ * If this is a solicitation proposal forward request to
+ * all interfaces. Most handlers will ignore it but at least
+ * umb(4) will send a response to this event.
+ */
+ if (rtm->rtm_priority == RTP_PROPOSAL_SOLICIT) {
+ struct ifnet *ifp;
+ NET_LOCK();
+ TAILQ_FOREACH(ifp, &ifnet, if_list) {
+ ifp->if_rtrequest(ifp, RTM_PROPOSAL, NULL);
+ }
+ NET_UNLOCK();
+ }
} else {
error = rtm_output(rtm, &rt, &info, prio, tableid);
if (!error) {