summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/netinet/ip_output.c7
-rw-r--r--sys/netinet6/ip6_output.c7
2 files changed, 12 insertions, 2 deletions
diff --git a/sys/netinet/ip_output.c b/sys/netinet/ip_output.c
index 6f47f429ca8..d0b15f8a93a 100644
--- a/sys/netinet/ip_output.c
+++ b/sys/netinet/ip_output.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ip_output.c,v 1.320 2016/04/18 12:10:34 mpi Exp $ */
+/* $OpenBSD: ip_output.c,v 1.321 2016/04/29 11:40:27 bluhm Exp $ */
/* $NetBSD: ip_output.c,v 1.28 1996/02/13 23:43:07 christos Exp $ */
/*
@@ -1049,7 +1049,12 @@ ip_ctloutput(int op, struct socket *so, int level, int optname,
error = EINVAL;
break;
}
+ if (inp->inp_lport) {
+ error = EBUSY;
+ break;
+ }
inp->inp_rtableid = rtid;
+ in_pcbrehash(inp);
break;
case IP_PIPEX:
if (m != NULL && m->m_len == sizeof(int))
diff --git a/sys/netinet6/ip6_output.c b/sys/netinet6/ip6_output.c
index 242c251a7cc..da3e9bcf095 100644
--- a/sys/netinet6/ip6_output.c
+++ b/sys/netinet6/ip6_output.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ip6_output.c,v 1.205 2016/04/27 21:14:29 markus Exp $ */
+/* $OpenBSD: ip6_output.c,v 1.206 2016/04/29 11:40:27 bluhm Exp $ */
/* $KAME: ip6_output.c,v 1.172 2001/03/25 09:55:56 itojun Exp $ */
/*
@@ -1424,7 +1424,12 @@ do { \
error = EINVAL;
break;
}
+ if (inp->inp_lport) {
+ error = EBUSY;
+ break;
+ }
inp->inp_rtableid = rtid;
+ in_pcbrehash(inp);
break;
case IPV6_PIPEX:
if (m != NULL && m->m_len == sizeof(int))