netlink: rework IPv4 address refresh logic
[oweals/odhcpd.git] / src / odhcpd.c
index 8a6114892d5e38018ef3c90c6d736a86a440c291..fafa3f68642781e82fcfeb459c443fe14ad81a90 100644 (file)
@@ -291,31 +291,23 @@ int odhcpd_get_interface_dns_addr(const struct interface *iface, struct in6_addr
 struct interface* odhcpd_get_interface_by_index(int ifindex)
 {
        struct interface *iface;
-       list_for_each_entry(iface, &interfaces, head)
-               if (iface->ifindex == ifindex)
-                       return iface;
 
-       return NULL;
-}
-
-
-struct interface* odhcpd_get_interface_by_name(const char *name)
-{
-       struct interface *iface;
-       list_for_each_entry(iface, &interfaces, head)
-               if (!strcmp(iface->ifname, name))
+       avl_for_each_element(&interfaces, iface, avl) {
+               if (iface->ifindex == ifindex)
                        return iface;
+       }
 
        return NULL;
 }
 
-
 struct interface* odhcpd_get_master_interface(void)
 {
        struct interface *iface;
-       list_for_each_entry(iface, &interfaces, head)
+
+       avl_for_each_element(&interfaces, iface, avl) {
                if (iface->master)
                        return iface;
+       }
 
        return NULL;
 }
@@ -417,7 +409,8 @@ static void odhcpd_receive_packets(struct uloop_fd *u, _unused unsigned int even
                        return;
                } else if (destiface != 0) {
                        struct interface *iface;
-                       list_for_each_entry(iface, &interfaces, head) {
+
+                       avl_for_each_element(&interfaces, iface, avl) {
                                if (iface->ifindex != destiface)
                                        continue;