From: Stefan Schantl Date: Mon, 17 Apr 2023 13:16:06 +0000 (+0200) Subject: Add support to create bitmap:port based sets X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=55ad25e9a59331d583894b1ccf99270e2246fca6;p=people%2Fstevee%2Fperl-ipset.git Add support to create bitmap:port based sets Signed-off-by: Stefan Schantl --- diff --git a/IPSet.xs b/IPSet.xs index 71c29d9..02a7c40 100644 --- a/IPSet.xs +++ b/IPSet.xs @@ -131,6 +131,9 @@ bool create_set(session, setname, typename, hashsize, maxelem) // Family current is hardcoded to IPv4. int family = NFPROTO_IPV4; + // The range for bitmap:port based sets currently is hardcoded. + const uint16_t range_start = 0; + const uint16_t range_stop = 65535; CODE: // Load everything ipset_load_types(); @@ -152,19 +155,31 @@ bool create_set(session, setname, typename, hashsize, maxelem) goto ERROR; } - r = ipset_session_data_set(session, IPSET_OPT_FAMILY, &family); - if (r < 0) { - goto ERROR; - } - - r = ipset_session_data_set(session, IPSET_OPT_HASHSIZE, &hashsize); - if (r < 0) { - goto ERROR; - } - - r = ipset_session_data_set(session, IPSET_OPT_MAXELEM, &maxelem); - if (r < 0) { - goto ERROR; + if (strcmp(typename, "bitmap:port") == 0) { + r = ipset_session_data_set(session, IPSET_OPT_PORT_FROM, &range_start); + if (r < 0) { + goto ERROR; + } + + r = ipset_session_data_set(session, IPSET_OPT_PORT_TO, &range_stop); + if (r < 0) { + goto ERROR; + } + } else { + r = ipset_session_data_set(session, IPSET_OPT_FAMILY, &family); + if (r < 0) { + goto ERROR; + } + + r = ipset_session_data_set(session, IPSET_OPT_HASHSIZE, &hashsize); + if (r < 0) { + goto ERROR; + } + + r = ipset_session_data_set(session, IPSET_OPT_MAXELEM, &maxelem); + if (r < 0) { + goto ERROR; + } } r = ipset_cmd(session, IPSET_CMD_CREATE, 0);