pf_mtag
struct pf_mtag *t;
struct pf_mtag *t;
struct pf_mtag *t;
struct pf_mtag *t;
struct pf_mtag *at;
struct pf_mtag *t;
struct pf_mtag *pf_mtag;
struct pf_mtag *pf_get_mtag(struct mbuf *);
struct pf_mtag *at;
sizeof(struct pf_mtag), M_NOWAIT | M_ZERO);
at = (struct pf_mtag *)(mtag + 1);
pd->pf_mtag = pf_find_mtag(md);
if ((pd->pf_mtag == NULL &&
((pd->pf_mtag = pf_get_mtag(pd->m)) == NULL)) ||
pd->pf_mtag->routed++ > 3) {
if ((pd->pf_mtag->flags & PF_MTAG_FLAG_DUPLICATED)) {
pd->pf_mtag->flags |= PF_MTAG_FLAG_DUPLICATED;
if (pd->pf_mtag->flags & PF_MTAG_FLAG_DUMMYNETED)
pf_dummynet_flag_remove(struct mbuf *m, struct pf_mtag *pf_mtag)
pf_mtag->flags &= ~PF_MTAG_FLAG_DUMMYNET;
if (pd->pf_mtag == NULL &&
((pd->pf_mtag = pf_get_mtag(*m0)) == NULL)) {
pd->pf_mtag->flags |= PF_MTAG_FLAG_ROUTE_TO;
pd->pf_mtag->if_index = ifp->if_index;
pd->pf_mtag->if_idxgen = ifp->if_idxgen;
memcpy(&pd->pf_mtag->dst, sa,
memcpy(&pd->pf_mtag->dst, sa,
pd->pf_mtag->flags |= PF_MTAG_FLAG_DUMMYNET;
pd->pf_mtag->flags |= PF_MTAG_FLAG_DUMMYNETED;
pd->pf_mtag->flags &= ~PF_MTAG_FLAG_ROUTE_TO;
pf_dummynet_flag_remove(*m0, pd->pf_mtag);
pd->pf_mtag = pf_find_mtag(m);
if (pd->pf_mtag && pd->pf_mtag->dnpipe) {
pd->act.dnpipe = pd->pf_mtag->dnpipe;
pd->act.flags = pd->pf_mtag->dnflags;
if (pd.pf_mtag != NULL && (pd.pf_mtag->flags & PF_MTAG_FLAG_ROUTE_TO)) {
pd.pf_mtag->flags &= ~PF_MTAG_FLAG_ROUTE_TO;
ifp = ifnet_byindexgen(pd.pf_mtag->if_index,
pd.pf_mtag->if_idxgen);
(ifp->if_output)(ifp, *m0, sintosa(&pd.pf_mtag->dst), NULL);
if (ip_dn_io_ptr != NULL && pd.pf_mtag != NULL &&
pd.pf_mtag->flags & PF_MTAG_FLAG_DUMMYNET) {
pf_dummynet_flag_remove(pd.m, pd.pf_mtag);
if (pd.pf_mtag == NULL &&
((pd.pf_mtag = pf_get_mtag(pd.m)) == NULL)) {
pd.pf_mtag->flags |= PF_MTAG_FLAG_PACKET_LOOPED;
if (pd.pf_mtag && pd.pf_mtag->flags & PF_MTAG_FLAG_FASTFWD_OURS_PRESENT) {
pd.pf_mtag->flags &= ~PF_MTAG_FLAG_FASTFWD_OURS_PRESENT;
if (pd.pf_mtag == NULL &&
((pd.pf_mtag = pf_get_mtag(pd.m)) == NULL)) {
pd.pf_mtag->qid_hash = pf_state_hash(s);
pd.pf_mtag->qid = pd.act.pqid;
pd.pf_mtag->qid = pd.act.qid;
pd.pf_mtag->hdr = mtod(pd.m, void *);
if (pd.pf_mtag == NULL &&
((pd.pf_mtag = pf_get_mtag(pd.m)) == NULL)) {
pd.pf_mtag->flags |=
if (pd.pf_mtag)
pd.pf_mtag->flags &= ~PF_MTAG_FLAG_PACKET_LOOPED;
sizeof(struct pf_mtag), NULL, NULL, pf_mtag_uminit, NULL,
t->m_tag_len = sizeof(struct pf_mtag);
struct pf_mtag *
return ((struct pf_mtag *)(mtag + 1));
bzero(mtag + 1, sizeof(struct pf_mtag));
return ((struct pf_mtag *)(mtag + 1));
struct pf_mtag *pf_mtag);
struct pf_mtag *pf_mtag;
if ((pf_mtag = pf_get_mtag(m)) == NULL) {
pf_mtag->tag = mtag_tag;
pf_mtag->flags = mtag_flags;
pf_mtag->qid = r->qid;
pf_mtag->hdr = mtod(m, struct ip *);
struct pf_mtag *pf_mtag;
if ((pf_mtag = pf_get_mtag(m0)) == NULL) {
pf_mtag->qid = r->qid;
pf_mtag->hdr = mtod(m0, struct ip *);
if (pd->pf_mtag == NULL && ((pd->pf_mtag = pf_get_mtag(pd->m)) == NULL))
pd->pf_mtag->tag = tag;
struct pf_mtag *mtag;
&ctx->tag, pd->pf_mtag ? pd->pf_mtag->tag : 0),
#define PACKET_LOOPED(pd) ((pd)->pf_mtag && \
(pd)->pf_mtag->flags & PF_MTAG_FLAG_PACKET_LOOPED)
pd2.pf_mtag = pd->pf_mtag;
if ((pd->pf_mtag == NULL &&
((pd->pf_mtag = pf_get_mtag(pd->m)) == NULL)) ||
pd->pf_mtag->routed++ > 3) {
if ((pd->pf_mtag->flags & PF_MTAG_FLAG_DUPLICATED)) {
pd->pf_mtag->flags |= PF_MTAG_FLAG_DUPLICATED;
pd->pf_mtag ? pd->pf_mtag->tag : 0),
static __inline struct pf_mtag *
return ((struct pf_mtag *)(mtag + 1));
pd.pf_mtag = pf_find_mtag(m);
pd->pf_mtag ? pd->pf_mtag->tag : 0))
if (pd->pf_mtag && (pd->pf_mtag->flags & PF_MTAG_FLAG_SYNCOOKIE_RECREATED))