From e8466647b10cf40f03af2c1d8afa44a13b1f74a3 Mon Sep 17 00:00:00 2001 From: Florian Westphal Date: Wed, 12 Feb 2014 10:27:19 +0100 Subject: 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 --- lib/parse.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'lib/parse.c') diff --git a/lib/parse.c b/lib/parse.c index f1c1f0e..4db872e 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; -- cgit v1.2.3