kopia lustrzana https://github.com/espressif/esp-idf
Broadcast IP route based on source IP address.
If destination IP address of the packet is broadcast address, firstly compare source IP address with the that of each network interface. If it matches, packet is forwarded from the interface.pull/585/merge
rodzic
016a579806
commit
7a64e19ba8
|
@ -115,9 +115,36 @@ ip4_set_default_multicast_netif(struct netif* default_multicast_netif)
|
|||
#endif /* LWIP_MULTICAST_TX_OPTIONS */
|
||||
|
||||
#ifdef LWIP_HOOK_IP4_ROUTE_SRC
|
||||
/**
|
||||
* Source based IPv4 routing hook function. This function works only
|
||||
* when destination IP is broadcast IP.
|
||||
*/
|
||||
struct netif *
|
||||
ip4_route_src_hook(const ip4_addr_t *dest, const ip4_addr_t *src)
|
||||
{
|
||||
struct netif *netif = NULL;
|
||||
|
||||
/* destination IP is broadcast IP? */
|
||||
if ((src != NULL) && (dest->addr == IPADDR_BROADCAST)) {
|
||||
/* iterate through netifs */
|
||||
for (netif = netif_list; netif != NULL; netif = netif->next) {
|
||||
/* is the netif up, does it have a link and a valid address? */
|
||||
if (netif_is_up(netif) && netif_is_link_up(netif) && !ip4_addr_isany_val(*netif_ip4_addr(netif))) {
|
||||
/* source IP matches? */
|
||||
if (ip4_addr_cmp(src, netif_ip4_addr(netif))) {
|
||||
/* return netif on which to forward IP packet */
|
||||
return netif;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return netif;
|
||||
}
|
||||
|
||||
/**
|
||||
* Source based IPv4 routing must be fully implemented in
|
||||
* LWIP_HOOK_IP4_ROUTE_SRC(). This function only provides he parameters.
|
||||
* LWIP_HOOK_IP4_ROUTE_SRC(). This function only provides the parameters.
|
||||
*/
|
||||
struct netif *
|
||||
ip4_route_src(const ip4_addr_t *dest, const ip4_addr_t *src)
|
||||
|
|
|
@ -596,6 +596,7 @@
|
|||
---------- Hook options ---------------
|
||||
---------------------------------------
|
||||
*/
|
||||
#define LWIP_HOOK_IP4_ROUTE_SRC ip4_route_src_hook
|
||||
|
||||
/*
|
||||
---------------------------------------
|
||||
|
|
Ładowanie…
Reference in New Issue