if (overwrite || !iface->ifname[0])
ifname = ubus_get_ifname(name);
#endif
- if ((c = tb[IFACE_ATTR_IFNAME]))
- ifname = blobmsg_get_string(c);
- else if ((c = tb[IFACE_ATTR_NETWORKID]))
- ifname = blobmsg_get_string(c);
+
+ if (overwrite) {
+ if ((c = tb[IFACE_ATTR_IFNAME]))
+ ifname = blobmsg_get_string(c);
+ else if ((c = tb[IFACE_ATTR_NETWORKID]))
+ ifname = blobmsg_get_string(c);
+ }
if (!iface->ifname[0] && !ifname)
return -1;
if ((c = tb[IFACE_ATTR_DYNAMICDHCP]))
iface->no_dynamic_dhcp = !blobmsg_get_bool(c);
- if ((c = tb[IFACE_ATTR_IGNORE]))
+ if (overwrite && (c = tb[IFACE_ATTR_IGNORE]))
iface->ignore = blobmsg_get_bool(c);
if ((c = tb[IFACE_ATTR_LEASETIME])) {
if ((c = tb[IFACE_ATTR_MASTER]))
iface->master = blobmsg_get_bool(c);
- if ((c = tb[IFACE_ATTR_UPSTREAM])) {
+ if (overwrite && (c = tb[IFACE_ATTR_UPSTREAM])) {
struct blob_attr *cur;
unsigned rem;
int setup_dhcpv4_interface(struct interface *iface, bool enable)
{
if (iface->dhcpv4_event.uloop.fd > 0) {
+ uloop_fd_delete(&iface->dhcpv4_event.uloop);
close(iface->dhcpv4_event.uloop.fd);
iface->dhcpv4_event.uloop.fd = -1;
}