On Tue, Jul 13, 2010 at 02:18:26PM +0800, Changli Gao wrote: > On Tue, Jul 13, 2010 at 8:11 AM, Samuel Ortiz <sameo@xxxxxxxxxxxxxxx> wrote: > > > > The userspace notification Xtables target sends a netlink notification > > whenever a packet hits the target. Notifications have a label attribute > > for userspace to match it against a previously set rule. The rules also > > take a --all option to switch between sending a notification for all > > packets or for the first one only. > > Userspace can also send a netlink message to toggle this switch while the > > target is in place. This target uses the nefilter netlink framework. > > > > This target combined with various matches (quota, rateest, etc..) allows > > userspace to make decisions on interfaces handling. One could for example > > decide to switch between power saving modes depending on estimated rate > > thresholds. > > > > It much like the following iptables rules. > > iptables -N log_and_drop > iptables -A log_and_drop -j NFLOG --nflog-group 1 --nflog-prefix "log_and_drop" > iptables -A log_and_drop -j DROP > > ... > iptables ... -m quota --quota-bytes 20000 -j log_and_drop > ... We'd still be missing the possibility of having only the first packet logged, and we'd have to also send an initial netlink message to switch the copy_mode to COPY_NONE. We're not interested in the actual packet, but just by the match hit. I know it's not big deal after all, I'm just trying to have one simple target for that simple task of notifying userspace of a match hit. > > +static unsigned int nfnotif_tg_target(struct sk_buff *skb, > > + const struct xt_action_param *par) > > +{ > > + const struct nfnotif_tg_info *info = par->targinfo; > > + > > + BUG_ON(!info->notif); > > + > > + if (!info->notif->send_notif) > > + return XT_CONTINUE; > > + > > + pr_debug("Sending notification for %s\n", info->label); > > + > > + schedule_work(&info->notif->work); > > + > > Why do you use another kernel activity: kernel thread? netlink > messages can be sent in atomic context. That's right, I should have used the ATOMIC gfp flags from my sending routine. I'll fix that with my next revision of the patch. Thanks for the review. Cheers, Samuel. -- Intel Open Source Technology Centre http://oss.intel.com/ -- 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