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: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=355e5495bc3d0d6c90a2dde2f61f35e1a9125a3a;p=ipset Support protocol numbers as well, not only protocol names --- diff --git a/lib/parse.c b/lib/parse.c index 65fddd4..af2168e 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);