176404edcSAsim Jamshed #ifndef __ADDR_POOL_H_ 276404edcSAsim Jamshed #define __ADDR_POOL_H_ 376404edcSAsim Jamshed 476404edcSAsim Jamshed #include <netinet/in.h> 576404edcSAsim Jamshed #include <sys/queue.h> 676404edcSAsim Jamshed 776404edcSAsim Jamshed /*----------------------------------------------------------------------------*/ 876404edcSAsim Jamshed typedef struct addr_pool *addr_pool_t; 976404edcSAsim Jamshed /*----------------------------------------------------------------------------*/ 1076404edcSAsim Jamshed /* CreateAddressPool() */ 1176404edcSAsim Jamshed /* Create address pool for given address range. */ 1276404edcSAsim Jamshed /* addr_base: the base address in network order. */ 1376404edcSAsim Jamshed /* num_addr: number of addresses to use as source IP */ 1476404edcSAsim Jamshed /*----------------------------------------------------------------------------*/ 1576404edcSAsim Jamshed addr_pool_t 1676404edcSAsim Jamshed CreateAddressPool(in_addr_t addr_base, int num_addr); 1776404edcSAsim Jamshed /*----------------------------------------------------------------------------*/ 1876404edcSAsim Jamshed /* CreateAddressPoolPerCore() */ 1976404edcSAsim Jamshed /* Create address pool only for the given core number. */ 2076404edcSAsim Jamshed /* All addresses and port numbers should be in network order. */ 2176404edcSAsim Jamshed /*----------------------------------------------------------------------------*/ 2276404edcSAsim Jamshed addr_pool_t 2376404edcSAsim Jamshed CreateAddressPoolPerCore(int core, int num_queues, 2476404edcSAsim Jamshed in_addr_t saddr_base, int num_addr, in_addr_t daddr, in_port_t dport); 2576404edcSAsim Jamshed /*----------------------------------------------------------------------------*/ 2676404edcSAsim Jamshed void 2776404edcSAsim Jamshed DestroyAddressPool(addr_pool_t ap); 2876404edcSAsim Jamshed /*----------------------------------------------------------------------------*/ 2976404edcSAsim Jamshed int 3076404edcSAsim Jamshed FetchAddress(addr_pool_t ap, int core, int num_queues, 3176404edcSAsim Jamshed const struct sockaddr_in *daddr, struct sockaddr_in *saddr); 3276404edcSAsim Jamshed /*----------------------------------------------------------------------------*/ 3376404edcSAsim Jamshed int 34*2efd908dSAsim Jamshed FetchAddressPerCore(addr_pool_t ap, int core, int num_queues, 35*2efd908dSAsim Jamshed const struct sockaddr_in *daddr, struct sockaddr_in *saddr); 36*2efd908dSAsim Jamshed /*----------------------------------------------------------------------------*/ 37*2efd908dSAsim Jamshed int 3876404edcSAsim Jamshed FreeAddress(addr_pool_t ap, const struct sockaddr_in *addr); 3976404edcSAsim Jamshed /*----------------------------------------------------------------------------*/ 4076404edcSAsim Jamshed 4176404edcSAsim Jamshed #endif /* __ADDR_POOL_H_ */ 42