From: Jozsef Kadlecsik Date: Mon, 5 Nov 2012 16:01:41 +0000 (+0100) Subject: Support protocol numbers as well, not only protocol names X-Git-Tag: v6.15~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=355e5495bc3d0d6c90a2dde2f61f35e1a9125a3a;p=thirdparty%2Fipset.git Support protocol numbers as well, not only protocol names --- diff --git a/lib/parse.c b/lib/parse.c index 65fddd4c..af2168eb 100644 --- a/lib/parse.c +++ b/lib/parse.c @@ -440,9 +440,15 @@ ipset_parse_proto(struct ipset_session *session, protoent = getprotobyname(strcasecmp(str, "icmpv6") == 0 ? "ipv6-icmp" : str); - if (protoent == NULL) - return syntax_err("cannot parse '%s' " - "as a protocol name", str); + if (protoent == NULL) { + uint8_t protonum; + int err; + + if (!((err = string_to_u8(session, str, &protonum) == 0) && + (protoent = getprotobynumber(protonum)) != NULL)) + return syntax_err("cannot parse '%s' " + "as a protocol", str); + } proto = protoent->p_proto; if (!proto) return syntax_err("Unsupported protocol '%s'", str);