diff --git a/CHANGELOG b/CHANGELOG index db504c43..c43ece38 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -81,6 +81,9 @@ HISTORY ++ Bugfixes: + 2017-11-08: Joel Cunningham + * netif: ensure link and admin states are up in issue reports (bug #52353) + 2017-09-12: David Lockyer * select: allocate select_cb from memp for LWIP_MPU_COMPATIBLE = 1 (bug #51990) diff --git a/src/core/netif.c b/src/core/netif.c index 3e9f399f..d056a19f 100644 --- a/src/core/netif.c +++ b/src/core/netif.c @@ -742,9 +742,7 @@ netif_set_up(struct netif *netif) } #endif - if (netif->flags & NETIF_FLAG_LINK_UP) { - netif_issue_reports(netif, NETIF_REPORT_TYPE_IPV4 | NETIF_REPORT_TYPE_IPV6); - } + netif_issue_reports(netif, NETIF_REPORT_TYPE_IPV4 | NETIF_REPORT_TYPE_IPV6); } } @@ -753,6 +751,12 @@ netif_set_up(struct netif *netif) static void netif_issue_reports(struct netif *netif, u8_t report_type) { + /* Only send reports when both link and admin states are up */ + if (!(netif->flags & NETIF_FLAG_LINK_UP) || + !(netif->flags & NETIF_FLAG_UP)) { + return; + } + #if LWIP_IPV4 if ((report_type & NETIF_REPORT_TYPE_IPV4) && !ip4_addr_isany_val(*netif_ip4_addr(netif))) { @@ -865,9 +869,8 @@ netif_set_link_up(struct netif *netif) autoip_network_changed(netif); #endif /* LWIP_AUTOIP */ - if (netif->flags & NETIF_FLAG_UP) { - netif_issue_reports(netif, NETIF_REPORT_TYPE_IPV4 | NETIF_REPORT_TYPE_IPV6); - } + netif_issue_reports(netif, NETIF_REPORT_TYPE_IPV4 | NETIF_REPORT_TYPE_IPV6); + NETIF_LINK_CALLBACK(netif); #if LWIP_NETIF_EXT_STATUS_CALLBACK {