On 04.12.2018 13:06, [email protected] wrote: > currently I'm working on a hook for kea dhcpv4 to differentiate between > privileged/unprivileged leases. > > I'm reading the hardware address and relay agent id (dhcp option 82) out in > the pkt4_send hook and save it for use in the pkt4_receive hook. > In the latter I want to check if the hardware address exists in the lease4 > table or in case it doesn't, check for the relay agent id. Next step would > be to set an privileged/unknown class depending on the existance of the > check. > > My question is, is there a more elegant way to check if a lease exists than > using an additional connection to the mysql server and querying the table? > E.g. using the kea engine to check? It depends on the query. You may use existing leasemgr:
#include <dhcpsrv/lease_mgr.h> #include <dhcpsrv/lease_mgr_factory.h> auto a = LeaseMgrFactory::instance().getLease4(hwaddr); auto b = LeaseMgrFactory::instance().getLease4(hwaddr, subnet_id); Take a look at the LeaseMgr class interface in lease_mgr.h. There are several different queries exposed. If they cover what you want to do - great. Also, if you need to store anything with existing leases, you may want to take a look at user-context. 1.5.0beta1 introduced support for this in leases. The concept is simple: you're able to store any data (within reason, IIRC there's 8KB limit) with leases as long as it is in JSON format. Hope that helps, Tomek _______________________________________________ Kea-users mailing list [email protected] https://lists.isc.org/mailman/listinfo/kea-users
