[NEW TARGET] target for modifying conntrack timeout value

Richard richard at o-matrix.org
Wed Dec 15 02:16:23 CET 2004


> Some comments:
> 
> a) I think that you should implement this thing as a match instead of a
> target. Have a look at ipt_limit. It isn't actually matching anything
> but, for example, you could use it together with nat targets. A match
> gives you more flexibility.
Not sure that I follow you. This target changes the conntrack expire timer.
For example, the default timeout for udp stream is 180 seconds. If I want to
make it 3600 for sip (udp 5060) traffic, I would do,
iptables -t mangle -A INPUT -p UDP --dport 5060 -j CTEXPIRE --ctexpire-set
3600
iptables -t mangle -A OUTPUT -p UDP --sport 5060 -j CTEXPIRE --ctexpire-set
3600


> b) About source code:
> 
> +       if (!is_confirmed(ct)) {
>            ^^^
> remove this `if' condition. ip_ct_refresh worries about about this for
> you and makes the thing more simple.
In order to increase or decrease the expire value, we need to get the
current expire value. If it is !is_confirmed, the ct->timeout value is the
real expire value. Otherwise, it is jiffies + expire value. Is there a
function to get this value without checking is_confirmed?


> c) In checkentry:
> 
> +       if (info->mode > IPT_CTEXPIRE_MAXMODE) {
> +               printk(KERN_WARNING "CTEXPIRE: invalid or unknown Mode
> %u\n",
> +                       info->mode);
> +               return 0;
> +       }
> + [...]
> +
> +       if (info->expires * HZ < info->expires) {
> +               /* if user specified value is too big, *HZ can overflow
> the counter
> +               */
> +               printk(KERN_WARNING "CTEXPIRE: expire value too big,
> will overflow counter: %ld\n", info->expires);
> +               return 0;
> +       }
> 
> You should do those checkings in user space. Those error must be handle
> in iptables, not in kernel.
It is already done in user space. It is probably redundant doing the same
thing here. I will drop it.

> A minor aesthetic comment, a line must fit 80 columns, split longer
> lines in two.
It will be changed.

Thanks for your comments. Looking forward to your next email.

Richard





More information about the netfilter-devel mailing list