patch-2.4.27 linux-2.4.27/net/ipv4/netfilter/ipt_helper.c
Next file: linux-2.4.27/net/ipv4/netfilter/ipt_owner.c
Previous file: linux-2.4.27/net/ipv4/netfilter/ipt_ULOG.c
Back to the patch index
Back to the overall index
- Lines: 46
- Date:
2004-08-07 16:26:06.994442928 -0700
- Orig file:
linux-2.4.26/net/ipv4/netfilter/ipt_helper.c
- Orig date:
2004-02-18 05:36:32.000000000 -0800
diff -urN linux-2.4.26/net/ipv4/netfilter/ipt_helper.c linux-2.4.27/net/ipv4/netfilter/ipt_helper.c
@@ -37,17 +37,17 @@
struct ip_conntrack_expect *exp;
struct ip_conntrack *ct;
enum ip_conntrack_info ctinfo;
- int ret = 0;
+ int ret = info->invert;
ct = ip_conntrack_get((struct sk_buff *)skb, &ctinfo);
if (!ct) {
DEBUGP("ipt_helper: Eek! invalid conntrack?\n");
- return 0;
+ return ret;
}
if (!ct->master) {
DEBUGP("ipt_helper: conntrack %p has no master\n", ct);
- return 0;
+ return ret;
}
exp = ct->master;
@@ -67,8 +67,11 @@
DEBUGP("master's name = %s , info->name = %s\n",
exp->expectant->helper->name, info->name);
- ret = !strncmp(exp->expectant->helper->name, info->name,
- strlen(exp->expectant->helper->name)) ^ info->invert;
+ if (info->name[0] == '\0')
+ ret ^= 1;
+ else
+ ret ^= !strncmp(exp->expectant->helper->name, info->name,
+ strlen(exp->expectant->helper->name));
out_unlock:
READ_UNLOCK(&ip_conntrack_lock);
return ret;
@@ -88,10 +91,6 @@
if (matchsize != IPT_ALIGN(sizeof(struct ipt_helper_info)))
return 0;
- /* verify that we actually should match anything */
- if ( strlen(info->name) == 0 )
- return 0;
-
return 1;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)