tech-net archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Adding packet filtering to tun interfaces
Le 12/03/2018 à 08:45, Tom Ivar Helbekkmo a écrit :
Maxime Villard <max%M00nBSD.net@localhost> writes:
Doesn't seem correct to me, pfil_run_hooks can return zero but still
free the mbuf.
When can it do that?
It can do that in L4 when handling fragments. When a fragment is received
NPF registers the packet in a list, and returns error=0 *mp=NULL. Later, when
the last fragment is received, the chain is complete; the packets in the list
are concatenated, and this time NPF returns error=0 *mp=reassembled_packet,
giving the "illusion" that the last received fragment was actually the
complete packet.
[...]
I think it should rather be:
+ if ((error = pfil_run_hooks(ifp->if_pfil, &m0, ifp, PFIL_OUT)) != 0)
+ goto out;
+ if (m0 == NULL)
+ goto out;
I adapted the pfil_run_hooks() calls from those in if_vlan.c, so they'll
need fixing, too.
Mmh yes, they will need fixing, I missed that.
But now that I'm thinking about it... Are you sure that your change indeed
enforces NPF policies? If you pass ifp->if_pfil normally it doesn't do IP
filtering, unless I missed something else.
Maxime
Home |
Main Index |
Thread Index |
Old Index