Re: [PATCH 1/2] netlink: netlink_dump_start may take data pointer for callbacks

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: pablo@xxxxxxxxxxxxx
Date: Fri, 24 Feb 2012 23:14:07 +0100

> From: Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx>
> 
> This patch modifies the netlink_dump_start function to take one
> generic pointer to data. This pointer can be used inside the
> dump() and done() callbacks via cb->data.
> 
> Netfilter is going to use this patch to provide filtered dumps
> to user-space. This is specifically interesting in ctnetlink that
> may handle lots of conntrack entries. We can save precious
> cycles by skipping the conversion to TLV format of conntrack
> entries that are not interesting for user-space.
> 
> More specifically, ctnetlink will include one operation to allow
> to filter the dumping of conntrack entries by ctmark values.
> 
> Signed-off-by: Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx>

This isn't really your fault but netlink_dump_start() has an
enormous number of arguments.

Several of them are zero or NULL in all except one special situation.

An entire argument is a lot of overhead for one situation to impose on
all the others.

I have no objection to the data callback scheme, it's just that
the argument list of this interface is getting out of control.

Usually, in situations like this, we have some control structure
that holds all the control state and we pass that in instead.

	struct netlink_dump_control c = { .dump = dump, .done = done, ... };

	netlink_dump_start(..., &c);

It could be perhaps used here to get things back under control.
--
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


[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux