diff options
author | Kinsey Moore <kinsey.moore@oarcorp.com> | 2023-03-23 13:58:45 -0500 |
---|---|---|
committer | Joel Sherrill <joel@rtems.org> | 2023-03-29 11:44:31 -0500 |
commit | c43456fdf681a967f00c71cfefd29b497fdda7ca (patch) | |
tree | f53fe24b66153ab912accd5037e42a2ddfc9f955 | |
parent | tms570_emac: Fix print formats (diff) | |
download | rtems-lwip-c43456fdf681a967f00c71cfefd29b497fdda7ca.tar.bz2 |
rtemslwip/ifaddrs: Set loopback flag
Some consumers of getifaddrs() depend on the loopback flag being set
appropriately to filter interfaces. Make sure that requirement is
satisfied.
-rw-r--r-- | rtemslwip/bsd_compat/ifaddrs.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/rtemslwip/bsd_compat/ifaddrs.c b/rtemslwip/bsd_compat/ifaddrs.c index dc6b7f2..9b97d4e 100644 --- a/rtemslwip/bsd_compat/ifaddrs.c +++ b/rtemslwip/bsd_compat/ifaddrs.c @@ -65,6 +65,12 @@ static struct ifaddrs *create_ifaddr_from_netif(struct netif *netif) inet_addr_from_ip4addr(&((struct sockaddr_in *)ifaddr->ifa_addr)->sin_addr, &netif->ip_addr.u_addr.ip4); inet_addr_from_ip4addr(&((struct sockaddr_in *)ifaddr->ifa_netmask)->sin_addr, &netif->netmask.u_addr.ip4); ((struct sockaddr_in *)ifaddr->ifa_netmask)->sin_addr.s_addr = netif->ip_addr.u_addr.ip4.addr & netif->netmask.u_addr.ip4.addr; + + /* Set IFF_LOOPBACK flag if appropriate */ + if (127 != (ip4_addr_get_u32(&netif->ip_addr.u_addr.ip4) >> 24)) { + ifaddr->ifa_flags |= IFF_LOOPBACK; + } + return ifaddr; } |