summaryrefslogtreecommitdiffstats
path: root/sys/net
diff options
context:
space:
mode:
authormlaier <mlaier@FreeBSD.org>2004-02-18 00:04:52 +0000
committermlaier <mlaier@FreeBSD.org>2004-02-18 00:04:52 +0000
commit60723c32606f318dd3816d81ba433654f812312b (patch)
tree8161989612a5d1dd2b4c63580a9c95cb85146c14 /sys/net
parent9a383d1448d0eecb2082f01c9fa00232399e77a0 (diff)
downloadFreeBSD-src-60723c32606f318dd3816d81ba433654f812312b.zip
FreeBSD-src-60723c32606f318dd3816d81ba433654f812312b.tar.gz
Backout MT_TAG removal (i.e. bring back MT_TAGs) for now, as dummynet is
not working properly with the patch in place. Approved by: bms(mentor)
Diffstat (limited to 'sys/net')
-rw-r--r--sys/net/bridge.c14
-rw-r--r--sys/net/if_ethersubr.c17
2 files changed, 24 insertions, 7 deletions
diff --git a/sys/net/bridge.c b/sys/net/bridge.c
index 9ca1dd8..a444f1c 100644
--- a/sys/net/bridge.c
+++ b/sys/net/bridge.c
@@ -920,11 +920,14 @@ bdg_forward(struct mbuf *m0, struct ifnet *dst)
DDB(quad_t ticks; ticks = rdtsc();)
- /* did we match a firewall rule ? */
- args.rule = ip_dn_find_rule(m0);
- if (args.rule)
- shared = 0; /* For sure this is our own mbuf. */
- else
+ args.rule = NULL; /* did we match a firewall rule ? */
+ /* Fetch state from dummynet tag, ignore others */
+ for (;m0->m_type == MT_TAG; m0 = m0->m_next)
+ if (m0->_m_tag_id == PACKET_TAG_DUMMYNET) {
+ args.rule = ((struct dn_pkt *)m0)->rule;
+ shared = 0; /* For sure this is our own mbuf. */
+ }
+ if (args.rule == NULL)
bdg_thru++; /* count 1st time through bdg_forward */
/*
@@ -1043,6 +1046,7 @@ bdg_forward(struct mbuf *m0, struct ifnet *dst)
args.m = m0; /* the packet we are looking at */
args.oif = NULL; /* this is an input packet */
+ args.divert_rule = 0; /* we do not support divert yet */
args.next_hop = NULL; /* we do not support forward yet */
args.eh = &save_eh; /* MAC header for bridged/MAC packets */
i = ip_fw_chk_ptr(&args);
diff --git a/sys/net/if_ethersubr.c b/sys/net/if_ethersubr.c
index 835f5dc..567b0b7 100644
--- a/sys/net/if_ethersubr.c
+++ b/sys/net/if_ethersubr.c
@@ -322,7 +322,12 @@ bad: if (m != NULL)
int
ether_output_frame(struct ifnet *ifp, struct mbuf *m)
{
- struct ip_fw *rule = ip_dn_find_rule(m);
+ struct ip_fw *rule = NULL;
+
+ /* Extract info from dummynet tag, ignore others */
+ for (; m->m_type == MT_TAG; m = m->m_next)
+ if (m->m_flags == PACKET_TAG_DUMMYNET)
+ rule = ((struct dn_pkt *)m)->rule;
if (rule == NULL && BDG_ACTIVE(ifp)) {
/*
@@ -392,6 +397,7 @@ ether_ipfw_chk(struct mbuf **m0, struct ifnet *dst,
args.m = m; /* the packet we are looking at */
args.oif = dst; /* destination, if any */
+ args.divert_rule = 0; /* we do not support divert yet */
args.rule = *rule; /* matching rule to restart */
args.next_hop = NULL; /* we do not support forward yet */
args.eh = &save_eh; /* MAC header for bridged/MAC packets */
@@ -605,7 +611,14 @@ ether_demux(struct ifnet *ifp, struct mbuf *m)
#if defined(NETATALK)
struct llc *l;
#endif
- struct ip_fw *rule = ip_dn_find_rule(m);
+ struct ip_fw *rule = NULL;
+
+ /* Extract info from dummynet tag, ignore others */
+ for (;m->m_type == MT_TAG; m = m->m_next)
+ if (m->m_flags == PACKET_TAG_DUMMYNET) {
+ rule = ((struct dn_pkt *)m)->rule;
+ ifp = m->m_next->m_pkthdr.rcvif;
+ }
KASSERT(ifp != NULL, ("ether_demux: NULL interface pointer"));
OpenPOWER on IntegriCloud