[Kea-users] lease4 table additional connection to mysql

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[Kea-users] lease4 table additional connection to mysql

sven.roehrig
Hi,
 
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?
 
Thanks in advance.

Sven

_______________________________________________
Kea-users mailing list
[hidden email]
https://lists.isc.org/mailman/listinfo/kea-users
Reply | Threaded
Open this post in threaded view
|

Re: [Kea-users] lease4 table additional connection to mysql

Tomek Mrugalski
On 04.12.2018 13:06, [hidden email] 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
[hidden email]
https://lists.isc.org/mailman/listinfo/kea-users