mirror of
https://github.com/solemnwarning/ipxwrapper
synced 2024-12-30 16:45:37 +01:00
Implemented ipx_interface_by_subnet function.
This commit is contained in:
parent
6c2a93e542
commit
1f733315d6
@ -533,6 +533,37 @@ ipx_interface_t *ipx_interface_by_addr(addr32_t net, addr48_t node)
|
||||
return iface;
|
||||
}
|
||||
|
||||
/* Search for an IPX interface by associated IP subnet.
|
||||
* Returns NULL if no interfaces match or on malloc failure.
|
||||
*/
|
||||
ipx_interface_t *ipx_interface_by_subnet(uint32_t ipaddr)
|
||||
{
|
||||
EnterCriticalSection(&interface_cache_cs);
|
||||
|
||||
renew_interface_cache();
|
||||
|
||||
ipx_interface_t *iface;
|
||||
|
||||
DL_FOREACH(interface_cache, iface)
|
||||
{
|
||||
ipx_interface_ip_t *ip;
|
||||
DL_FOREACH(iface->ipaddr, ip)
|
||||
{
|
||||
if((ip->ipaddr & ip->netmask) == (ipaddr & ip->netmask))
|
||||
{
|
||||
iface = copy_ipx_interface(iface);
|
||||
goto DONE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DONE:
|
||||
|
||||
LeaveCriticalSection(&interface_cache_cs);
|
||||
|
||||
return iface;
|
||||
}
|
||||
|
||||
/* Search for an IPX interface by index.
|
||||
* Returns NULL if the interface doesn't exist or malloc failure.
|
||||
*/
|
||||
|
@ -67,6 +67,7 @@ void ipx_interfaces_cleanup(void);
|
||||
|
||||
ipx_interface_t *get_ipx_interfaces(void);
|
||||
ipx_interface_t *ipx_interface_by_addr(addr32_t net, addr48_t node);
|
||||
ipx_interface_t *ipx_interface_by_subnet(uint32_t ipaddr);
|
||||
ipx_interface_t *ipx_interface_by_index(int index);
|
||||
int ipx_interface_count(void);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user