Can you add a class match with omshell?

Oleg Gawriloff barzog at telecom.by
Fri Jan 9 00:32:50 UTC 2009


 >The problem with this workaround is that subclasses allocate a hash
 >table to hold the subclass lookups in, into which you're only going
 >to place one element per class.  It will use an extraordinary amount
 >of memory unless you alter the sources (look in includes, there are a
 >series of default hash sizing #defines).
 >Note that you're already chasing a performance spectre because you're
 >supposing a large number of class statements.  The classes are
 >searched linearly (linear search on subclasses, hash search on a
 >per-class-basis for subclass matches).  So you're looking at an O(n)
 >scaling CPU sponge at the very start of all DHCP packet processing.
After some brain-storming, keeping your words about linear search in 
mind, we come to the point that we don't need realy chaining Option82 
(Switch+Port) to some fixed address/class. All we need: that in any 
moment of time our BSS must know what ip address belongs to which client 
(switch+port). Of course one solution is generate huge amount of static 
classess as I ask earlier. But another solution to implement some kind 
of interaction beetween dhcpd and BSS during dhcp address request. After 
some reading I'll come to followind config (which for me eliminates need 
for static classess):

on commit or release or expiry
{
         set portid=pick-first-value(binary-to-ascii(10,8,".",option 
agent.circuit-id),"0");
         set switchid=pick-first-value(binary-to-ascii(10,8,".", option 
agent.remote-id),"0");
         set clientip=binary-to-ascii (10, 8, ".", leased-address);
         set clientmac=binary-to-ascii(16,8,".",substring(hardware,1,100));
         set relayip="0";
execute("/root/bin/dhcpd-accounting.pl","REQUEST",switchid,portid,clientip,relayip,clientmac);
}

After this I wrote small script that convert all params to standard 
RADIUS Accouting request which our BSS kindly accepts. Only two question 
sremains:
1. in scripts params I want to include giaddr of relay agent, but I 
can't find isc-dhcpd option for this field (giaddr). Any ideas/suggestion?
2. man about 'execute' says that its blocking operation. My script run 
in about 1 second. Does at means that any dhcp packets that comes to 
server at this moment will be discarded or some kind buffering is in place?



More information about the dhcp-users mailing list