From: Florian Westphal Date: Wed, 12 Feb 2014 09:27:19 +0000 (+0100) Subject: lib: fix ifname 'physdev:' prefix parsing X-Git-Tag: v6.21~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e8466647b10cf40f03af2c1d8afa44a13b1f74a3;p=thirdparty%2Fipset.git lib: fix ifname 'physdev:' prefix parsing hash:net,iface supports matching on the bridge port as well, but userspace currently doesn't handle it correctly as it passes in 'physdev:eth0' instead of 'eth0'+IPSET_OPT_PHYSDEV. Signed-off-by: Florian Westphal Signed-off-by: Jozsef Kadlecsik --- diff --git a/lib/parse.c b/lib/parse.c index f1c1f0e0..4db872e9 100644 --- a/lib/parse.c +++ b/lib/parse.c @@ -1753,14 +1753,15 @@ ipset_parse_iface(struct ipset_session *session, { struct ipset_data *data; int offset = 0, err = 0; + static const char pdev_prefix[]="physdev:"; assert(session); assert(opt == IPSET_OPT_IFACE); assert(str); data = ipset_session_data(session); - if (STREQ(str, "physdev:")) { - offset = 8; + if (STRNEQ(str, pdev_prefix, strlen(pdev_prefix))) { + offset = strlen(pdev_prefix); err = ipset_data_set(data, IPSET_OPT_PHYSDEV, str); if (err < 0) return err;