]> granicus.if.org Git - ipset/commitdiff
Add ipset_parse_tcpudp_port function
authorJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Fri, 17 Dec 2010 20:26:43 +0000 (21:26 +0100)
committerJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Fri, 17 Dec 2010 20:26:43 +0000 (21:26 +0100)
Add new parser function to parse TCP/UDP port name, number, or range of them.

include/libipset/parse.h
lib/parse.c

index 2e3f8a8764bb6c2ce850237ae8bc0f54062ca460..e87a60d87144201ecea23cb5eb767af5bb1e5ef6 100644 (file)
@@ -26,6 +26,9 @@ extern int ipset_parse_ether(struct ipset_session *session,
 extern int ipset_parse_port(struct ipset_session *session,
                            enum ipset_opt opt, const char *str,
                            const char *proto);
+extern int ipset_parse_tcpudp_port(struct ipset_session *session,
+                                  enum ipset_opt opt, const char *str,
+                                  const char *proto);
 extern int ipset_parse_tcp_port(struct ipset_session *session,
                                enum ipset_opt opt, const char *str);
 extern int ipset_parse_single_tcp_port(struct ipset_session *session,
index 08e3d7c0052e00e3fe0e4f1e36470fc01e2241d8..fa8a4f7af76ebea8e1dc9977471ddc2890155d84 100644 (file)
@@ -244,20 +244,21 @@ ipset_parse_port(struct ipset_session *session,
 }
 
 /**
- * ipset_parse_tcp_port - parse TCP port name, number, or range of them
+ * ipset_parse_tcpudp_port - parse TCP/UDP port name, number, or range of them
  * @session: session structure
  * @opt: option kind of the data
  * @str: string to parse
+ * @proto: TCP|UDP
  *
- * Parse string as a TCP port name or number or range of them
+ * Parse string as a TCP/UDP port name or number or range of them
  * separated by a dash. The parsed port numbers are stored
  * in the data blob of the session.
  *
  * Returns 0 on success or a negative error code.
  */
 int
-ipset_parse_tcp_port(struct ipset_session *session,
-                    enum ipset_opt opt, const char *str)
+ipset_parse_tcpudp_port(struct ipset_session *session,
+                       enum ipset_opt opt, const char *str, const char *proto)
 {
        char *a, *saved, *tmp;
        int err = 0;
@@ -276,17 +277,36 @@ ipset_parse_tcp_port(struct ipset_session *session,
        if (a != NULL) {
                /* port-port */
                *a++ = '\0';
-               err = ipset_parse_port(session, IPSET_OPT_PORT_TO, a, "TCP");
+               err = ipset_parse_port(session, IPSET_OPT_PORT_TO, a, proto);
                if (err)
                        goto error;
        }
-       err = ipset_parse_port(session, opt, tmp, "TCP");
+       err = ipset_parse_port(session, opt, tmp, proto);
 
 error:
        free(saved);
        return err;
 }
 
+/**
+ * ipset_parse_tcp_port - parse TCP port name, number, or range of them
+ * @session: session structure
+ * @opt: option kind of the data
+ * @str: string to parse
+ *
+ * Parse string as a TCP port name or number or range of them
+ * separated by a dash. The parsed port numbers are stored
+ * in the data blob of the session.
+ *
+ * Returns 0 on success or a negative error code.
+ */
+int
+ipset_parse_tcp_port(struct ipset_session *session,
+                    enum ipset_opt opt, const char *str)
+{
+       return ipset_parse_tcpudp_port(session, opt, str, "TCP");
+}
+
 /**
  * ipset_parse_single_tcp_port - parse TCP port name or number
  * @session: session structure
@@ -516,7 +536,7 @@ ipset_parse_proto_port(struct ipset_session *session,
                        goto error;
        }
 parse_port:
-       err = ipset_parse_port(session, opt, tmp, proto);
+       err = ipset_parse_tcpudp_port(session, opt, tmp, proto);
 
 error:
        free(saved);