X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=interface-event.c;h=c524ee28442f8c468b14748609d3ea64edb51513;hp=707764ae6d566b44aa41b307265e9ca5fe168e2c;hb=a565ae60a2fd6aea1fb64a8a3728d101ab2357c3;hpb=566af724dad393fa127e07469dcc9ade62bd3a75 diff --git a/interface-event.c b/interface-event.c index 707764a..c524ee2 100644 --- a/interface-event.c +++ b/interface-event.c @@ -14,7 +14,6 @@ #include #include #include -#include #include @@ -33,7 +32,8 @@ static struct uloop_process task = { }; static void -run_cmd(const char *ifname, const char *device, enum interface_event event) +run_cmd(const char *ifname, const char *device, enum interface_event event, + enum interface_update_flags updated) { char *argv[3]; int pid; @@ -53,6 +53,18 @@ run_cmd(const char *ifname, const char *device, enum interface_event event) setenv("INTERFACE", ifname, 1); if (device) setenv("DEVICE", device, 1); + + if (event == IFEV_UPDATE) { + if (updated & IUF_ADDRESS) + setenv("IFUPDATE_ADDRESSES", "1", 1); + if (updated & IUF_ROUTE) + setenv("IFUPDATE_ROUTES", "1", 1); + if (updated & IUF_PREFIX) + setenv("IFUPDATE_PREFIXES", "1", 1); + if (updated & IUF_DATA) + setenv("IFUPDATE_DATA", "1", 1); + } + argv[0] = hotplug_cmd_path; argv[1] = "iface"; argv[2] = NULL; @@ -75,7 +87,7 @@ call_hotplug(void) device = current->l3_dev.dev->ifname; D(SYSTEM, "Call hotplug handler for interface '%s' (%s)\n", current->name, device ? device : "none"); - run_cmd(current->name, device, current_ev); + run_cmd(current->name, device, current_ev, current->updated); } static void