summaryrefslogtreecommitdiffstats
path: root/sys/netinet/ipfw/ip_dummynet.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/netinet/ipfw/ip_dummynet.c')
-rw-r--r--sys/netinet/ipfw/ip_dummynet.c18
1 files changed, 5 insertions, 13 deletions
diff --git a/sys/netinet/ipfw/ip_dummynet.c b/sys/netinet/ipfw/ip_dummynet.c
index 6f8dc4d..a4f9668 100644
--- a/sys/netinet/ipfw/ip_dummynet.c
+++ b/sys/netinet/ipfw/ip_dummynet.c
@@ -1367,20 +1367,11 @@ dummynet_io(struct mbuf **m0, int dir, struct ip_fw_args *fwa)
struct dn_pipe *pipe;
uint64_t len = m->m_pkthdr.len;
struct dn_flow_queue *q = NULL;
- int is_pipe;
- ipfw_insn *cmd = ACTION_PTR(fwa->rule);
+ int is_pipe = fwa->cookie & 0x8000000 ? 0 : 1;
KASSERT(m->m_nextpkt == NULL,
("dummynet_io: mbuf queue passed to dummynet"));
- if (cmd->opcode == O_LOG)
- cmd += F_LEN(cmd);
- if (cmd->opcode == O_ALTQ)
- cmd += F_LEN(cmd);
- if (cmd->opcode == O_TAG)
- cmd += F_LEN(cmd);
- is_pipe = (cmd->opcode == O_PIPE);
-
DUMMYNET_LOCK();
io_pkt++;
/*
@@ -1390,11 +1381,11 @@ dummynet_io(struct mbuf **m0, int dir, struct ip_fw_args *fwa)
* below can be simplified.
*/
if (is_pipe) {
- pipe = locate_pipe(fwa->cookie);
+ pipe = locate_pipe(fwa->cookie & 0xffff);
if (pipe != NULL)
fs = &(pipe->fs);
} else
- fs = locate_flowset(fwa->cookie);
+ fs = locate_flowset(fwa->cookie & 0xffff);
if (fs == NULL)
goto dropit; /* This queue/pipe does not exist! */
@@ -1440,7 +1431,8 @@ dummynet_io(struct mbuf **m0, int dir, struct ip_fw_args *fwa)
* Ok, i can handle the pkt now...
* Build and enqueue packet + parameters.
*/
- pkt->rule = fwa->rule;
+ pkt->slot = fwa->slot;
+ pkt->rulenum = fwa->rulenum;
pkt->rule_id = fwa->rule_id;
pkt->chain_id = fwa->chain_id;
pkt->dn_dir = dir;
OpenPOWER on IntegriCloud