From: Jozsef Kadlecsik Date: Fri, 17 Dec 2010 20:31:12 +0000 (+0100) Subject: Support adding/deleting multiple entries, userspace part. X-Git-Tag: v5.0~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=984023490f88346e58db68d77489e67b0c6c4ce8;p=thirdparty%2Fipset.git Support adding/deleting multiple entries, userspace part. 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. --- diff --git a/src/ipset_hash_ipport.c b/src/ipset_hash_ipport.c index 4b06d5eb..94bda073 100644 --- a/src/ipset_hash_ipport.c +++ b/src/ipset_hash_ipport.c @@ -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) diff --git a/src/ipset_hash_ipportip.c b/src/ipset_hash_ipportip.c index 5294da30..cb90152e 100644 --- a/src/ipset_hash_ipportip.c +++ b/src/ipset_hash_ipportip.c @@ -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) diff --git a/src/ipset_hash_ipportnet.c b/src/ipset_hash_ipportnet.c index 3c073cd7..ff3a8ec9 100644 --- a/src/ipset_hash_ipportnet.c +++ b/src/ipset_hash_ipportnet.c @@ -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), diff --git a/src/ipset_hash_netport.c b/src/ipset_hash_netport.c index 934162a6..843ef310 100644 --- a/src/ipset_hash_netport.c +++ b/src/ipset_hash_netport.c @@ -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)