mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-10-02 12:52:10 +00:00
Added input & route hooks for IPv6 to stay in line with IPv4
This commit is contained in:
parent
86970a01d7
commit
71d121fab2
@ -83,6 +83,13 @@ ip6_route(const struct ip6_addr *src, const struct ip6_addr *dest)
|
||||
struct netif *netif;
|
||||
s8_t i;
|
||||
|
||||
#ifdef LWIP_HOOK_IP6_ROUTE
|
||||
netif = LWIP_HOOK_IP6_ROUTE(src, dest);
|
||||
if (netif != NULL) {
|
||||
return netif;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* If single netif configuration, fast return. */
|
||||
if ((netif_list != NULL) && (netif_list->next == NULL)) {
|
||||
if (!netif_is_up(netif_list) || !netif_is_link_up(netif_list)) {
|
||||
@ -388,6 +395,13 @@ ip6_input(struct pbuf *p, struct netif *inp)
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
#ifdef LWIP_HOOK_IP6_INPUT
|
||||
if (LWIP_HOOK_IP6_INPUT(p, inp)) {
|
||||
/* the packet has been eaten */
|
||||
return ERR_OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* header length exceeds first pbuf length, or ip length exceeds total pbuf length? */
|
||||
if ((IP6_HLEN > p->len) || ((IP6H_PLEN(ip6hdr) + IP6_HLEN) > p->tot_len)) {
|
||||
if (IP6_HLEN > p->len) {
|
||||
|
@ -2612,6 +2612,27 @@
|
||||
* not part of lwIP but can e.g. be hidden in the netif's state argument.
|
||||
*/
|
||||
|
||||
/**
|
||||
* LWIP_HOOK_IP6_INPUT(pbuf, input_netif):
|
||||
* - called from ip6_input() (IPv6)
|
||||
* - pbuf: received struct pbuf passed to ip6_input()
|
||||
* - input_netif: struct netif on which the packet has been received
|
||||
* Return values:
|
||||
* - 0: Hook has not consumed the packet, packet is processed as normal
|
||||
* - != 0: Hook has consumed the packet.
|
||||
* If the hook consumed the packet, 'pbuf' is in the responsibility of the hook
|
||||
* (i.e. free it when done).
|
||||
*/
|
||||
|
||||
/**
|
||||
* LWIP_HOOK_IP6_ROUTE(src, dest):
|
||||
* - called from ip6_route() (IPv6)
|
||||
* - src: sourc IPv6 address
|
||||
* - dest: destination IPv6 address
|
||||
* Returns the destination netif or NULL if no destination netif is found. In
|
||||
* that case, ip6_route() continues as normal.
|
||||
*/
|
||||
|
||||
/**
|
||||
* LWIP_HOOK_VLAN_CHECK(netif, eth_hdr, vlan_hdr):
|
||||
* - called from ethernet_input() if VLAN support is enabled
|
||||
|
Loading…
Reference in New Issue
Block a user