diff --git a/src/core/ipv4/icmp.c b/src/core/ipv4/icmp.c index 941031ee..f2363007 100644 --- a/src/core/ipv4/icmp.c +++ b/src/core/ipv4/icmp.c @@ -120,7 +120,7 @@ icmp_input(struct pbuf *p, struct netif *inp) if (ip_addr_isbroadcast(ip_current_dest_addr(), ip_current_netif())) { #if LWIP_BROADCAST_PING /* For broadcast, use address of receiving interface as source address */ - src = &inp->ip_addr; + src = netif_ip4_addr(inp); #else /* LWIP_BROADCAST_PING */ LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: Not echoing to broadcast pings\n")); goto icmperr; diff --git a/src/core/udp.c b/src/core/udp.c index f88cf773..a56717c7 100644 --- a/src/core/udp.c +++ b/src/core/udp.c @@ -683,7 +683,7 @@ udp_sendto_if_chksum(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_i #if LWIP_IPV4 if (ip4_addr_isany(ip_2_ip4(&pcb->local_ip))) { /* use outgoing network interface IP address as source address */ - src_ip = &netif->ip_addr; + src_ip = netif_ip_addr4(netif); } else { /* check if UDP PCB local IP address is correct * this could be an old address if netif->ip_addr has changed */ diff --git a/src/include/lwip/ip4.h b/src/include/lwip/ip4.h index c92e632d..32b26669 100644 --- a/src/include/lwip/ip4.h +++ b/src/include/lwip/ip4.h @@ -143,7 +143,7 @@ err_t ip4_output_if_opt_src(struct pbuf *p, const ip4_addr_t *src, const ip4_add void ip4_set_default_multicast_netif(struct netif* default_multicast_netif); #endif /* LWIP_MULTICAST_TX_OPTIONS */ -#define ip4_netif_get_local_ip(netif) (((netif) != NULL) ? &((netif)->ip_addr) : NULL) +#define ip4_netif_get_local_ip(netif) (((netif) != NULL) ? netif_ip_addr4(netif) : NULL) #if IP_DEBUG void ip4_debug_print(struct pbuf *p); diff --git a/src/include/lwip/netif.h b/src/include/lwip/netif.h index a0b425a5..c37abbe7 100644 --- a/src/include/lwip/netif.h +++ b/src/include/lwip/netif.h @@ -351,6 +351,8 @@ void netif_set_gw(struct netif *netif, const ip4_addr_t *gw); #define netif_ip4_addr(netif) ((const ip4_addr_t*)ip_2_ip4(&((netif)->ip_addr))) #define netif_ip4_netmask(netif) ((const ip4_addr_t*)ip_2_ip4(&((netif)->netmask))) #define netif_ip4_gw(netif) ((const ip4_addr_t*)ip_2_ip4(&((netif)->gw))) +#define netif_ip_addr4(netif) ((const ip_addr_t*)&((netif)->ip_addr)) +#define netif_ip_gw4(netif) ((const ip_addr_t*)&((netif)->gw)) #endif /* LWIP_IPV4 */ void netif_set_up(struct netif *netif);