diff options
author | Claudio Jeker <claudio@cvs.openbsd.org> | 2019-11-24 07:56:04 +0000 |
---|---|---|
committer | Claudio Jeker <claudio@cvs.openbsd.org> | 2019-11-24 07:56:04 +0000 |
commit | 4422d936645940c95b2bb982e722ba78b9b62342 (patch) | |
tree | 89bc1bbd3ea0ff62667eed9d22f62e9994342a95 | |
parent | ca2b8eec3b16e78f0718d7cf2ec094ab73d517c0 (diff) |
If the RTM_PROPOSAL is a solicitation proposal forward the request to
all interfaces. Most handlers will ignore it but at least umb(4) will
send a response back.
OK florian@
-rw-r--r-- | sys/net/rtsock.c | 15 |
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) { |