diff options
author | Felix Fietkau <nbd@openwrt.org> | 2011-10-18 20:38:44 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2011-10-18 20:38:44 +0200 |
commit | 8e1b0ca9e75668a9663196520af4422b837aa4a6 (patch) | |
tree | b2b3b92ed7f765c72943ce345227f4bd1889c565 /proto-shell.c | |
parent | f3074dda01b5316d3743d76998d428c25c143469 (diff) |
proto-shell: reset l3 device if it was set before
Diffstat (limited to 'proto-shell.c')
-rw-r--r-- | proto-shell.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/proto-shell.c b/proto-shell.c index f197c62..415eb74 100644 --- a/proto-shell.c +++ b/proto-shell.c @@ -318,11 +318,14 @@ proto_shell_update_link(struct proto_shell_state *state, struct blob_attr **tb) if (!tb[NOTIFY_IFNAME]) { if (!state->proto.iface->main_dev.dev) return UBUS_STATUS_INVALID_ARGUMENT; - } else if (!state->l3_dev.dev) { + } else { + if (state->l3_dev.dev) + device_remove_user(&state->l3_dev); + device_add_user(&state->l3_dev, device_get(blobmsg_data(tb[NOTIFY_IFNAME]), true)); - device_claim(&state->l3_dev); state->proto.iface->l3_dev = &state->l3_dev; + device_claim(&state->l3_dev); } interface_ip_update_start(state->proto.iface); |