//
// Created by xajhuang on 2023/3/23.
//

#ifndef VCPE_LEASE_H
#define VCPE_LEASE_H
#include <uthash/uthash.h>
#include <linux/if_ether.h>
#include <common.h>
#include "ip_pool.h"
#include "rfc2131.h"
#ifdef __cplusplus
extern "C" {
#endif

typedef struct {
    U8             macAddr[ETH_ALEN];
    U32            ipAddr;
    UT_hash_handle hh;
} MAC_FILTER, *PMAC_FILTER;

typedef struct {
    U32 uId;
    U8  macAddr[ETH_ALEN];
    U32 ipAddr;
    U32 express;
} LEASE_CACHE, *PLEASE_CACHE;

int dhcp_lease_init();
//int pre_alloc_dhcp_res(U32 uid, const char *pMac, U32 *pOutIp, PIPPOOL_INFO *pOutPool);
int pre_alloc_dhcp_res(PDHCP_REQ pReq, U32 *pOutIp, PIPPOOL_INFO *pOutPool);
#ifdef __cplusplus
}
#endif
#endif    //VCPE_LEASE_H