* ipset v6.latest bugs? @ 2011-04-25 11:55 Mr Dash Four 2011-04-25 20:03 ` Jozsef Kadlecsik 0 siblings, 1 reply; 12+ messages in thread From: Mr Dash Four @ 2011-04-25 11:55 UTC (permalink / raw) To: netfilter@vger.kernel.org I think I have stumbled upon a couple of ipset bugs. Here is what happens: [root@test1 ~]# ipset -N test hash:ip [root@test1 ~]# ipset -L test Name: test Type: hash:ip Header: family inet hashsize 1024 maxelem 65536 Size in memory: 16512 References: 0 Members: [root@test1 ~]# ipset -A test 10.4.0.0-10.7.255.255 ipset v6.4: Element cannot be added to the set: it's already added [root@test1 ~]# ipset -F test [root@test1 ~]# ipset -L test Name: test Type: hash:ip Header: family inet hashsize 2048 maxelem 65536 Size in memory: 32896 References: 0 Members: [root@test1 ~]# ipset -A test 10.4.0.0-10.7.255.255 ipset v6.4: Element cannot be added to the set: it's already added [root@test1 ~]# ipset -F test [root@test1 ~]# ipset -L test Name: test Type: hash:ip Header: family inet hashsize 4096 maxelem 65536 Size in memory: 65664 References: 0 Members: [root@test1 ~]# ipset -X test [root@test1 ~]# ipset -N test hash:ip [root@test1 ~]# ipset -L test Name: test Type: hash:ip Header: family inet hashsize 1024 maxelem 65536 Size in memory: 16512 References: 0 Members: [root@test1 ~]# ipset -A test 10.4.0.0/14 ipset v6.4: Element cannot be added to the set: it's already added [root@test1 ~]# ipset -F test [root@test1 ~]# ipset -L test Name: test Type: hash:ip Header: family inet hashsize 2048 maxelem 65536 Size in memory: 32896 References: 0 Members: [root@test1 ~]# ipset -A test 10.4.0.0/14 ipset v6.4: Element cannot be added to the set: it's already added [root@test1 ~]# ipset -F test [root@test1 ~]# ipset -L test Name: test Type: hash:ip Header: family inet hashsize 4096 maxelem 65536 Size in memory: 65664 References: 0 Members: Given the above, the following concern me: 1. The maximum number of elements in hash:ip set is 64k, but when I try to add more than that I am warned that the element is "already added". The error message displayed is misleading as I am not attempting to add an element "already added", but exceeding the range of elements permitted in this type of set. I think the error message should reflect that. This, presumably, happens when there is an overlap, which usually occurs when, for example, integer is used instead of long. 2. There seems to be a huge memory leak - don't know whether this is as a result of the error in 1 above. When I add elements to hash:ip set and then clear the entire set, the "Size in memory" value of the set doubles every time I do that (16512 initially, then 32896, 65664 ...). I have tried a similar operation with hash:net set, but there is no memory leak there at all. 3. Don't know whether this is a bug, but thought to report it too - hash:net, different to hash:ip set, seems unable to accept ip ranges (10.4.0.0-10.7.255.255 in my example above) - I get an error every time I attempt this operation. Could this behaviour be corrected and I am allowed to specify ranges please? I use the geoip database and all ip addresses there are specified as ranges. I cannot use hash:ip as, by its very definition, the set is only limited to 64k elements (when ip range is specified, ipset uses internal "conversion" and adds each ip address from the specified range as a separate element). To use some sort of conversion algorithm to change these ip ranges to a cidr-type address (as this is what hash:net insists on) is going to take a lot of execution time and additional computer resources. 4. The "old" format of iptreemap set is automatically converted to an hash:ip set. Why? I think that is wrong, given that such a set could contain, in all probability, more than 64k individual ip addresses and when that limit is reached no elements could then be added. I think it makes sense if a "conversion" from the old-style format to the new one is attempted, to be done properly (or not attempted at all) - the only set, which could possibly be able to handle "old-style" iptreemap sets is hash:net, but, as it stands, it does not accept ipranges (see 3 above). As a footnote to this, the ipset I used is the latest snapshot from yesterday, 24 April as available from kernel.org (for the ipset kernel part) and ipset 6.4 (userspace - stripping the kernel part). ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ipset v6.latest bugs? 2011-04-25 11:55 ipset v6.latest bugs? Mr Dash Four @ 2011-04-25 20:03 ` Jozsef Kadlecsik 2011-04-25 20:36 ` Mr Dash Four 0 siblings, 1 reply; 12+ messages in thread From: Jozsef Kadlecsik @ 2011-04-25 20:03 UTC (permalink / raw) To: Mr Dash Four; +Cc: netfilter@vger.kernel.org On Mon, 25 Apr 2011, Mr Dash Four wrote: > I think I have stumbled upon a couple of ipset bugs. Here is what happens: > > [root@test1 ~]# ipset -N test hash:ip > [root@test1 ~]# ipset -L test > Name: test > Type: hash:ip > Header: family inet hashsize 1024 maxelem 65536 > Size in memory: 16512 > References: 0 > Members: > [root@test1 ~]# ipset -A test 10.4.0.0-10.7.255.255 > ipset v6.4: Element cannot be added to the set: it's already added > [root@test1 ~]# ipset -F test > [root@test1 ~]# ipset -L test > Name: test > Type: hash:ip > Header: family inet hashsize 2048 maxelem 65536 > Size in memory: 32896 > References: 0 > Members: > [root@test1 ~]# ipset -A test 10.4.0.0-10.7.255.255 > ipset v6.4: Element cannot be added to the set: it's already added > [root@test1 ~]# ipset -F test > [root@test1 ~]# ipset -L test > Name: test > Type: hash:ip > Header: family inet hashsize 4096 maxelem 65536 > Size in memory: 65664 > References: 0 > Members: > [root@test1 ~]# ipset -X test > [root@test1 ~]# ipset -N test hash:ip > [root@test1 ~]# ipset -L test > Name: test > Type: hash:ip > Header: family inet hashsize 1024 maxelem 65536 > Size in memory: 16512 > References: 0 > Members: > [root@test1 ~]# ipset -A test 10.4.0.0/14 > ipset v6.4: Element cannot be added to the set: it's already added > [root@test1 ~]# ipset -F test > [root@test1 ~]# ipset -L test > Name: test > Type: hash:ip > Header: family inet hashsize 2048 maxelem 65536 > Size in memory: 32896 > References: 0 > Members: > [root@test1 ~]# ipset -A test 10.4.0.0/14 > ipset v6.4: Element cannot be added to the set: it's already added > [root@test1 ~]# ipset -F test > [root@test1 ~]# ipset -L test > Name: test > Type: hash:ip > Header: family inet hashsize 4096 maxelem 65536 > Size in memory: 65664 > References: 0 > Members: > > > Given the above, the following concern me: > > 1. The maximum number of elements in hash:ip set is 64k, but when I try to add > more than that I am warned that the element is "already added". The error > message displayed is misleading as I am not attempting to add an element > "already added", but exceeding the range of elements permitted in this type of > set. I think the error message should reflect that. This, presumably, happens > when there is an overlap, which usually occurs when, for example, integer is > used instead of long. The default hash size is relatively small: 1024. Therefore it's exhausted quite fast when adding so many elements and the hash type tries to solve the issue by doubling the hash. However, with the given input you use, it is not taken into account that some of the first elements are already successfully added to the set, and after resizing, the adding starts with the first element again. That is why it fails with a misleading error message. It's a non-critical bug, I'll fix it this week. > 2. There seems to be a huge memory leak - don't know whether this is as a > result of the error in 1 above. When I add elements to hash:ip set and then > clear the entire set, the "Size in memory" value of the set doubles every time > I do that (16512 initially, then 32896, 65664 ...). I have tried a similar > operation with hash:net set, but there is no memory leak there at all. No, there's no memory leak there: if you check the list of the elements you can see that more and more elements could successfully be added to the growing hash. > 3. Don't know whether this is a bug, but thought to report it too - hash:net, > different to hash:ip set, seems unable to accept ip ranges > (10.4.0.0-10.7.255.255 in my example above) - I get an error every time I > attempt this operation. Could this behaviour be corrected and I am allowed to > specify ranges please? No, because what would be the network you'd want to add to the set then? Every /24 in the given range? Or every /16? Or the set type should convert the range to a network and add that to the set? And if that can't be covered by one network, then add a combination of networks which cover the range exactly? > I use the geoip database and all ip addresses there are specified as ranges. I > cannot use hash:ip as, by its very definition, the set is only limited to 64k > elements (when ip range is specified, ipset uses internal "conversion" and > adds each ip address from the specified range as a separate element). To use > some sort of conversion algorithm to change these ip ranges to a cidr-type > address (as this is what hash:net insists on) is going to take a lot of > execution time and additional computer resources. > > 4. The "old" format of iptreemap set is automatically converted to an hash:ip > set. Why? I think that is wrong, given that such a set could contain, in all > probability, more than 64k individual ip addresses and when that limit is > reached no elements could then be added. Hm, iptreemap should have been limited to 64k elements... That was an error on my part, that I forgot to limit that type. hash:ip type allows more than 64k elements, when defined with a non-default "maxelem" parameter. > I think it makes sense if a "conversion" from the old-style format to the new > one is attempted, to be done properly (or not attempted at all) - the only > set, which could possibly be able to handle "old-style" iptreemap sets is > hash:net, but, as it stands, it does not accept ipranges (see 3 above). > > As a footnote to this, the ipset I used is the latest snapshot from yesterday, > 24 April as available from kernel.org (for the ipset kernel part) and ipset > 6.4 (userspace - stripping the kernel part). Best regards, Jozsef - E-mail : kadlec@blackhole.kfki.hu, kadlec@mail.kfki.hu PGP key : http://www.kfki.hu/~kadlec/pgp_public_key.txt Address : KFKI Research Institute for Particle and Nuclear Physics H-1525 Budapest 114, POB. 49, Hungary ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ipset v6.latest bugs? 2011-04-25 20:03 ` Jozsef Kadlecsik @ 2011-04-25 20:36 ` Mr Dash Four 2011-04-25 21:51 ` Jozsef Kadlecsik 0 siblings, 1 reply; 12+ messages in thread From: Mr Dash Four @ 2011-04-25 20:36 UTC (permalink / raw) To: Jozsef Kadlecsik; +Cc: netfilter@vger.kernel.org > It's a non-critical bug, I'll fix it this week. > OK, thanks. >> 2. There seems to be a huge memory leak - don't know whether this is as a >> result of the error in 1 above. When I add elements to hash:ip set and then >> clear the entire set, the "Size in memory" value of the set doubles every time >> I do that (16512 initially, then 32896, 65664 ...). I have tried a similar >> operation with hash:net set, but there is no memory leak there at all. >> > > No, there's no memory leak there: if you check the list of the elements > you can see that more and more elements could successfully be added to the > growing hash. > Yeah, but the set is empty! It is flushed, so why is it that after the set is cleared (and there are no elements in that set!), it still occupies 4 times as much memory it had initially with the same number of elements, i.e. zero? If this isn't a memory leak it is a very bad practice I would think. I have just (tried) to add a single /14 net, what's going to happen if I add more, much more to it, and then flush the entire set? Would it be still occupying that amount of memory then? >> 3. Don't know whether this is a bug, but thought to report it too - hash:net, >> different to hash:ip set, seems unable to accept ip ranges >> (10.4.0.0-10.7.255.255 in my example above) - I get an error every time I >> attempt this operation. Could this behaviour be corrected and I am allowed to >> specify ranges please? >> > > No, because what would be the network you'd want to add to the set then? > My understanding of hash:net is that it could have various subnets registered there; 10.0.4.0/14, 192.1.10.0/24 etc. So, instead of adding these by specifying the cidr addresses would it be possible to specify their ranges - "10.4.0.0-10.7.255.255" and "192.1.10.0-192.1.10.255" in this case? I indicated the reasons for this in my previous post. > Every /24 in the given range? Or every /16? Or the set type should convert > the range to a network and add that to the set? And if that can't be > covered by one network, then add a combination of networks which cover the > range exactly? > If there are "overlapping" cidr ranges, like with 10.0.0.0-10.0.0.9 (which, in cidr terms, is "10.0.0.0/29" and "10.0.0.8/31") then obviously there will be two elements added - "10.0.0.0/29" and "10.0.0.8/31", so I do not understand where the problem is? >> 4. The "old" format of iptreemap set is automatically converted to an hash:ip >> set. Why? I think that is wrong, given that such a set could contain, in all >> probability, more than 64k individual ip addresses and when that limit is >> reached no elements could then be added. >> > > Hm, iptreemap should have been limited to 64k elements... From my understanding, iptree has this limitation. iptreemap is like "hash:net on steroids" :-) (if my understanding of hash:net is correct, of course) - I can register any subnet from any subnet range (this is the primary reason I use it for storing these, seemingly random, net ranges from the geoip database) - it is perfect for the job, save for the initial loading time, and its performance is also superb. > That was an > error on my part, that I forgot to limit that type. > > hash:ip type allows more than 64k elements, when defined with a > non-default "maxelem" parameter. > So, for the number of disparate net ranges I pick from the geoip database (about 30k ranges, not single ip addresses!) what type of set should I choose then and can I also specify ip ranges instead of using the cidr ip address notation? ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ipset v6.latest bugs? 2011-04-25 20:36 ` Mr Dash Four @ 2011-04-25 21:51 ` Jozsef Kadlecsik 2011-04-26 0:38 ` Mr Dash Four 0 siblings, 1 reply; 12+ messages in thread From: Jozsef Kadlecsik @ 2011-04-25 21:51 UTC (permalink / raw) To: Mr Dash Four; +Cc: netfilter@vger.kernel.org On Mon, 25 Apr 2011, Mr Dash Four wrote: > > It's a non-critical bug, I'll fix it this week. > > > OK, thanks. > > > > 2. There seems to be a huge memory leak - don't know whether this is as a > > > result of the error in 1 above. When I add elements to hash:ip set and > > > then > > > clear the entire set, the "Size in memory" value of the set doubles every > > > time > > > I do that (16512 initially, then 32896, 65664 ...). I have tried a similar > > > operation with hash:net set, but there is no memory leak there at all. > > > > No, there's no memory leak there: if you check the list of the elements you > > can see that more and more elements could successfully be added to the > > growing hash. > > > Yeah, but the set is empty! > > It is flushed, so why is it that after the set is cleared (and there are no > elements in that set!), it still occupies 4 times as much memory it had > initially with the same number of elements, i.e. zero? If this isn't a memory > leak it is a very bad practice I would think. Hashes are never shrunk. The hash was initiated with the size 1024. Then it was doubled, again and again. Even after deleting all the elements, the base structures are there, emptied, ready to occupy new elements. > I have just (tried) to add a single /14 net, what's going to happen if I add > more, much more to it, and then flush the entire set? Would it be still > occupying that amount of memory then? Even if you flush the set, there's a real difference in memory usage between having an empty set with hash size 1024 or say 16384. If you don't need a large set anymore, swap it with a smaller one. > > > 3. Don't know whether this is a bug, but thought to report it too - > > > hash:net, > > > different to hash:ip set, seems unable to accept ip ranges > > > (10.4.0.0-10.7.255.255 in my example above) - I get an error every time I > > > attempt this operation. Could this behaviour be corrected and I am allowed > > > to > > > specify ranges please? > > > > No, because what would be the network you'd want to add to the set then? > My understanding of hash:net is that it could have various subnets registered > there; 10.0.4.0/14, 192.1.10.0/24 etc. So, instead of adding these by > specifying the cidr addresses would it be possible to specify their ranges - > "10.4.0.0-10.7.255.255" and "192.1.10.0-192.1.10.255" in this case? I > indicated the reasons for this in my previous post. > > > Every /24 in the given range? Or every /16? Or the set type should convert > > the range to a network and add that to the set? And if that can't be covered > > by one network, then add a combination of networks which cover the range > > exactly? > > > If there are "overlapping" cidr ranges, like with 10.0.0.0-10.0.0.9 (which, in > cidr terms, is "10.0.0.0/29" and "10.0.0.8/31") then obviously there will be > two elements added - "10.0.0.0/29" and "10.0.0.8/31", so I do not understand > where the problem is? The problem is that at some point the conversion has to be done. It can be done before feeding the data to ipset too. > > > 4. The "old" format of iptreemap set is automatically converted to an > > > hash:ip > > > set. Why? I think that is wrong, given that such a set could contain, in > > > all > > > probability, more than 64k individual ip addresses and when that limit is > > > reached no elements could then be added. > > > > > > > Hm, iptreemap should have been limited to 64k elements... > From my understanding, iptree has this limitation. iptreemap is like "hash:net > on steroids" :-) (if my understanding of hash:net is correct, of course) - I > can register any subnet from any subnet range (this is the primary reason I > use it for storing these, seemingly random, net ranges from the geoip > database) - it is perfect for the job, save for the initial loading time, and > its performance is also superb. hash:net and iptreemap are quite different. Let's look at 10.1.0.0/16: with hash:net that is a single element, interpreted as a network and matching all elements in it. In iptreemap, that's 65536 different, individual IP addresses. > > That was an error on my part, that I forgot to limit that type. > > > > hash:ip type allows more than 64k elements, when defined with a non-default > > "maxelem" parameter. > > > So, for the number of disparate net ranges I pick from the geoip database > (about 30k ranges, not single ip addresses!) what type of set should I choose > then and can I also specify ip ranges instead of using the cidr ip address > notation? Convert the ranges to networks and use a hash:net type of set. There are countless tools to do the conversion. I see that automatic input conversion could be a useful feature in ipset but at least for a few weeks I'll not be able to deal with it. Best regards, Jozsef - E-mail : kadlec@blackhole.kfki.hu, kadlec@mail.kfki.hu PGP key : http://www.kfki.hu/~kadlec/pgp_public_key.txt Address : KFKI Research Institute for Particle and Nuclear Physics H-1525 Budapest 114, POB. 49, Hungary ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ipset v6.latest bugs? 2011-04-25 21:51 ` Jozsef Kadlecsik @ 2011-04-26 0:38 ` Mr Dash Four 2011-04-26 13:57 ` Jozsef Kadlecsik 0 siblings, 1 reply; 12+ messages in thread From: Mr Dash Four @ 2011-04-26 0:38 UTC (permalink / raw) To: Jozsef Kadlecsik; +Cc: netfilter@vger.kernel.org [-- Attachment #1: Type: text/plain, Size: 3871 bytes --] >> Yeah, but the set is empty! >> >> It is flushed, so why is it that after the set is cleared (and there are no >> elements in that set!), it still occupies 4 times as much memory it had >> initially with the same number of elements, i.e. zero? If this isn't a memory >> leak it is a very bad practice I would think. >> > > Hashes are never shrunk. The hash was initiated with the size 1024. Then > it was doubled, again and again. Even after deleting all the elements, the > base structures are there, emptied, ready to occupy new elements. > Right! OK, I just realised that the has value has grown as well, thus increasing the memory footprint, which is fair enough i suppose. I also assumed that the hash value could double up indefinitely until the maxelem is reached, but that turned out not to be the case - the hash value doubled up just once: [root@test1 ~]# ipset -N test hash:ip maxelem 262144 [root@test1 ~]# ipset -A test 10.4.0.0-10.7.255.255 ipset v6.4: Element cannot be added to the set: it's already added [root@test1 ~]# ipset -F test [root@test1 ~]# ipset -L test Name: test Type: hash:ip Header: family inet hashsize 2048 maxelem 262144 Size in memory: 32896 References: 0 Members: [root@test1 ~]# Is this intentional? Performing the same set of statements as in my initial post, but with maxelem 262144 (the number of ip addresses in that range) as well as hashsize set to the same number produces no errors and after "flush" the hash set uses the same memory footprint as when there were no elements stored there. > If you don't need a large set anymore, swap it with a smaller one. > What happens if this set is used in iptables statements, would this work? > The problem is that at some point the conversion has to be done. > It can be done before feeding the data to ipset too. > So you think it is a good idea for everybody out there using ipset to get some sort of conversion utility so that hash:net is utilised in that manner then? Wouldn't it be better if you could adapt ipset and make it behave the same way as it currently does with hash:ip type set in terms of specifying members? The same way as you did with specifying port ranges as well, not to mention that in versions 4+ that used to also be the case. The hash:net type set is the only exception in the whole range of sets on offer! > hash:net and iptreemap are quite different. Let's look at 10.1.0.0/16: > with hash:net that is a single element, interpreted as a network and > matching all elements in it. In iptreemap, that's 65536 different, > individual IP addresses. > ipset -L on a iptreemap type set tells different - it contains a single element - 10.1.0.0/16 - and that's it! It is even better because I could use both forms - cidr and ranges alike - and it shows me the ip address ranges when I list the actual set. In that respect iptreemap's implementation is much better than what currently exists with hash:net set in 6.4! > Convert the ranges to networks and use a hash:net type of set. There are > countless tools to do the conversion. There may be, but that isn't the point - do I have to arm myself with yet another tool, which would make my job that bit more complicated and difficult (not to mention the time I have to spend adapting to this as well as further maintaining it!), compared to if I had ipset implemented in such a way, that it is flexible enough to accept IP ranges as well as those listed with cidr notation - a flexibility which already existed in version 4 of the same tool? > I see that automatic input > conversion could be a useful feature in ipset but at least for a few weeks > I'll not be able to deal with it. > I am attaching something to this email (though I am not sure whether this would be accepted by the mail list daemon!) to get you started if you so desire. [-- Attachment #2: cidr.c --] [-- Type: text/plain, Size: 5498 bytes --] #include <stdio.h> #include <unistd.h> #include <string.h> #include <math.h> #include <errno.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #define IP_BINARY_LENGTH 32+1 /* 32 bits ipv4 address +1 for null */ #define IP_HEX_LENGTH 10 #define MAX_CIDR_MASK 32 #define MAX_CIDR_LEN 18+1 /* 255.255.255.255/32 */ void rangeToCidr(uint32_t from ,uint32_t to, void (callback)(char *cidrNotation)); int ipToBin(uint32_t ip , char * pOut); void printNotation(char *cidrNotation); /******************************************************************************* * * ipToBin - convert an ipv4 address to binary representation * and pads zeros to the beginning of the string if * the length is not 32 * (Important for ranges like 10.10.0.1 - 20.20.20.20 ) * * ip - ipv4 address on host order * pOut - Buffer to store binary. * * RETURNS: OK or ERROR */ int ipToBin(uint32_t ip , char * pOut) { char hex[IP_HEX_LENGTH]; int i; int result=0; int len; char pTmp[2]; int tmp; /* * XXX: Could use bit operations instead but was easier to debug */ char binMap[16][5] = { "0000","0001","0010","0011", "0100", "0101","0110","0111","1000", "1001", "1010","1011","1100", "1101","1110","1111", }; pTmp[1]=0x0; memset(hex,0x0,sizeof(hex)); len=sprintf(hex,"%x",ip); for(i=0;i<len;i++) { /* Ugly but to use strtol , we need the last byte as null */ pTmp[0]=hex[i]; errno = 0; tmp = strtol(pTmp, 0x0, 16); /* Should not happen */ if (errno != 0) { memset(pOut,'0',IP_BINARY_LENGTH -1); return -1; } result+=sprintf(pOut+result,"%s",binMap[tmp]); } /* if length is not 32 , pad the start with zeros*/ if(result < IP_BINARY_LENGTH-1) { char pSwap[IP_BINARY_LENGTH]; strncpy(pSwap,pOut,IP_BINARY_LENGTH); memset(pOut,'0',IP_BINARY_LENGTH); strncpy(pOut+IP_BINARY_LENGTH-1-result,pSwap,result); } else if (result > IP_BINARY_LENGTH-1) return -1; /* Success */ return 0; } /******************************************************************************* * main : * * arg1 : Start IP Address * arg2 : End IP address */ int main (int argc,char **argv) { long fromIp, toIp; struct in_addr addr; if (argc !=3 ) { printf("Usage: %s <from> <to>\n",argv[0]); return(0); } /* All operation on host order */ if (inet_aton(argv[1],&addr) == 0) goto error; fromIp = ntohl(addr.s_addr); if (inet_aton(argv[2],&addr) ==0) goto error; toIp = ntohl(addr.s_addr); rangeToCidr(fromIp,toIp,printNotation); return 0; error: printf("Invalid Argument\n"); return -EINVAL; } /******************************************************************************* * * rangeToCidr - convert an ip Range to CIDR, and call 'callback' to handle * the value. * * from - IP Range start address * to - IP Range end address * callback - Callback function to handle cidr. * RETURNS: OK or ERROR */ void rangeToCidr(uint32_t from ,uint32_t to, void (callback)(char *cidrNotation)) { int cidrStart = 0; int cidrEnd = MAX_CIDR_MASK - 1; long newfrom; long mask; char fromIp[IP_BINARY_LENGTH]; char toIp[IP_BINARY_LENGTH]; struct in_addr addr; char cidrNotation[MAX_CIDR_LEN]; memset (fromIp,0x0,sizeof(fromIp)); memset (toIp,0x0,sizeof(toIp)); if ( ipToBin(from,fromIp) != 0 ) return; if ( ipToBin(to,toIp) != 0 ) return; if(from < to ) { /* Compare the from and to address ranges to get the first * point of difference */ while(fromIp[cidrStart]==toIp[cidrStart]) cidrStart ++; cidrStart = 32 - cidrStart -1 ; /* Starting from the found point of difference make all bits on the * right side zero */ newfrom = from >> cidrStart +1 << cidrStart +1; /* Starting from the end iterate reverse direction to find * cidrEnd */ while( fromIp[cidrEnd] == '0' && toIp[cidrEnd] == '1') cidrEnd --; cidrEnd = MAX_CIDR_MASK - 1 - cidrEnd; if(cidrEnd <= cidrStart) { /* * Make all the bit-shifted bits equal to 1, for * iteration # 1. */ mask = pow (2, cidrStart ) - 1; rangeToCidr (from , newfrom | mask, callback); rangeToCidr (newfrom | 1 << cidrStart ,to ,callback); } else { addr.s_addr = htonl(newfrom); sprintf(cidrNotation,"%s/%d", inet_ntoa(addr), MAX_CIDR_MASK-cidrEnd); if (callback != NULL) callback(cidrNotation); } } else { addr.s_addr = htonl(from); sprintf(cidrNotation,"%s/%d",inet_ntoa(addr),MAX_CIDR_MASK); if(callback != NULL) callback(cidrNotation); } } /******************************************************************************* * * printNotation - This is an example callback function to handle cidr notation. * * RETURNS: */ void printNotation(char *cidrNotation) { printf("%s\n",cidrNotation); } ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ipset v6.latest bugs? 2011-04-26 0:38 ` Mr Dash Four @ 2011-04-26 13:57 ` Jozsef Kadlecsik 2011-04-26 15:04 ` Mr Dash Four 0 siblings, 1 reply; 12+ messages in thread From: Jozsef Kadlecsik @ 2011-04-26 13:57 UTC (permalink / raw) To: Mr Dash Four; +Cc: netfilter@vger.kernel.org On Tue, 26 Apr 2011, Mr Dash Four wrote: > > > Yeah, but the set is empty! > > > > > > It is flushed, so why is it that after the set is cleared (and there are > > > no > > > elements in that set!), it still occupies 4 times as much memory it had > > > initially with the same number of elements, i.e. zero? If this isn't a > > > memory > > > leak it is a very bad practice I would think. > > > > Hashes are never shrunk. The hash was initiated with the size 1024. Then it > > was doubled, again and again. Even after deleting all the elements, the base > > structures are there, emptied, ready to occupy new elements. > > > Right! OK, I just realised that the has value has grown as well, thus > increasing the memory footprint, which is fair enough i suppose. I also > assumed that the hash value could double up indefinitely until the maxelem is > reached, but that turned out not to be the case - the hash value doubled up > just once: > [root@test1 ~]# ipset -N test hash:ip maxelem 262144 > [root@test1 ~]# ipset -A test 10.4.0.0-10.7.255.255 > ipset v6.4: Element cannot be added to the set: it's already added > [root@test1 ~]# ipset -F test > [root@test1 ~]# ipset -L test > Name: test > Type: hash:ip > Header: family inet hashsize 2048 maxelem 262144 > Size in memory: 32896 > References: 0 > Members: > [root@test1 ~]# > > Is this intentional? Due to the restarting bug (add the first element again) and failing as it is already added, the resizing happened once. If reissued the ipset -A test 10.4.0.0-10.7.255.255 ipset -F test ipset -L test commands, you'd see that the hash is doubled again. After the the bug is fixed, the hash will be doubled as many times as required and the parameters (maxsize) and physical memory permit. > Performing the same set of statements as in my initial post, but with maxelem > 262144 (the number of ip addresses in that range) as well as hashsize set to > the same number produces no errors and after "flush" the hash set uses the > same memory footprint as when there were no elements stored there. > > > If you don't need a large set anymore, swap it with a smaller one. > > > What happens if this set is used in iptables statements, would this work? Yes, swapping works with sets in use by iptables rules. > > The problem is that at some point the conversion has to be done. > > It can be done before feeding the data to ipset too. > So you think it is a good idea for everybody out there using ipset to get > some sort of conversion utility so that hash:net is utilised in that manner > then? > > Wouldn't it be better if you could adapt ipset and make it behave the same way > as it currently does with hash:ip type set in terms of specifying members? The > same way as you did with specifying port ranges as well, not to mention that > in versions 4+ that used to also be the case. The hash:net type set is the > only exception in the whole range of sets on offer! As I wrote, for a few weeks I won't have time to deal with adding new features. > > hash:net and iptreemap are quite different. Let's look at 10.1.0.0/16: with > > hash:net that is a single element, interpreted as a network and matching all > > elements in it. In iptreemap, that's 65536 different, individual IP > > addresses. > > > ipset -L on a iptreemap type set tells different - it contains a single > element - 10.1.0.0/16 - and that's it! It is even better because I could use > both forms - cidr and ranges alike - and it shows me the ip address ranges > when I list the actual set. In that respect iptreemap's implementation is much > better than what currently exists with hash:net set in 6.4! iptreemap is clever enough to collapse the successive elements into ranges in the output. But internally all network, range added to an iptreemap type is expanded into the individual IP addresses. Best regards, Jozsef - E-mail : kadlec@blackhole.kfki.hu, kadlec@mail.kfki.hu PGP key : http://www.kfki.hu/~kadlec/pgp_public_key.txt Address : KFKI Research Institute for Particle and Nuclear Physics H-1525 Budapest 114, POB. 49, Hungary ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ipset v6.latest bugs? 2011-04-26 13:57 ` Jozsef Kadlecsik @ 2011-04-26 15:04 ` Mr Dash Four 2011-04-26 23:18 ` Mr Dash Four 0 siblings, 1 reply; 12+ messages in thread From: Mr Dash Four @ 2011-04-26 15:04 UTC (permalink / raw) To: Jozsef Kadlecsik; +Cc: netfilter@vger.kernel.org > Due to the restarting bug (add the first element again) and failing as it > is already added, the resizing happened once. OK, I'll wait for this to be fixed then. > As I wrote, for a few weeks I won't have time to deal with adding new > features. > No worries, I was just not sure why was this dropped as port ranges used to be part of other sets implemented in this version, not to mention that these features existed across the board in earlier ipset versions too. In the meantime I may be sticking with 4.5 until this is implemented as I have boxes which I cannot upgrade to the new version of ipset due to constrains with the kernel, so I do not have the appetite, nor desire, to spend long hours altering my entire build just because the hash:net set in the new ipset version can't handle ip ranges - it would be a nightmare to maintain two different build paths simply because of that single issue. I suspect that was the reason why iptree(map) sets got "converted" to hash:ip instead of hash:net. >> ipset -L on a iptreemap type set tells different - it contains a single >> element - 10.1.0.0/16 - and that's it! It is even better because I could use >> both forms - cidr and ranges alike - and it shows me the ip address ranges >> when I list the actual set. In that respect iptreemap's implementation is much >> better than what currently exists with hash:net set in 6.4! >> > > iptreemap is clever enough to collapse the successive elements into ranges > in the output. But internally all network, range added to an iptreemap > type is expanded into the individual IP addresses. > Maybe that would explain the massive amount of time it takes to load all these address ranges and hog my entire system in the process? ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ipset v6.latest bugs? 2011-04-26 15:04 ` Mr Dash Four @ 2011-04-26 23:18 ` Mr Dash Four 2011-04-27 7:15 ` Jozsef Kadlecsik 0 siblings, 1 reply; 12+ messages in thread From: Mr Dash Four @ 2011-04-26 23:18 UTC (permalink / raw) To: Jozsef Kadlecsik; +Cc: netfilter@vger.kernel.org >> Due to the restarting bug (add the first element again) and failing >> as it is already added, the resizing happened once. > OK, I'll wait for this to be fixed then. I ran into more problems, unfortunately! This is what I executed after managing to use the same ipset revisions in both the kernel and userspace: [root@test1 ~]# ipset -N test hash:net,port [root@test1 ~]# ipset -L test Name: test Type: hash:net,port Header: family inet hashsize 1024 maxelem 65536 Size in memory: 16760 References: 0 Members: [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4096 ipset v6.4: Element cannot be added to the set: it's already added [root@test1 ~]# ipset -terse -L test Name: test Type: hash:net,port Header: family inet hashsize 2048 maxelem 65536 Size in memory: 91448 References: 0 [root@test1 ~]# ipset -F test [root@test1 ~]# ipset -A test 10.4.0.0/14,1-6144 ipset v6.4: Element cannot be added to the set: it's already added [root@test1 ~]# ipset -F test [root@test1 ~]# ipset -terse -L test Name: test Type: hash:net,port Header: family inet hashsize 2048 maxelem 65536 Size in memory: 33144 References: 0 [root@test1 ~]# ipset -X test [root@test1 ~]# ipset -N test hash:net,port [root@test1 ~]# ipset -A test 10.4.0.0/14,1-5120 ipset v6.4: Element cannot be added to the set: it's already added [root@test1 ~]# ipset -X test [root@test1 ~]# ipset -N test hash:net,port [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4608 ipset v6.4: Element cannot be added to the set: it's already added [root@test1 ~]# ipset -X test [root@test1 ~]# ipset -N test hash:net,port [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4096 [root@test1 ~]# ipset -X test [root@test1 ~]# ipset -N test hash:net,port [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4352 [root@test1 ~]# ipset -F test [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4224 [root@test1 ~]# ipset -F test [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4480 [root@test1 ~]# ipset -F test [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4544 [root@test1 ~]# ipset -F test [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4607 [root@test1 ~]# ipset -F test [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4608 [root@test1 ~]# ipset -X test [root@test1 ~]# ipset -N test hash:net,port [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4608 [root@test1 ~]# ipset -X test [root@test1 ~]# ipset -N test hash:net,port [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4864 [root@test1 ~]# ipset -X test [root@test1 ~]# ipset -N test hash:net,port [root@test1 ~]# ipset -A test 10.4.0.0/14,1-5120 ipset v6.4: Element cannot be added to the set: it's already added [root@test1 ~]# ipset -X test [root@test1 ~]# ipset -N test hash:net,port [root@test1 ~]# ipset -A test 10.4.0.0/14,1-5120 ipset v6.4: Element cannot be added to the set: it's already added [root@test1 ~]# ipset -X test [root@test1 ~]# ipset -N test hash:net,port [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4864 [root@test1 ~]# ipset -X test [root@test1 ~]# ipset -N test hash:net,port [root@test1 ~]# ipset -A test 10.4.0.0/14,1-5119 ipset v6.4: Element cannot be added to the set: it's already added [root@test1 ~]# ipset -X test [root@test1 ~]# ipset -N test hash:net,port [root@test1 ~]# ipset -A test 10.4.0.0/14,1-5056 ipset v6.4: Element cannot be added to the set: it's already added [root@test1 ~]# ipset -X test [root@test1 ~]# ipset -N test hash:net,port [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4865 ipset v6.4: Element cannot be added to the set: it's already added [root@test1 ~]# ipset -X test [root@test1 ~]# ipset -N test hash:net,port [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4864 ipset v6.4: Element cannot be added to the set: it's already added [root@test1 ~]# ipset -X test [root@test1 ~]# ipset -N test hash:net,port [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4864 ipset v6.4: Element cannot be added to the set: it's already added As evident from the above, there seem to be some, quite frankly, bizarre results: 1. Even though the maxelem value is 64k I seems to be restricted to add the amount of elements in the set which do not require the hash value to more than double (that may be related to the previous bug with hash:ip set though). 2. Take a note when I try to add 4608 elements to the test set - I did that 3 times with completely different results - it seems that ipset triggers an error when it feels like it. 3. Following on from the previous point, when I try to add more elements than the established "error threshold" in point 2 above, I also get mixed results (attempting to add 4864 elements gives me 2 successes and 2 failures after 4 attempts made when I re-created the test set from scratch). I am a bit baffled to say the least why on one occasion I am successful in adding more elements while previous attempts with less elements have triggered an error (adding 4864 elements successfully - twice, compared to 4608 unsuccessfully) - there is absolutely no logic in this! There seems to be a serious issue or am I missing a trick here? ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ipset v6.latest bugs? 2011-04-26 23:18 ` Mr Dash Four @ 2011-04-27 7:15 ` Jozsef Kadlecsik 2011-04-27 12:00 ` Mr Dash Four 0 siblings, 1 reply; 12+ messages in thread From: Jozsef Kadlecsik @ 2011-04-27 7:15 UTC (permalink / raw) To: Mr Dash Four; +Cc: netfilter@vger.kernel.org On Wed, 27 Apr 2011, Mr Dash Four wrote: > > > Due to the restarting bug (add the first element again) and failing as it > > > is already added, the resizing happened once. > > OK, I'll wait for this to be fixed then. > I ran into more problems, unfortunately! > > This is what I executed after managing to use the same ipset revisions in both > the kernel and userspace: > > [root@test1 ~]# ipset -N test hash:net,port > [root@test1 ~]# ipset -L test > Name: test > Type: hash:net,port > Header: family inet hashsize 1024 maxelem 65536 > Size in memory: 16760 > References: 0 > Members: > > [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4096 > ipset v6.4: Element cannot be added to the set: it's already added > > [root@test1 ~]# ipset -terse -L test > Name: test > Type: hash:net,port > Header: family inet hashsize 2048 maxelem 65536 > Size in memory: 91448 > References: 0 > > [root@test1 ~]# ipset -F test > [root@test1 ~]# ipset -A test 10.4.0.0/14,1-6144 > ipset v6.4: Element cannot be added to the set: it's already added > > [root@test1 ~]# ipset -F test > [root@test1 ~]# ipset -terse -L test > Name: test > Type: hash:net,port > Header: family inet hashsize 2048 maxelem 65536 > Size in memory: 33144 > References: 0 > [root@test1 ~]# ipset -X test > [root@test1 ~]# ipset -N test hash:net,port > [root@test1 ~]# ipset -A test 10.4.0.0/14,1-5120 > ipset v6.4: Element cannot be added to the set: it's already added > > [root@test1 ~]# ipset -X test > [root@test1 ~]# ipset -N test hash:net,port > [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4608 > ipset v6.4: Element cannot be added to the set: it's already added > > [root@test1 ~]# ipset -X test > [root@test1 ~]# ipset -N test hash:net,port > [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4096 > [root@test1 ~]# ipset -X test > [root@test1 ~]# ipset -N test hash:net,port > [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4352 > [root@test1 ~]# ipset -F test > [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4224 > [root@test1 ~]# ipset -F test > [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4480 > [root@test1 ~]# ipset -F test > [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4544 > [root@test1 ~]# ipset -F test > [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4607 > > [root@test1 ~]# ipset -F test > [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4608 > > [root@test1 ~]# ipset -X test > [root@test1 ~]# ipset -N test hash:net,port > [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4608 > > [root@test1 ~]# ipset -X test > [root@test1 ~]# ipset -N test hash:net,port > [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4864 > > [root@test1 ~]# ipset -X test > [root@test1 ~]# ipset -N test hash:net,port > [root@test1 ~]# ipset -A test 10.4.0.0/14,1-5120 > ipset v6.4: Element cannot be added to the set: it's already added > > [root@test1 ~]# ipset -X test > [root@test1 ~]# ipset -N test hash:net,port > [root@test1 ~]# ipset -A test 10.4.0.0/14,1-5120 > ipset v6.4: Element cannot be added to the set: it's already added > > [root@test1 ~]# ipset -X test > [root@test1 ~]# ipset -N test hash:net,port > [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4864 > > [root@test1 ~]# ipset -X test > [root@test1 ~]# ipset -N test hash:net,port > [root@test1 ~]# ipset -A test 10.4.0.0/14,1-5119 > ipset v6.4: Element cannot be added to the set: it's already added > > [root@test1 ~]# ipset -X test > [root@test1 ~]# ipset -N test hash:net,port > [root@test1 ~]# ipset -A test 10.4.0.0/14,1-5056 > ipset v6.4: Element cannot be added to the set: it's already added > > [root@test1 ~]# ipset -X test > [root@test1 ~]# ipset -N test hash:net,port > [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4865 > ipset v6.4: Element cannot be added to the set: it's already added > > [root@test1 ~]# ipset -X test > [root@test1 ~]# ipset -N test hash:net,port > [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4864 > ipset v6.4: Element cannot be added to the set: it's already added > > [root@test1 ~]# ipset -X test > [root@test1 ~]# ipset -N test hash:net,port > [root@test1 ~]# ipset -A test 10.4.0.0/14,1-4864 > ipset v6.4: Element cannot be added to the set: it's already added > > As evident from the above, there seem to be some, quite frankly, bizarre > results: > > 1. Even though the maxelem value is 64k I seems to be restricted to add the > amount of elements in the set which do not require the hash value to more than > double (that may be related to the previous bug with hash:ip set though). This is the same bug you discovered last time: the internal restarting at adding elements after resizing fails. Please note, the maxelem parameter has no effect, but the hashsize does: if the hash too small, it has to be resized. > 2. Take a note when I try to add 4608 elements to the test set - I did that 3 > times with completely different results - it seems that ipset triggers an > error when it feels like it. The hashes are created with a random hash key calculation parameter: if the hash is lucky enough, you can stuff the data into it without reaching the clashing limit and without the need to resize the hash. > 3. Following on from the previous point, when I try to add more elements than > the established "error threshold" in point 2 above, I also get mixed results > (attempting to add 4864 elements gives me 2 successes and 2 failures after 4 > attempts made when I re-created the test set from scratch). The same as above: if the clash limit is not reached, the hash happily can accept more data. If it's reached, resizing is triggered which is successfully done, but adding elements starts again with the already added element. That needs to be fixed. Best regards, Jozsef - E-mail : kadlec@blackhole.kfki.hu, kadlec@mail.kfki.hu PGP key : http://www.kfki.hu/~kadlec/pgp_public_key.txt Address : KFKI Research Institute for Particle and Nuclear Physics H-1525 Budapest 114, POB. 49, Hungary ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ipset v6.latest bugs? 2011-04-27 7:15 ` Jozsef Kadlecsik @ 2011-04-27 12:00 ` Mr Dash Four 2011-04-27 21:27 ` Jozsef Kadlecsik 0 siblings, 1 reply; 12+ messages in thread From: Mr Dash Four @ 2011-04-27 12:00 UTC (permalink / raw) To: Jozsef Kadlecsik; +Cc: netfilter@vger.kernel.org >> 2. Take a note when I try to add 4608 elements to the test set - I did that 3 >> times with completely different results - it seems that ipset triggers an >> error when it feels like it. >> > > The hashes are created with a random hash key calculation parameter: if > the hash is lucky enough, you can stuff the data into it without reaching > the clashing limit and without the need to resize the hash. > I see, so the error is triggered at random because the randomly generated hash sometimes is able to "stuff the data", as you put it, without reaching the limit, but sometimes it doesn't and this, then, triggers the error, is that correct? >> 3. Following on from the previous point, when I try to add more elements than >> the established "error threshold" in point 2 above, I also get mixed results >> (attempting to add 4864 elements gives me 2 successes and 2 failures after 4 >> attempts made when I re-created the test set from scratch). >> > > The same as above: if the clash limit is not reached, the hash happily > can accept more data. If it's reached, resizing is triggered which is > successfully done, but adding elements starts again with the already added > element. That needs to be fixed. > I think I understand it now, thanks for the explanation. I hope that you would be able to fix this bug. On a separate note, two days ago I was finally able to split ipset from xtables-addons and build it as a separate package (i.e. construct a .spec file, then build and install rpm based on that) while building only the userspace part (assuming the kernel part will stay with the kernel). This is by no means finished (there are some things still left to be ironed out - kernel modules dependency check, changelog history to be added etc), but I thought you may be interested in this. If so, let me know and I'll send it to you (the important part is the .spec file and a separate patch which removes the build routines for the kernel modules). I am in a process of doing the same with version 4.5 of ipset (I was able to successfully build the .35-88 version of the kernel with ipset 4.5 kernel modules happily integrated into it yesterday), even though ipset 4.5 does not have pkgconfig files I intend to create these - hopefully today. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ipset v6.latest bugs? 2011-04-27 12:00 ` Mr Dash Four @ 2011-04-27 21:27 ` Jozsef Kadlecsik 2011-04-27 21:40 ` Mr Dash Four 0 siblings, 1 reply; 12+ messages in thread From: Jozsef Kadlecsik @ 2011-04-27 21:27 UTC (permalink / raw) To: Mr Dash Four; +Cc: netfilter@vger.kernel.org On Wed, 27 Apr 2011, Mr Dash Four wrote: > > > 2. Take a note when I try to add 4608 elements to the test set - I did > > > that 3 > > > times with completely different results - it seems that ipset triggers an > > > error when it feels like it. > > > > The hashes are created with a random hash key calculation parameter: if the > > hash is lucky enough, you can stuff the data into it without reaching the > > clashing limit and without the need to resize the hash. > > > I see, so the error is triggered at random because the randomly generated hash > sometimes is able to "stuff the data", as you put it, without reaching the > limit, but sometimes it doesn't and this, then, triggers the error, is that > correct? Yes, exactly. > > > 3. Following on from the previous point, when I try to add more elements > > > than > > > the established "error threshold" in point 2 above, I also get mixed > > > results > > > (attempting to add 4864 elements gives me 2 successes and 2 failures after > > > 4 > > > attempts made when I re-created the test set from scratch). > > > > > > > The same as above: if the clash limit is not reached, the hash happily can > > accept more data. If it's reached, resizing is triggered which is > > successfully done, but adding elements starts again with the already added > > element. That needs to be fixed. > > > I think I understand it now, thanks for the explanation. I hope that you would > be able to fix this bug. I'm attending an annual conference this week, so it seems I won't have time to work on the bugfix before the weekend, sorry. > On a separate note, two days ago I was finally able to split ipset from > xtables-addons and build it as a separate package (i.e. construct a .spec > file, then build and install rpm based on that) while building only the > userspace part (assuming the kernel part will stay with the kernel). This is > by no means finished (there are some things still left to be ironed out - > kernel modules dependency check, changelog history to be added etc), but I > thought you may be interested in this. > > If so, let me know and I'll send it to you (the important part is the .spec > file and a separate patch which removes the build routines for the kernel > modules). I don't really see why you have to split ipset from xtables-addons. What's wrong with the standalone ipset package, what forces you to do so? > I am in a process of doing the same with version 4.5 of ipset (I was able to > successfully build the .35-88 version of the kernel with ipset 4.5 kernel > modules happily integrated into it yesterday), even though ipset 4.5 does not > have pkgconfig files I intend to create these - hopefully today. Best regards, Jozsef - E-mail : kadlec@blackhole.kfki.hu, kadlec@mail.kfki.hu PGP key : http://www.kfki.hu/~kadlec/pgp_public_key.txt Address : KFKI Research Institute for Particle and Nuclear Physics H-1525 Budapest 114, POB. 49, Hungary ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: ipset v6.latest bugs? 2011-04-27 21:27 ` Jozsef Kadlecsik @ 2011-04-27 21:40 ` Mr Dash Four 0 siblings, 0 replies; 12+ messages in thread From: Mr Dash Four @ 2011-04-27 21:40 UTC (permalink / raw) To: Jozsef Kadlecsik; +Cc: netfilter@vger.kernel.org >> I think I understand it now, thanks for the explanation. I hope that you would >> be able to fix this bug. >> > > I'm attending an annual conference this week, so it seems I won't have > time to work on the bugfix before the weekend, sorry. > No worries, I will be using 4.5 for the time being particularly as I was finally able to integrate it into the kernel (your "patch_kernel" script did the donkey work though :-) ) and I was also able to "convert" ipset 4.5 to use pkgconfig (still testing it though), so when I am more or less done I will be in a position to build (and use!) both generation packages as a standalone software. > I don't really see why you have to split ipset from xtables-addons. What's > wrong with the standalone ipset package, what forces you to do so? > I don't actually need xtables-addons for 80% of my boxes, so just building the ipset package was perfect! On those machines I used to compile xtables-addons just because I needed ipset, so it made more sense to use ipset as standalone and save myself the hassle (and some resources too). I planned to do this for months, but wasn't able to due to time constraints. I can now afford more time and I am glad I was able to finally split it up. I am particularly pleased that I was able to integrate it into the kernel, which saved me another headache of having to deal with the bl**dy buildsys packages on Fedora which were needed to build the kernel modules. ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2011-04-27 21:40 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-04-25 11:55 ipset v6.latest bugs? Mr Dash Four 2011-04-25 20:03 ` Jozsef Kadlecsik 2011-04-25 20:36 ` Mr Dash Four 2011-04-25 21:51 ` Jozsef Kadlecsik 2011-04-26 0:38 ` Mr Dash Four 2011-04-26 13:57 ` Jozsef Kadlecsik 2011-04-26 15:04 ` Mr Dash Four 2011-04-26 23:18 ` Mr Dash Four 2011-04-27 7:15 ` Jozsef Kadlecsik 2011-04-27 12:00 ` Mr Dash Four 2011-04-27 21:27 ` Jozsef Kadlecsik 2011-04-27 21:40 ` Mr Dash Four
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).