Fix prefix class logic
[project/odhcpd.git] / src / odhcpd.c
index 6070bfb..d6ca298 100644 (file)
@@ -83,9 +83,6 @@ int main()
        if (init_dhcpv4())
                return 4;
 
-       if (init_ubus())
-               return 4;
-
        odhcpd_run();
        return 0;
 }
@@ -131,6 +128,7 @@ int odhcpd_get_interface_mtu(const char *ifname)
 int odhcpd_get_mac(const struct interface *iface, uint8_t mac[6])
 {
        struct ifreq ifr;
+       memset(&ifr, 0, sizeof(ifr));
        strncpy(ifr.ifr_name, iface->ifname, sizeof(ifr.ifr_name));
        if (ioctl(ioctl_sock, SIOCGIFHWADDR, &ifr) < 0)
                return -1;
@@ -242,6 +240,14 @@ ssize_t odhcpd_get_interface_addresses(int ifindex,
                if (ifa->ifa_flags & IFA_F_DEPRECATED)
                        addrs[ret].preferred = 0;
 
+               addrs[ret].has_class = false;
+               addrs[ret].class = 0;
+#ifdef WITH_UBUS
+               struct interface *iface = odhcpd_get_interface_by_index(ifindex);
+               if (iface)
+                       addrs[ret].has_class = ubus_get_class(iface->ifname,
+                                       &addrs[ret].addr, &addrs[ret].class);
+#endif
                ++ret;
        }