]> git.ipfire.org Git - thirdparty/ipset.git/commitdiff
Support adding/deleting multiple entries, userspace part.
authorJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Fri, 17 Dec 2010 20:31:12 +0000 (21:31 +0100)
committerJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Fri, 17 Dec 2010 20:31:12 +0000 (21:31 +0100)
Support adding/deleting multiple entries in the userspace part
of the hash:ip,port, hash:ip,port,ip, hash:ip,port,net and
hash:net,port types.

src/ipset_hash_ipport.c
src/ipset_hash_ipportip.c
src/ipset_hash_ipportnet.c
src/ipset_hash_netport.c

index 4b06d5ebf6d71f1356f2274ffd08a5a81c6db075..94bda073aba19da1ce001cf4c22b30db176fccc7 100644 (file)
@@ -79,7 +79,11 @@ static const char hash_ipport_usage[] =
 "del    SETNAME IP,PROTO:PORT\n"
 "test   SETNAME IP,PROTO:PORT\n\n"
 "where depending on the INET family\n"
-"      IP is a valid IPv4 or IPv6 address (or hostname),\n";
+"      IP is a valid IPv4 or IPv6 address (or hostname).\n"
+"      Adding/deleting multiple elements in IP/CIDR or FROM-TO form\n"
+"      is supported for IPv4.\n"
+"      Adding/deleting multiple elements with TCP/UDP port range\n"
+"      is supported both for IPv4 and IPv6.\n";
 
 struct ipset_type ipset_hash_ipport0 = {
        .name = "hash:ip,port",
@@ -89,7 +93,7 @@ struct ipset_type ipset_hash_ipport0 = {
        .dimension = IPSET_DIM_TWO,
        .elem = { 
                [IPSET_DIM_ONE] = { 
-                       .parse = ipset_parse_single_ip,
+                       .parse = ipset_parse_ip4_single6,
                        .print = ipset_print_ip,
                        .opt = IPSET_OPT_IP
                },
@@ -120,11 +124,15 @@ struct ipset_type ipset_hash_ipport0 = {
                        | IPSET_FLAG(IPSET_OPT_MAXELEM)
                        | IPSET_FLAG(IPSET_OPT_TIMEOUT),
                [IPSET_ADD] = IPSET_FLAG(IPSET_OPT_IP)
+                       | IPSET_FLAG(IPSET_OPT_IP_TO)
                        | IPSET_FLAG(IPSET_OPT_PORT)
+                       | IPSET_FLAG(IPSET_OPT_PORT_TO)
                        | IPSET_FLAG(IPSET_OPT_PROTO)
                        | IPSET_FLAG(IPSET_OPT_TIMEOUT),
                [IPSET_DEL] = IPSET_FLAG(IPSET_OPT_IP)
+                       | IPSET_FLAG(IPSET_OPT_IP_TO)
                        | IPSET_FLAG(IPSET_OPT_PORT)
+                       | IPSET_FLAG(IPSET_OPT_PORT_TO)
                        | IPSET_FLAG(IPSET_OPT_PROTO),
                [IPSET_TEST] = IPSET_FLAG(IPSET_OPT_IP)
                        | IPSET_FLAG(IPSET_OPT_PORT)
index 5294da30c8d80aca5c1d1d51ca7fee85b03dca22..cb90152ee0c2a333946abb21c0913e961696d4f1 100644 (file)
@@ -79,7 +79,11 @@ static const char hash_ipportip_usage[] =
 "del    SETNAME IP,PROTO:PORT,IP\n"
 "test   SETNAME IP,PROTO:PORT,IP\n\n"
 "where depending on the INET family\n"
-"      IP are valid IPv4 or IPv6 addresses (or hostnames),\n";
+"      IP is a valid IPv4 or IPv6 address (or hostname).\n"
+"      Adding/deleting multiple elements in IP/CIDR or FROM-TO form\n"
+"      in the first IP component is supported for IPv4.\n"
+"      Adding/deleting multiple elements with TCP/UDP port range\n"
+"      is supported both for IPv4 and IPv6.\n";
 
 struct ipset_type ipset_hash_ipportip0 = {
        .name = "hash:ip,port,ip",
@@ -89,7 +93,7 @@ struct ipset_type ipset_hash_ipportip0 = {
        .dimension = IPSET_DIM_THREE,
        .elem = { 
                [IPSET_DIM_ONE] = { 
-                       .parse = ipset_parse_single_ip,
+                       .parse = ipset_parse_ip4_single6,
                        .print = ipset_print_ip,
                        .opt = IPSET_OPT_IP
                },
@@ -128,12 +132,16 @@ struct ipset_type ipset_hash_ipportip0 = {
                        | IPSET_FLAG(IPSET_OPT_MAXELEM)
                        | IPSET_FLAG(IPSET_OPT_TIMEOUT),
                [IPSET_ADD] = IPSET_FLAG(IPSET_OPT_IP)
+                       | IPSET_FLAG(IPSET_OPT_IP_TO)
                        | IPSET_FLAG(IPSET_OPT_PORT)
+                       | IPSET_FLAG(IPSET_OPT_PORT_TO)
                        | IPSET_FLAG(IPSET_OPT_PROTO)
                        | IPSET_FLAG(IPSET_OPT_IP2)
                        | IPSET_FLAG(IPSET_OPT_TIMEOUT),
                [IPSET_DEL] = IPSET_FLAG(IPSET_OPT_IP)
+                       | IPSET_FLAG(IPSET_OPT_IP_TO)
                        | IPSET_FLAG(IPSET_OPT_PORT)
+                       | IPSET_FLAG(IPSET_OPT_PORT_TO)
                        | IPSET_FLAG(IPSET_OPT_PROTO)
                        | IPSET_FLAG(IPSET_OPT_IP2),
                [IPSET_TEST] = IPSET_FLAG(IPSET_OPT_IP)
index 3c073cd7bfb9488c0ef5f3f6b6f335190be1cf67..ff3a8ec9c33b4d6da6e6c90b452eb3f85101b914 100644 (file)
@@ -80,7 +80,11 @@ static const char hash_ipportnet_usage[] =
 "test   SETNAME IP,PROTO:PORT,IP[/CIDR]\n\n"
 "where depending on the INET family\n"
 "      IP are valid IPv4 or IPv6 addresses (or hostnames),\n"
-"      CIDR is a valid IPv4 or IPv6 CIDR prefix,\n";
+"      CIDR is a valid IPv4 or IPv6 CIDR prefix.\n"
+"      Adding/deleting multiple elements in IP/CIDR or FROM-TO form\n"
+"      in the first IP component is supported for IPv4.\n"
+"      Adding/deleting multiple elements with TCP/UDP port range\n"
+"      is supported both for IPv4 and IPv6.\n";
 
 struct ipset_type ipset_hash_ipportnet0 = {
        .name = "hash:ip,port,net",
@@ -90,7 +94,7 @@ struct ipset_type ipset_hash_ipportnet0 = {
        .dimension = IPSET_DIM_THREE,
        .elem = { 
                [IPSET_DIM_ONE] = { 
-                       .parse = ipset_parse_single_ip,
+                       .parse = ipset_parse_ip4_single6,
                        .print = ipset_print_ip,
                        .opt = IPSET_OPT_IP
                },
@@ -129,13 +133,17 @@ struct ipset_type ipset_hash_ipportnet0 = {
                        | IPSET_FLAG(IPSET_OPT_MAXELEM)
                        | IPSET_FLAG(IPSET_OPT_TIMEOUT),
                [IPSET_ADD] = IPSET_FLAG(IPSET_OPT_IP)
+                       | IPSET_FLAG(IPSET_OPT_IP_TO)
                        | IPSET_FLAG(IPSET_OPT_PORT)
+                       | IPSET_FLAG(IPSET_OPT_PORT_TO)
                        | IPSET_FLAG(IPSET_OPT_PROTO)
                        | IPSET_FLAG(IPSET_OPT_IP2)
                        | IPSET_FLAG(IPSET_OPT_CIDR2)
                        | IPSET_FLAG(IPSET_OPT_TIMEOUT),
                [IPSET_DEL] = IPSET_FLAG(IPSET_OPT_IP)
+                       | IPSET_FLAG(IPSET_OPT_IP_TO)
                        | IPSET_FLAG(IPSET_OPT_PORT)
+                       | IPSET_FLAG(IPSET_OPT_PORT_TO)
                        | IPSET_FLAG(IPSET_OPT_PROTO)
                        | IPSET_FLAG(IPSET_OPT_IP2)
                        | IPSET_FLAG(IPSET_OPT_CIDR2),
index 934162a67ff0c3c41c865f86a424184cef17b6e0..843ef310f7add8d36692816423b681fbc25d1c4f 100644 (file)
@@ -59,7 +59,8 @@ static const char hash_netport_usage[] =
 "test   SETNAME IP[/CIDR],PROTO:PORT\n\n"
 "where depending on the INET family\n"
 "      IP is a valid IPv4 or IPv6 address (or hostname),\n"
-"      CIDR is a valid IPv4 or IPv6 CIDR prefix,\n";
+"      CIDR is a valid IPv4 or IPv6 CIDR prefix.\n"
+"      Adding/deleting multiple elements with TCP/UDP port range supported.\n";
 
 struct ipset_type ipset_hash_netport0 = {
        .name = "hash:net,port",
@@ -101,11 +102,13 @@ struct ipset_type ipset_hash_netport0 = {
                        | IPSET_FLAG(IPSET_OPT_TIMEOUT),
                [IPSET_ADD] = IPSET_FLAG(IPSET_OPT_IP)
                        | IPSET_FLAG(IPSET_OPT_PORT)
+                       | IPSET_FLAG(IPSET_OPT_PORT_TO)
                        | IPSET_FLAG(IPSET_OPT_PROTO)
                        | IPSET_FLAG(IPSET_OPT_TIMEOUT)
                        | IPSET_FLAG(IPSET_OPT_CIDR),
                [IPSET_DEL] = IPSET_FLAG(IPSET_OPT_IP)
                        | IPSET_FLAG(IPSET_OPT_PORT)
+                       | IPSET_FLAG(IPSET_OPT_PORT_TO)
                        | IPSET_FLAG(IPSET_OPT_PROTO)
                        | IPSET_FLAG(IPSET_OPT_CIDR),
                [IPSET_TEST] = IPSET_FLAG(IPSET_OPT_IP)