On Thursday 2010-05-13 17:45, ratheesh k wrote: >Why this program cause kernel crash ? , If i comment out "memcpy " , >it works fine > >/* This is the hook function itself */ >unsigned int hook_func(unsigned int hooknum, > struct sk_buff *skb, > const struct net_device *in, > const struct net_device *out, > int (*okfn)(struct sk_buff *)) >{ > struct iphdr* ip_header; > struct tcphdr* tcp_header; > struct ethhdr * eth_header ; > char src[ETH_ALEN+2]; > char dst[ETH_ALEN+2]; > src[ETH_ALEN+1]='\0'; > dst[ETH_ALEN+1]='\0' ; > > ip_header = ip_hdr(skb); > tcp_header = tcp_hdr(skb); > eth_header = eth_hdr(skb); > > > memcpy(src , eth_header->h_source , ETH_ALEN ); > memcpy(dst , eth_header->h_dest , ETH_ALEN ); If you do not have an Ethernet packet, this is going to explode. > > return NF_ACCEPT; /* Drop ALL packets */ >} > >/* Initialisation routine */ >int init_module() ^ void >{ > /* Fill in our hook structure */ > nfho.hook = hook_func; /* Handler function */ > > nfho.hooknum = NF_IP_LOCAL_OUT; /* First hook for IPv4 */ > > nfho.pf = PF_INET; > > nfho.priority = NF_IP_PRI_FIRST; /* Make our function first */ > > nf_register_hook(&nfho); > > return 0; >} > >/* Cleanup routine */ >void cleanup_module() ^ void >{ > nf_unregister_hook(&nfho); -- To unsubscribe from this list: send the line "unsubscribe netfilter" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html