On Tue, Dec 12, 2017 at 1:05 PM, John Crispin <j...@phrozen.org> wrote: > > > On 04/12/17 07:04, wendy2001...@163.com wrote: >> >> From: Wendy Wu <wendy2001...@163.com> >> >> Issue description: >> Configurate /etc/config/network, >> Set the ula_prefix in globals section, >> config globals 'globals' >> option ula_prefix 'fdc7:8830:f3be::/48' >> Add the following option in 'lan' interface, >> option ip6ifaceid 'eui64' >> Then execute /etc/init.d/network, the br-lan ipv6 address with ula_prefix >> is incorrect. >> Result see the following, fdc7:8830:f3be:0:200:ff:fe00:0/64 is incorrect >> address >> root@mygateway:~# ifconfig br-lan >> br-lan Link encap:Ethernet HWaddr E0:B9:E5:66:94:DE >> inet addr:192.168.1.1 Bcast:192.168.1.255 >> Mask:255.255.255.0 >> inet6 addr: fe80::e2b9:e5ff:fe66:94de/64 Scope:Link >> inet6 addr: fdc7:8830:f3be:0:200:ff:fe00:0/64 Scope:Global >> inet6 addr: 4085:6666:f:e7e0:e2b9:e5ff:fe66:94de/64 >> Scope:Global >> UP BROADCAST RUNNING ALLMULTI MULTICAST MTU:1500 Metric:1 >> RX packets:17 errors:0 dropped:0 overruns:0 frame:0 >> TX packets:281 errors:0 dropped:0 overruns:0 carrier:0 >> collisions:0 txqueuelen:0 >> RX bytes:2262 (2.2 KiB) TX bytes:111905 (109.2 KiB) >> >> After the fix, fdc7:8830:f3be:0:e2b9:e5ff:fe66:94de/64 is correct address >> See the following, >> root@mygateway:~# ifconfig br-lan >> br-lan Link encap:Ethernet HWaddr E0:B9:E5:66:94:DE >> inet addr:192.168.1.1 Bcast:192.168.1.255 >> Mask:255.255.255.0 >> inet6 addr: fe80::e2b9:e5ff:fe66:94de/64 Scope:Link >> inet6 addr: 4085:6666:f:b130:e2b9:e5ff:fe66:94de/64 >> Scope:Global >> inet6 addr: fdc7:8830:f3be:0:e2b9:e5ff:fe66:94de/64 >> Scope:Global >> UP BROADCAST RUNNING ALLMULTI MULTICAST MTU:1500 Metric:1 >> RX packets:2462 errors:0 dropped:0 overruns:0 frame:0 >> TX packets:31072 errors:0 dropped:0 overruns:0 carrier:0 >> collisions:0 txqueuelen:0 >> RX bytes:115038 (112.3 KiB) TX bytes:12676812 (12.0 MiB) >> >> Root cause: >> When eui64 ipv6 address with ula_prefix for br-lan is created, the lan >> interface setting has not been ready. >> So The mac address for br-lan is null, and the eui64 address with >> ula_prefix is incorrect. >> >> Solution: >> Put the ula_prefix global initial part after device pending >> >> Signed-off-by: wendy wu <wendy2001...@163.com> >> --- >> config.c | 20 ++++++++++++++++---- >> 1 file changed, 16 insertions(+), 4 deletions(-) >> >> diff --git a/config.c b/config.c >> index 21791af..a494e84 100644 >> --- a/config.c >> +++ b/config.c >> @@ -310,10 +310,6 @@ config_init_globals(void) >> if (!globals) >> return; >> - const char *ula_prefix = uci_lookup_option_string( >> - uci_ctx, globals, "ula_prefix"); >> - interface_ip_set_ula_prefix(ula_prefix); >> - >> const char *default_ps = uci_lookup_option_string( >> uci_ctx, globals, "default_ps"); >> @@ -324,6 +320,21 @@ config_init_globals(void) >> config_parse_global_ps_val(globals, >> "default_rps_flow_cnt")); >> } >> +static void >> +config_init_globals_ula(void) >> +{ >> + struct uci_section *globals = uci_lookup_section( >> + uci_ctx, uci_network, "globals"); >> + if (!globals) >> + return; >> + >> + const char *ula_prefix = uci_lookup_option_string( >> + uci_ctx, globals, "ula_prefix"); >> + >> + interface_ip_set_ula_prefix(ula_prefix); >> + >> +} >> + >> static void >> config_parse_wireless_device(struct uci_section *s) >> { >> @@ -447,6 +458,7 @@ config_init_all(void) >> device_reset_old(); >> device_init_pending(); >> + config_init_globals_ula(); > > @Hans: can we just move config_init_globals() here ? The proposed patch does not fix the root cause of the problem being a race condition in interface_set_prefix_address when eui64 is configured as ip6ifaceid. The root cause is fixed by http://lists.infradead.org/pipermail/lede-dev/2017-December/010320.html while further issues were fixed in http://lists.infradead.org/pipermail/lede-dev/2017-December/010319.html.
Hans > > John > >> vlist_flush(&interfaces); >> device_free_unused(NULL); >> interface_refresh_assignments(false); > > _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev