aboutsummaryrefslogtreecommitdiff
path: root/sys/netinet/ip_divert.c
diff options
context:
space:
mode:
authorRobert Watson <rwatson@FreeBSD.org>2004-06-22 03:58:50 +0000
committerRobert Watson <rwatson@FreeBSD.org>2004-06-22 03:58:50 +0000
commitffcbc0e4c577f01e17b8bea03753f7c5edc6d4c3 (patch)
treecdb4bea182e077a56ef23408b886db56ee1d33bc /sys/netinet/ip_divert.c
parentfea24c0a7131ded6368d29c431d1cd0e585db665 (diff)
downloadsrc-ffcbc0e4c577f01e17b8bea03753f7c5edc6d4c3.tar.gz
src-ffcbc0e4c577f01e17b8bea03753f7c5edc6d4c3.zip
Prefer use of the inpcb as a MAC label source for outgoing packets sent
via divert sockets, when available.
Notes
Notes: svn path=/head/; revision=130900
Diffstat (limited to 'sys/netinet/ip_divert.c')
-rw-r--r--sys/netinet/ip_divert.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/sys/netinet/ip_divert.c b/sys/netinet/ip_divert.c
index f745fea98161..1f8bb4851276 100644
--- a/sys/netinet/ip_divert.c
+++ b/sys/netinet/ip_divert.c
@@ -262,12 +262,6 @@ div_output(struct socket *so, struct mbuf *m,
KASSERT(m->m_pkthdr.rcvif == NULL, ("rcvif not null"));
-#ifdef MAC
- SOCK_LOCK(so);
- mac_create_mbuf_from_socket(so, m);
- SOCK_UNLOCK(so);
-#endif
-
if (control)
m_freem(control); /* XXX */
@@ -324,6 +318,9 @@ div_output(struct socket *so, struct mbuf *m,
/* Send packet to output processing */
ipstat.ips_rawout++; /* XXX */
+#ifdef MAC
+ mac_create_mbuf_from_inpcb(inp, m);
+#endif
error = ip_output(m,
inp->inp_options, NULL,
(so->so_options & SO_DONTROUTE) |
@@ -350,6 +347,11 @@ div_output(struct socket *so, struct mbuf *m,
}
m->m_pkthdr.rcvif = ifa->ifa_ifp;
}
+#ifdef MAC
+ SOCK_LOCK(so);
+ mac_create_mbuf_from_socket(so, m);
+ SOCK_UNLOCK(so);
+#endif
/* Send packet to input processing */
ip_input(m);
}