Hi, In "writing netfilter module", by JAN, there is a inconsistancy in section 2.5 named "Point of decision". Here a match function is prototyped as , struct bool ipaddr_mt(const struct sk_buff *skb, struct xt_match_param *par); Now there is no xt_match_param in netfilter.h. The closest thing is 'struct xt_mtchk_param'. which is defined as, struct xt_mtchk_param { struct net *net; const char *table; const void *entryinfo; const struct xt_match *match; void *matchinfo; unsigned int hook_mask; u_int8_t family; }; So at first i thought i can just replace it with xt_mtchk_param. But the problem is the text reads following lines which can not be right if i replace xt_match_param with xt_mtchk_param. par->in and par->out supposed to point to IN or OUT network devices. but as you can see there is no such fields in xt_mtchk_param. These struct net_device *in,out fields are inside struct xt_action_param. struct xt_action_param{ ........... struct net_device *in,*out; ........... } After subsequent reading i understood, it should be struct xt_action_param in the match function's prototype. so the correct prototype should be, static bool ipaddr_mt(const struct sk_buff *skb, struct xt_action_param *par); So it should be updated so that noobs like me does not get confused. cheers aft -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html