Fixed passing ip_input() to netif_add() for single-IP-version NO_SYS configurations

This commit is contained in:
sg 2015-09-16 22:09:54 +02:00
parent b85b554db1
commit 68a1ec2eb1
3 changed files with 20 additions and 7 deletions

View File

@ -349,13 +349,14 @@ return_noroute:
} }
#endif /* IP_FORWARD */ #endif /* IP_FORWARD */
#if LWIP_IPV6
/* If both IP versions are enabled, this function can dispatch packets to the correct one. /* If both IP versions are enabled, this function can dispatch packets to the correct one.
* May be used as netif input function. * If only IPv4 is enabled, this directly maps at ip4_input.
*/ * May be used as netif input function.
*/
err_t err_t
ip_input(struct pbuf *p, struct netif *inp) ip_input(struct pbuf *p, struct netif *inp)
{ {
#if LWIP_IPV6
if (p != NULL) { if (p != NULL) {
if (IP_HDR_GET_VERSION(p->payload) == 6) { if (IP_HDR_GET_VERSION(p->payload) == 6) {
return ip6_input(p, inp); return ip6_input(p, inp);
@ -363,8 +364,10 @@ ip_input(struct pbuf *p, struct netif *inp)
return ip4_input(p, inp); return ip4_input(p, inp);
} }
return ERR_VAL; return ERR_VAL;
#else /* LWIP_IPV6 */
return ip4_input(p, inp);
#endif /* LWIP_IPV6 */
} }
#endif
/** /**
* This function is called by the network interface device driver when * This function is called by the network interface device driver when

View File

@ -375,6 +375,17 @@ ip6_forward(struct pbuf *p, struct ip6_hdr *iphdr, struct netif *inp)
} }
#endif /* LWIP_IPV6_FORWARD */ #endif /* LWIP_IPV6_FORWARD */
#if !LWIP_IPV4
/* If both IP versions are enabled, this function can dispatch packets to the correct one.
* If only IPv6 is enabled, this directly maps at ip6_input.
* May be used as netif input function.
*/
err_t
ip_input(struct pbuf *p, struct netif *inp)
{
return ip6_input(p, inp);
}
#endif /* !LWIP_IPV4 */
/** /**
* This function is called by the network interface device driver when * This function is called by the network interface device driver when

View File

@ -267,7 +267,6 @@ extern struct ip_globals ip_data;
ip6_2_ip(ip6_netif_get_local_ip(netif, ip_2_ip6(dest)), storage) : \ ip6_2_ip(ip6_netif_get_local_ip(netif, ip_2_ip6(dest)), storage) : \
ip4_2_ip(ip4_netif_get_local_ip(netif), storage)) ip4_2_ip(ip4_netif_get_local_ip(netif), storage))
#define ip_debug_print(is_ipv6, p) ((is_ipv6) ? ip6_debug_print(p) : ip4_debug_print(p)) #define ip_debug_print(is_ipv6, p) ((is_ipv6) ? ip6_debug_print(p) : ip4_debug_print(p))
err_t ip_input(struct pbuf *p, struct netif *inp);
#elif LWIP_IPV4 /* LWIP_IPV4 && LWIP_IPV6 */ #elif LWIP_IPV4 /* LWIP_IPV4 && LWIP_IPV6 */
#define ip_output(isipv6, p, src, dest, ttl, tos, proto) \ #define ip_output(isipv6, p, src, dest, ttl, tos, proto) \
ip4_output(p, src, dest, ttl, tos, proto) ip4_output(p, src, dest, ttl, tos, proto)
@ -282,7 +281,6 @@ err_t ip_input(struct pbuf *p, struct netif *inp);
#define ip_netif_get_local_ip(isipv6, netif, dest, storage) \ #define ip_netif_get_local_ip(isipv6, netif, dest, storage) \
ip4_netif_get_local_ip(netif) ip4_netif_get_local_ip(netif)
#define ip_debug_print(is_ipv6, p) ip4_debug_print(p) #define ip_debug_print(is_ipv6, p) ip4_debug_print(p)
#define ip_input(p, inp) ip4_input(p, inp)
#elif LWIP_IPV6 /* LWIP_IPV4 && LWIP_IPV6 */ #elif LWIP_IPV6 /* LWIP_IPV4 && LWIP_IPV6 */
#define ip_output(isipv6, p, src, dest, ttl, tos, proto) \ #define ip_output(isipv6, p, src, dest, ttl, tos, proto) \
ip6_output(p, src, dest, ttl, tos, proto) ip6_output(p, src, dest, ttl, tos, proto)
@ -297,7 +295,6 @@ err_t ip_input(struct pbuf *p, struct netif *inp);
#define ip_netif_get_local_ip(isipv6, netif, dest, storage) \ #define ip_netif_get_local_ip(isipv6, netif, dest, storage) \
ip6_netif_get_local_ip(netif, dest) ip6_netif_get_local_ip(netif, dest)
#define ip_debug_print(is_ipv6, p) ip6_debug_print(p) #define ip_debug_print(is_ipv6, p) ip6_debug_print(p)
#define ip_input(p, inp) ip6_input(p, inp)
#endif /* LWIP_IPV6 */ #endif /* LWIP_IPV6 */
#define ip_route_get_local_ip(isipv6, src, dest, netif, ipaddr, storage) do { \ #define ip_route_get_local_ip(isipv6, src, dest, netif, ipaddr, storage) do { \
@ -305,6 +302,8 @@ err_t ip_input(struct pbuf *p, struct netif *inp);
(ipaddr) = ip_netif_get_local_ip(isipv6, netif, dest, storage); \ (ipaddr) = ip_netif_get_local_ip(isipv6, netif, dest, storage); \
}while(0) }while(0)
err_t ip_input(struct pbuf *p, struct netif *inp);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif