I dont know if this means anything, but Im not using DHCP, Im using PPPoE. I didnt know FR could even be a dhcp server.
Im just throwing out ideas, but is there a way to not thread the sqlippool module ? Let one request at a time for an IP, sure it would be slower, but for my use would be fine. Ben Wiechman wrote: > > Can’t you do the select and update as part of one transaction? > > > > For example with MySQL: > > START TRANSACTION; > > SELECT @A:=SUM(salary) FROM table1 WHERE type=1; > > UPDATE table2 SET summa...@a WHERE type=1; > > COMMIT; > > > > The transaction may need to be changed to serializable as well. I > don’t know how the DHCP RFC handles preallocations. > > > > You could probably use Repeatable Read level if it is acceptable to > mark an address as taken when a DHCPOFFER is sent while waiting for a > DHCPREQUEST from the client, so long as the address if confirmed to be > free before the DHCPACK is sent, or a DHCPNAK in the case that the > address was offered to multiple clients. > > Ben Wiechman > > > > > > *From:* > freeradius-users-bounces+ben=wisper-wireless....@lists.freeradius.org > [mailto:freeradius-users-bounces+ben=wisper-wireless....@lists.freeradius.org] > *On Behalf Of *Padam J Singh > *Sent:* Thursday, January 15, 2009 9:39 AM > *To:* FreeRadius users mailing list > *Subject:* Re: Handing out duplicate IP addresses > > > > Hello Ivan, > > Would adding a mutex around the select-update code in the sqlippool > module solve this issue? > > Padam > > t...@kalik.net <mailto:t...@kalik.net> wrote: > > The requests all came in at the same time, to the second (among others), > > its like FR took 3 requests and looked at the database at the exact same > > time, saw it was an available IP and all those 3 requests assigned it. > > > > > That can't be avoided. SELECT (allocate-find) will always work much > faster than UPDATE (allocate-update). > > > > My NAS rejects two of the 3 because the IP is assigned, > > > > > I think that you make a good point here. If the allocate-update query was > made to fail in the case that the IP address was already issued to > another thread between allocate-find and allocate-update (by expanding > it with AND expiry_time IS NULL in WHERE), point of failure will be in > sqlippool module and not on the NAS. Logic can then perhaps try to issue > a new IP address (best just once more in order not to create a loop). > That way issuing same IP address to multiple threads can be handled by > the sqlippool module. > > Ivan Kalik > Kalik Informatika ISP > > - > List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html > > > > > > -- > PGP Id 9EED2E09 > ------------------------------------------------------------------------ > > - > List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html