Some code cleanup related to netif index handling

Made the macro "netif_index_to_num" private, if someone needs it externally, please complain.
This commit is contained in:
Dirk Ziegelmeier 2017-02-13 13:21:45 +01:00
parent 32954e9d4f
commit d4d8fd819d
5 changed files with 31 additions and 17 deletions

View File

@ -104,6 +104,7 @@
struct netif *netif_list; struct netif *netif_list;
struct netif *netif_default; struct netif *netif_default;
#define netif_index_to_num(index) ((index) - 1)
static u8_t netif_num; static u8_t netif_num;
#if LWIP_NUM_NETIF_CLIENT_DATA > 0 #if LWIP_NUM_NETIF_CLIENT_DATA > 0
@ -1309,7 +1310,7 @@ netif_name_to_index(const char *name)
{ {
struct netif *netif = netif_find(name); struct netif *netif = netif_find(name);
if (netif != NULL) { if (netif != NULL) {
return netif_num_to_index(netif); return netif_get_index(netif);
} }
/* No name found, return invalid index */ /* No name found, return invalid index */
return 0; return 0;
@ -1345,3 +1346,25 @@ netif_index_to_name(u8_t idx, char *name)
} }
return NULL; return NULL;
} }
/**
* @ingroup netif
* Return the interface for the netif index
*
* @param index index of netif to find
*/
struct netif*
netif_get_by_index(u8_t index)
{
struct netif* netif;
if (index != NETIF_NO_INDEX) {
for (netif = netif_list; netif != NULL; netif = netif->next) {
if (index == netif_get_index(netif)) {
return netif; /* found! */
}
}
}
return NULL;
}

View File

@ -327,15 +327,11 @@ raw_sendto(struct raw_pcb *pcb, struct pbuf *p, const ip_addr_t *ipaddr)
#if LWIP_MULTICAST_TX_OPTIONS #if LWIP_MULTICAST_TX_OPTIONS
netif = NULL; netif = NULL;
if (ip_addr_ismulticast(ipaddr) && (pcb->mcast_ifindex != NETIF_NO_INDEX)) { if (ip_addr_ismulticast(ipaddr)) {
/* For multicast-destined packets, use the user-provided interface index to /* For multicast-destined packets, use the user-provided interface index to
* determine the outgoing interface, if an interface index is set and a * determine the outgoing interface, if an interface index is set and a
* matching netif can be found. Otherwise, fall back to regular routing. */ * matching netif can be found. Otherwise, fall back to regular routing. */
for (netif = netif_list; netif != NULL; netif = netif->next) { netif = netif_get_by_index(pcb->mcast_ifindex);
if (pcb->mcast_ifindex == netif_num_to_index(netif)) {
break; /* found! */
}
}
} }
if (netif == NULL) if (netif == NULL)

View File

@ -540,11 +540,7 @@ udp_sendto_chksum(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip,
* list, but by doing so we skip a route lookup. If the interface index has * list, but by doing so we skip a route lookup. If the interface index has
* gone stale, we fall through and do the regular route lookup after all. */ * gone stale, we fall through and do the regular route lookup after all. */
if (pcb->mcast_ifindex != NETIF_NO_INDEX) { if (pcb->mcast_ifindex != NETIF_NO_INDEX) {
for (netif = netif_list; netif != NULL; netif = netif->next) { netif = netif_get_by_index(pcb->mcast_ifindex);
if (pcb->mcast_ifindex == netif_num_to_index(netif)) {
break; /* found! */
}
}
} }
#if LWIP_IPV4 #if LWIP_IPV4
else else

View File

@ -193,7 +193,7 @@ enum lwip_ipv6_scope_type
*/ */
#define ip6_addr_assign_zone(ip6addr, type, netif) \ #define ip6_addr_assign_zone(ip6addr, type, netif) \
(ip6_addr_set_zone((ip6addr), \ (ip6_addr_set_zone((ip6addr), \
ip6_addr_has_scope((ip6addr), (type)) ? netif_num_to_index(netif) : 0)) ip6_addr_has_scope((ip6addr), (type)) ? netif_get_index(netif) : 0))
/** /**
* Test whether an IPv6 address is "zone-compatible" with a network interface. * Test whether an IPv6 address is "zone-compatible" with a network interface.
@ -215,7 +215,7 @@ enum lwip_ipv6_scope_type
* @return 1 if the address is scope-compatible with the netif, 0 if not. * @return 1 if the address is scope-compatible with the netif, 0 if not.
*/ */
#define ip6_addr_test_zone(ip6addr, netif) \ #define ip6_addr_test_zone(ip6addr, netif) \
(ip6_addr_equals_zone((ip6addr), netif_num_to_index(netif))) (ip6_addr_equals_zone((ip6addr), netif_get_index(netif)))
#endif /* !IPV6_CUSTOM_SCOPES */ #endif /* !IPV6_CUSTOM_SCOPES */

View File

@ -497,13 +497,12 @@ err_t netif_add_ip6_address(struct netif *netif, const ip6_addr_t *ip6addr, s8_t
#define NETIF_SET_HWADDRHINT(netif, hint) #define NETIF_SET_HWADDRHINT(netif, hint)
#endif /* LWIP_NETIF_HWADDRHINT */ #endif /* LWIP_NETIF_HWADDRHINT */
/* @ingroup netif */
u8_t netif_name_to_index(const char *name); u8_t netif_name_to_index(const char *name);
char * netif_index_to_name(u8_t idx, char *name); char * netif_index_to_name(u8_t idx, char *name);
struct netif* netif_get_by_index(u8_t index);
/* Interface indexes always start at 1 per RFC 3493, section 4, num starts at 0 */ /* Interface indexes always start at 1 per RFC 3493, section 4, num starts at 0 */
#define netif_num_to_index(netif) ((netif)->num + 1) #define netif_get_index(netif) ((netif)->num + 1)
#define netif_index_to_num(index) ((index) - 1)
#define NETIF_NO_INDEX (0) #define NETIF_NO_INDEX (0)
#ifdef __cplusplus #ifdef __cplusplus