Greeting,

I found /sbin/ifup does not take new network config, through it does reload 
before bringing interface up.

ifup orders netifd reload config via ubus call. But netifd uses an async event 
loop to do reloading work:

void netifd_reload(void)
{
        main_timer.cb = netifd_do_reload;
        uloop_timeout_set(&main_timer, 100);
}

That creates a race condition: interface will be brought up before 
netifd_do_reload gets a change to run.

Sleeping in ifup after ubus reload can fix this:

[ "$modes" = "down up" ] && ubus call network reload && sleep 1

I don't think we should change netifd_reload, so patch ifup is only way to make 
its reloading.

How about you say?

Best regards,
-Chen
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to