X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=system-linux.c;h=76740f7d6078c64c94cf58b842e3579c320b9a3f;hp=f5c900db2185ff5b6e17cc5228bc3f04208f92aa;hb=97e748de49c02f36a1e75bd9f9552311fb4051b4;hpb=2f31bff38d4dc2f36006ded6b8a7d039cb569eaa diff --git a/system-linux.c b/system-linux.c index f5c900d..76740f7 100644 --- a/system-linux.c +++ b/system-linux.c @@ -65,6 +65,8 @@ static void handle_hotplug_event(struct uloop_fd *u, unsigned int events); static char dev_buf[256]; +static bool iprules_flushed = false; + static void handler_nl_event(struct uloop_fd *u, unsigned int events) { @@ -1177,6 +1179,13 @@ static int system_iprule(struct iprule *rule, int cmd) int system_add_iprule(struct iprule *rule) { + /* trigger flush of existing rules when adding first rule the first time */ + if (!iprules_flushed) + { + system_flush_iprules(); + iprules_flushed = true; + } + return system_iprule(rule, RTM_NEWRULE); }