MCPcopy Create free account
hub / github.com/F-Stack/f-stack / pfil_fake_mbuf

Function pfil_fake_mbuf

freebsd/net/pfil.c:132–158  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

130}
131
132static __noinline int
133pfil_fake_mbuf(pfil_func_t func, pfil_packet_t *p, struct ifnet *ifp, int flags,
134 void *ruleset, struct inpcb *inp)
135{
136 struct mbuf m, *mp;
137 pfil_return_t rv;
138
139 (void)m_init(&m, M_NOWAIT, MT_DATA, M_NOFREE | M_PKTHDR);
140 m_extadd(&m, p->mem, PFIL_LENGTH(flags), NULL, NULL, NULL, 0,
141 EXT_RXRING);
142 m.m_len = m.m_pkthdr.len = PFIL_LENGTH(flags);
143 mp = &m;
144 flags &= ~(PFIL_MEMPTR | PFIL_LENMASK);
145
146 rv = func(&mp, ifp, flags, ruleset, inp);
147 if (rv == PFIL_PASS && mp != &m) {
148 /*
149 * Firewalls that need pfil_fake_mbuf() most likely don't
150 * know they need return PFIL_REALLOCED.
151 */
152 rv = PFIL_REALLOCED;
153 *p = pfil_packet_align(*p);
154 *p->m = mp;
155 }
156
157 return (rv);
158}
159
160/*
161 * pfil_run_hooks() runs the specified packet filter hook chain.

Callers 1

pfil_run_hooksFunction · 0.85

Calls 3

m_extaddFunction · 0.85
pfil_packet_alignFunction · 0.85
m_initFunction · 0.50

Tested by

no test coverage detected