]> git.ipfire.org Git - thirdparty/ipset.git/commitdiff
Parse port before trying by service name
authorHaw Loeung <haw.loeung@canonical.com>
Wed, 17 Feb 2021 09:15:07 +0000 (10:15 +0100)
committerJozsef Kadlecsik <kadlec@netfilter.org>
Fri, 19 Feb 2021 20:21:24 +0000 (21:21 +0100)
This improves performance for loading IP sets using port numbers,
especially large ones.

Signed-off-by: Jozsef Kadlecsik <kadlec@netfilter.org>
lib/parse.c

index 31a619db9633cfa61c8bd6485f47b6219a1ea6fa..f3f2d113457af102d76c2c022029caa0426b66fc 100644 (file)
@@ -319,11 +319,11 @@ ipset_parse_port(struct ipset_session *session,
        assert(opt == IPSET_OPT_PORT || opt == IPSET_OPT_PORT_TO);
        assert(str);
 
-       if (parse_portname(session, str, &port, proto) == 0) {
+       if (string_to_u16(session, str, &port) == 0) {
                return ipset_session_data_set(session, opt, &port);
        }
        /* Error is stored as warning in session report */
-       if (string_to_u16(session, str, &port) == 0) {
+       if (parse_portname(session, str, &port, proto) == 0) {
                /* No error, so reset false error messages */
                ipset_session_report_reset(session);
                return ipset_session_data_set(session, opt, &port);