Skip to content

Commit aaab9dc

Browse files
committed
net: if: Fix source interface select for IPv4 address
Do the selection same way as in IPv6 so that if user supplies unspecified destination address, the default interface is selected the same way. Signed-off-by: Jukka Rissanen <[email protected]>
1 parent 7c89bd3 commit aaab9dc

File tree

1 file changed

+4
-9
lines changed

1 file changed

+4
-9
lines changed

subsys/net/ip/net_if.c

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3538,22 +3538,17 @@ bool net_if_ipv4_is_addr_bcast(struct net_if *iface,
35383538
struct net_if *net_if_ipv4_select_src_iface(const struct in_addr *dst)
35393539
{
35403540
struct net_if *selected = NULL;
3541+
const struct in_addr *src;
35413542

3542-
STRUCT_SECTION_FOREACH(net_if, iface) {
3543-
bool ret;
3544-
3545-
ret = net_if_ipv4_addr_mask_cmp(iface, dst);
3546-
if (ret) {
3547-
selected = iface;
3548-
goto out;
3549-
}
3543+
src = net_if_ipv4_select_src_addr(NULL, dst);
3544+
if (src != net_ipv4_unspecified_address()) {
3545+
net_if_ipv4_addr_lookup(src, &selected);
35503546
}
35513547

35523548
if (selected == NULL) {
35533549
selected = net_if_get_default();
35543550
}
35553551

3556-
out:
35573552
return selected;
35583553
}
35593554

0 commit comments

Comments
 (0)