From a96e4fca10506462df4ee4035f0f86f09bd9dc34 Mon Sep 17 00:00:00 2001 From: "/C=EU/ST=EU/CN=Jozsef Kadlecsik/emailAddress=kadlec@blackhole.kfki.hu" Date: Mon, 20 Oct 2008 10:00:26 +0000 Subject: ipset 2.4 release userspace changes: - Added KBUILD_OUTPUT support (Sven Wegener) - Fix memory leak in ipset_iptreemap (Sven Wegener) - Fix multiple compiler warnings (Sven Wegener) - ipportiphash, ipportnethash and setlist types added - binding marked as deprecated functionality - element separator token changed to ',' in anticipating IPv6 addresses, old separator tokens are still supported - unnecessary includes removed - ipset does not try to resolve IP addresses when listing the content of sets (default changed) - manpage updated - ChangeLog forked for kernel part kernel part changes: - ipportiphash, ipportnethash and setlist types added - set type modules reworked to avoid code duplication as much as possible, code unification macros - expand_macros Makefile target added to help debugging code unification macros - ip_set_addip_kernel and ip_set_delip_kernel changed from void to int, __ip_set_get_byname and __ip_set_put_byid added for the sake of setlist type - unnecessary includes removed - compatibility fix for kernels >= 2.6.27: semaphore.h was moved from asm/ to linux/ (James King) - ChangeLog forked for kernel part --- ipset_ipmap.c | 56 ++++++++++++++------------------------------------------ 1 file changed, 14 insertions(+), 42 deletions(-) (limited to 'ipset_ipmap.c') diff --git a/ipset_ipmap.c b/ipset_ipmap.c index d628767..f1586bb 100644 --- a/ipset_ipmap.c +++ b/ipset_ipmap.c @@ -19,10 +19,7 @@ #include #include -#include -#include #include -/* #include */ #include #include "ipset.h" @@ -40,8 +37,7 @@ static void create_init(void *data) { - struct ip_set_req_ipmap_create *mydata = - (struct ip_set_req_ipmap_create *) data; + struct ip_set_req_ipmap_create *mydata = data; DP("create INIT"); mydata->netmask = 0xFFFFFFFF; @@ -51,8 +47,7 @@ create_init(void *data) static int create_parse(int c, char *argv[], void *data, unsigned *flags) { - struct ip_set_req_ipmap_create *mydata = - (struct ip_set_req_ipmap_create *) data; + struct ip_set_req_ipmap_create *mydata = data; unsigned int bits; DP("create_parse"); @@ -118,16 +113,12 @@ create_parse(int c, char *argv[], void *data, unsigned *flags) return 1; } -#define ERRSTRLEN 256 - /* Final check; exit if not ok. */ static void create_final(void *data, unsigned int flags) { - struct ip_set_req_ipmap_create *mydata = - (struct ip_set_req_ipmap_create *) data; + struct ip_set_req_ipmap_create *mydata = data; ip_set_ip_t range; - char errstr[ERRSTRLEN]; if (flags == 0) exit_error(PARAMETER_PROBLEM, @@ -157,7 +148,7 @@ create_final(void *data, unsigned int flags) if (flags & OPT_CREATE_NETMASK) { unsigned int mask_bits, netmask_bits; ip_set_ip_t mask; - + if ((mydata->from & mydata->netmask) != mydata->from) exit_error(PARAMETER_PROBLEM, "%s is not a network address according to netmask %d\n", @@ -167,26 +158,14 @@ create_final(void *data, unsigned int flags) mask = range_to_mask(mydata->from, mydata->to, &mask_bits); if (!mask && (mydata->from || mydata->to != 0xFFFFFFFF)) { - strncpy(errstr, ip_tostring_numeric(mydata->from), - ERRSTRLEN-2); - errstr[ERRSTRLEN-1] = '\0'; exit_error(PARAMETER_PROBLEM, - "%s-%s is not a full network (%x)\n", - errstr, - ip_tostring_numeric(mydata->to), mask); + "You have to define a full network with --from" + " and --to if you specify the --network option\n"); } netmask_bits = mask_to_bits(mydata->netmask); - if (netmask_bits <= mask_bits) { - strncpy(errstr, ip_tostring_numeric(mydata->from), - ERRSTRLEN-2); - errstr[ERRSTRLEN-1] = '\0'; exit_error(PARAMETER_PROBLEM, - "%d netmask specifies larger or equal netblock than %s-%s (%d)\n", - netmask_bits, - errstr, - ip_tostring_numeric(mydata->to), - mask_bits); + "%d netmask specifies larger or equal netblock than the network itself\n"); } range = (1<<(netmask_bits - mask_bits)) - 1; } else { @@ -211,8 +190,7 @@ static const struct option create_opts[] = { static ip_set_ip_t adt_parser(unsigned cmd, const char *optarg, void *data) { - struct ip_set_req_ipmap *mydata = - (struct ip_set_req_ipmap *) data; + struct ip_set_req_ipmap *mydata = data; DP("ipmap: %p %p", optarg, data); @@ -229,10 +207,8 @@ adt_parser(unsigned cmd, const char *optarg, void *data) static void initheader(struct set *set, const void *data) { - struct ip_set_req_ipmap_create *header = - (struct ip_set_req_ipmap_create *) data; - struct ip_set_ipmap *map = - (struct ip_set_ipmap *) set->settype->header; + const struct ip_set_req_ipmap_create *header = data; + struct ip_set_ipmap *map = set->settype->header; memset(map, 0, sizeof(struct ip_set_ipmap)); map->first_ip = header->from; @@ -260,8 +236,7 @@ initheader(struct set *set, const void *data) static void printheader(struct set *set, unsigned options) { - struct ip_set_ipmap *mysetdata = - (struct ip_set_ipmap *) set->settype->header; + struct ip_set_ipmap *mysetdata = set->settype->header; printf(" from: %s", ip_tostring(mysetdata->first_ip, options)); printf(" to: %s", ip_tostring(mysetdata->last_ip, options)); @@ -274,8 +249,7 @@ printheader(struct set *set, unsigned options) static void printips_sorted(struct set *set, void *data, size_t len, unsigned options) { - struct ip_set_ipmap *mysetdata = - (struct ip_set_ipmap *) set->settype->header; + struct ip_set_ipmap *mysetdata = set->settype->header; ip_set_ip_t id; for (id = 0; id < mysetdata->sizeid; id++) @@ -289,8 +263,7 @@ printips_sorted(struct set *set, void *data, size_t len, unsigned options) static void saveheader(struct set *set, unsigned options) { - struct ip_set_ipmap *mysetdata = - (struct ip_set_ipmap *) set->settype->header; + struct ip_set_ipmap *mysetdata = set->settype->header; printf("-N %s %s --from %s", set->name, set->settype->typename, @@ -307,8 +280,7 @@ saveheader(struct set *set, unsigned options) static void saveips(struct set *set, void *data, size_t len, unsigned options) { - struct ip_set_ipmap *mysetdata = - (struct ip_set_ipmap *) set->settype->header; + struct ip_set_ipmap *mysetdata = set->settype->header; ip_set_ip_t id; DP("%s", set->name); -- cgit v1.2.3