summaryrefslogtreecommitdiff
path: root/zebra/if_ioctl.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2017-10-16 12:00:38 -0400
committerGitHub <noreply@github.com>2017-10-16 12:00:38 -0400
commit5b8d8894f8ecb401acc9b3986bbb6ce95b3263e9 (patch)
tree077628692cdbae750e26d1b8f237c422bae6519d /zebra/if_ioctl.c
parent4c6ed05e4e2276c463f16c1dbf8d9f04bc1130fe (diff)
parent451fda4f9a2fadc24328e640077780a00ffcdac2 (diff)
Merge pull request #1298 from opensourcerouting/iface-rb-tree
Use rb-trees to store interfaces instead of linked-lists
Diffstat (limited to 'zebra/if_ioctl.c')
-rw-r--r--zebra/if_ioctl.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/zebra/if_ioctl.c b/zebra/if_ioctl.c
index 6396911e1b..1d108886de 100644
--- a/zebra/if_ioctl.c
+++ b/zebra/if_ioctl.c
@@ -105,10 +105,7 @@ static int interface_list_ioctl(void)
unsigned int size;
ifreq = (struct ifreq *)((caddr_t)ifconf.ifc_req + n);
- ifp = if_get_by_name_len(
- ifreq->ifr_name,
- strnlen(ifreq->ifr_name, sizeof(ifreq->ifr_name)),
- VRF_DEFAULT, 0);
+ ifp = if_get_by_name(ifreq->ifr_name, VRF_DEFAULT, 0);
if_add_update(ifp);
size = ifreq->ifr_addr.sa_len;
if (size < sizeof(ifreq->ifr_addr))
@@ -118,10 +115,7 @@ static int interface_list_ioctl(void)
}
#else
for (n = 0; n < ifconf.ifc_len; n += sizeof(struct ifreq)) {
- ifp = if_get_by_name_len(
- ifreq->ifr_name,
- strnlen(ifreq->ifr_name, sizeof(ifreq->ifr_name)),
- VRF_DEFAULT, 0);
+ ifp = if_get_by_name(ifreq->ifr_name, VRF_DEFAULT, 0);
if_add_update(ifp);
ifreq++;
}
@@ -137,7 +131,7 @@ end:
/* Get interface's index by ioctl. */
static int if_get_index(struct interface *ifp)
{
- ifp->ifindex = if_nametoindex(ifp->name);
+ if_set_index(ifp, if_nametoindex(ifp->name));
return ifp->ifindex;
}
@@ -268,10 +262,10 @@ static int if_getaddrs(void)
/* Fetch interface information via ioctl(). */
static void interface_info_ioctl()
{
- struct listnode *node, *nnode;
+ struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT);
struct interface *ifp;
- for (ALL_LIST_ELEMENTS(vrf_iflist(VRF_DEFAULT), node, nnode, ifp)) {
+ FOR_ALL_INTERFACES (vrf, ifp) {
if_get_index(ifp);
#ifdef SIOCGIFHWADDR
if_get_hwaddr(ifp);