ubus: always trigger an update if interface is not found
authorHans Dedecker <dedeckeh@gmail.com>
Wed, 27 Feb 2019 10:10:29 +0000 (11:10 +0100)
committerHans Dedecker <dedeckeh@gmail.com>
Wed, 27 Feb 2019 10:47:12 +0000 (11:47 +0100)
Commit 9f25dd8af76dc30e54ddcbb4a284058e598951d5 changed the logic of
handle_update by only triggering an update if the interface is
found in the interface list and is not set as to be ignored.
However this breaks the behavior of loading the dhcp config for
interfaces which were previously not yet known by netifd and as
result were not yet created in the interface list.

Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
src/ubus.c

index b263da6516b36b0297bb5fe8a156ce3af4d2c602..b2e48cf184ca69cdd1e5be5f42fb5d29b224672e 100644 (file)
@@ -245,15 +245,15 @@ static int handle_update(_unused struct ubus_context *ctx, _unused struct ubus_o
 {
        struct blob_attr *tb[IFACE_ATTR_MAX];
        struct interface *c;
-       bool update = false;
+       bool update = true;
 
        blobmsg_parse(iface_attrs, IFACE_ATTR_MAX, tb, blob_data(msg), blob_len(msg));
        const char *interface = (tb[IFACE_ATTR_INTERFACE]) ?
                        blobmsg_get_string(tb[IFACE_ATTR_INTERFACE]) : "";
 
        avl_for_each_element(&interfaces, c, avl) {
-               if (!strcmp(interface, c->name) && !c->ignore) {
-                       update = true;
+               if (!strcmp(interface, c->name) && c->ignore) {
+                       update = false;
                        break;
                }
        }