return 0;
dep->claimed = true;
- DPRINTF("claim device %s, new refcount: %d\n", dev->ifname, dev->active + 1);
+ D(DEVICE, "claim device %s, new refcount: %d\n", dev->ifname, dev->active + 1);
if (++dev->active != 1)
return 0;
dep->claimed = false;
dev->active--;
- DPRINTF("release device %s, new refcount: %d\n", dev->ifname, dev->active);
+ D(DEVICE, "release device %s, new refcount: %d\n", dev->ifname, dev->active);
assert(dev->active >= 0);
if (dev->active)
if (name)
strncpy(dev->ifname, name, IFNAMSIZ);
- DPRINTF("Initialize device '%s'\n", dev->ifname);
+ D(DEVICE, "Initialize device '%s'\n", dev->ifname);
INIT_LIST_HEAD(&dev->users);
dev->type = type;
}
{
struct device_user *dep, *tmp;
- DPRINTF("Clean up device '%s'\n", dev->ifname);
+ D(DEVICE, "Clean up device '%s'\n", dev->ifname);
list_for_each_entry_safe(dep, tmp, &dev->users, list) {
if (!dep->cb)
continue;
if (dev->present == state)
return;
- DPRINTF("Device '%s' %s present\n", dev->ifname, state ? "is now" : "is no longer" );
+ D(DEVICE, "Device '%s' %s present\n", dev->ifname, state ? "is now" : "is no longer" );
dev->present = state;
device_broadcast_event(dev, state ? DEV_EVENT_ADD : DEV_EVENT_REMOVE);
}
blobmsg_parse(dev_attrs, __DEV_ATTR_MAX, tb,
blob_data(attr), blob_len(attr));
- blobmsg_parse(dev_attrs, __DEV_ATTR_MAX, tb1,
- blob_data(dev->config), blob_len(dev->config));
+ if (dev->config)
+ blobmsg_parse(dev_attrs, __DEV_ATTR_MAX, tb1,
+ blob_data(dev->config), blob_len(dev->config));
+ else
+ memset(tb1, 0, sizeof(tb1));
if (!config_diff(tb, tb1, &device_attr_list, NULL))
return DEV_CONFIG_NO_CHANGE;