[Chilli] Ippool exhaustion bug?

Gunther Mayer gunther.mayer at googlemail.com
Mon Nov 9 10:40:14 UTC 2009


Hi guys,

I've stumbled across the following VERY frustrating problem which is 
giving me and hundreds of our customers endless grey hair. I have a 
uamanyip setup with a /24 net, the first /25 subnet of which is for 
statip and the rest for dynip (implicitly) but specified with dhcpstart 
and dhcpend for flexibility. After quite a long time, when most ip's 
have been recycled a fair number of times chilli refuses to hand out any 
more ip addresses dynamically and chokes with the following appearing ad 
infinitum in the logs:

2009-11-09T01:00:14+02:00 coova-chilli[1378]: chilli.c: 3012: New DHCP 
request from MAC=xx-xx-xx-xx-xx-xx
2009-11-09T01:00:14+02:00 coova-chilli[1378]: ippool.c: 397: No more IP 
addresses available
2009-11-09T01:00:14+02:00 coova-chilli[1378]: chilli.c: 332: Failed to 
allocate either static or dynamic IP address

Of course reproducing my production settings would take forever (about 
127 ip addresses between dhcpstart and dhcpend) so I decided to cut it 
down to the following testing example in chilli.conf:

uamlisten 10.0.0.1
net 10.0.0.0/24
dhcpstart 129
dhcpend 133
statip 10.0.0.0/25
uamanyip

That is, 10.0.0.2-10.0.0.127 or 125 ip's are reserved for static 
ip/anyip clients and 10.0.0.129-10.0.0.132 or 4 ip's for dynamic/dhcp 
clients. Now to reproduce the ippool bug, connect your linux laptop via 
cable to the chilli box and do something like

$ dhclient eth0 # should give you 10.0.0.129 first time, then .130 and so on
$ killall dhclient
$ ifconfig eth0 0.0.0.0 down
$ ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx+1

and repeat. Of course the fifth time you do this chilli will 
legitimately run out of ip addresses because it still has all the other 
allocated. Until such time that they all time out so wait a bit longer 
than 10 minutes and start from scratch. Unfortunately I'm no longer able 
to reproduce this but I could last night, I'll figure out an easy way in 
time but in the meantime, has anyone seen such problems before? Does 
anyone have a suggestion?

It looks strongly like some dynamic ip addresses not being properly 
released in ippool.c but I haven't been able to figure it out.
This bug has been present in 1.0.13(r199) and 1.0.14(r208), the two I've 
tested with so far.

Thanks,

Gunther


More information about the Chilli mailing list