From 355e5495bc3d0d6c90a2dde2f61f35e1a9125a3a Mon Sep 17 00:00:00 2001 From: Jozsef Kadlecsik Date: Mon, 5 Nov 2012 17:01:41 +0100 Subject: Support protocol numbers as well, not only protocol names --- lib/parse.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'lib') 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); -- cgit v1.2.3