Project Home
Project Home
Wiki
Wiki
Discussion Forums
Discussions
Project Information
Project Info
Forum Topic - Terminating packets in pfil hook: (2 Items)
   
Terminating packets in pfil hook  
Hi,

I have a problem terminating packets when I register pfil
hooks. 

In my entry function:
pfil_add_hook(eth_rx_up, NULL, PFIL_IN, ð_input_pfil_hook)

Then in eth_rx_up:

static int eth_rx_up(void *arg, struct mbuf **mp, struct ifnet *ifp, int dir)
{
	struct mbuf *m = *mp;
...

	m_freem(m);
	m = NULL;
	return 0;
...
}

Then pinging io-pkt it sigsegvs after ca 130 packets in
i82544_start:

(gdb) bt
#0  0xb8208e86 in i82544_start (ifp=0x81059c0) at /home/peter/lino3/src/qnx-dev/core_networking/sys/dev_qnx/i82544/
transmit.c:237
#1  0x08062f9f in ifq_enqueue_wtp (ifp=0x81059c0, m=0x816bf00, wtp=0x80fc840) at /home/peter/lino3/src/qnx-dev/
core_networking/sys/net/if.c:2467
#2  0x08065e25 in ether_output (ifp0=0x81059c0, m0=0x816bf00, dst=0x7fc6d08, rt0=0x810cd48) at /home/peter/lino3/src/qnx
-dev/core_networking/sys/net/if_ethersubr.c:598
#3  0x0808a228 in ip_output (m0=0x816bf00) at /home/peter/lino3/src/qnx-dev/core_networking/sys/netinet/ip_output.c:990
#4  0x08086076 in icmp_send (m=0x816bf00, opts=0x0) at /home/peter/lino3/src/qnx-dev/core_networking/sys/netinet/ip_icmp
.c:940
#5  0x08085fa2 in icmp_reflect (m=0x816bf00) at /home/peter/lino3/src/qnx-dev/core_networking/sys/netinet/ip_icmp.c:909
#6  0x08085914 in icmp_input (m=0x816bf00) at /home/peter/lino3/src/qnx-dev/core_networking/sys/netinet/ip_icmp.c:621
#7  0x080877bc in ip_input (m=0x816bf00) at /home/peter/lino3/src/qnx-dev/core_networking/sys/netinet/ip_input.c:1118
#8  0x08086f15 in ip_intr (arg=0x816bf00) at /home/peter/lino3/src/qnx-dev/core_networking/sys/netinet/ip_input.c:532
#9  0x080a1b80 in process_pkts (sctlp=0x80ea0c0, wtp=0x80fc840) at /home/peter/lino3/src/qnx-dev/core_networking/sys/
receive.c:298
#10 0x080a29e2 in receive_loop_uni (arg=0x80e8064) at /home/peter/lino3/src/qnx-dev/core_networking/sys/receive.c:985
#11 0x0809720f in thread_init (arg=0x80e8064) at /home/peter/lino3/src/qnx-dev/core_networking/sys/nw_thread.c:765

(gdb) f 0
#0  0xb8208e86 in i82544_start (ifp=0x81059c0) at /home/peter/lino3/src/qnx-dev/core_networking/sys/dev_qnx/i82544/
transmit.c:237
(gdb) p m
$19 = (struct mbuf *) 0x1ab76000
(gdb) p *m
$20 = {m_hdr = {mh_next = 0x0, mh_nextpkt = 0x0, mh_data = 0x0, mh_owner = 0x0, mh_len = 0, mh_flags = 0, mh_page = 0x0,
 mh_type = 0}, M_dat = {MH = {MH_pkthdr = {rcvif = 0x0, tags = {slh_first = 0x0}, len = 0, csum_flags = 0, csum_data = 0
, segsz = 0}, MH_dat = {MH_ext = {ext_buf = 0x0, ext_free = 0, ext_arg = 0x0, ext_size = 0, ext_type = 0x0, ext_refcnt =
 0, ext_refcntp = 0x0, ext_un = {extun_page = 0x0, extun_phys = 0}}, MH_databuf = '\0' <repeats 199 times>}}, M_databuf 
= '\0' <repeats 223 times>}}
(gdb) p m0
$21 = (struct mbuf *) 0x816bf00
(gdb) p num_frag
$22 = 27

Am I doing anything wrong when terminating the mbuf?
I'm using the latest trunk of core_networking (svn rev. 536).

Regards,
Peter Engstrom
Re: Terminating packets in pfil hook  
Sorry for the noise. Please ignore my previous post.

m = NULL;

should of course be

*mp = NULL;

I hate pointers to pointers.
Peter