Summary:

Device connected to a dual-stack router where the DHCP6 answer arrives
first and contains no nameservers, we are finding that NTP never works.

Details:

This issue is basically the same issue that Olivier reported in this
thread, but with a twist:
https://lists.connman.net/pipermail/connman/2015-April/019125.html - We
applied Adam's patch (
https://lists.connman.net/pipermail/connman/2015-April/019156.html) and
with that applied, we can get NTP at startup correctly. However, it only
actually works because the automatically added gateway timeserver is
failing and causes a delay long enough for the dns lookup to work. If we
move the gateway IP after the FallbackTimeservers address, the resolving of
the dns name for the Fallback entry would fail and NTP will never work.

Network and config scenario:
FallbackTimeservers is configured to a DNS name. Customer has working ipv4
and ipv6 setup. DHCP4 or 6 are NOT providing any timeservers. DHCP4 is
providing nameservers. DHCP6 response arrives back first.

Here is the interesting thing, if we apply Adam's patch and also move the
gateway server to the end of the NTP list, we get a complete failure of NTP
again with this customers setup. It seems there is a subtle race condition
with the resolv being triggered before the route is in place even when
restarted from the ipconfig_changed callback he added. At least thats my
theory...

Any ideas on why resolving fails if done during the ipconfig_changed
callback? Attached are both patches we tried with.

Outside of this issue, there seems to be an artificial constraint placed on
having any nameservers to even attempt NTP. In timeserver.c resolv should
only need to be setup in the case where the NTP server is not an IP address
(i.e. inside __connman_timeserver_sync_next).

The following log files were generated with debugging enabled in service.c
and timeserver.c - If you need different settings, I am able to reproduce
this issue all the time.

------ Log file with gateway timeserver moved to after Fallbackservers in
ntp server order list. This shows the main bug that Adam's patch fixes
best. Look for the line with timeserver_start() -----
May 05 23:27:06 connmand[1491]: Connection Manager version 1.28
May 05 23:27:06 connmand[1491]: src/service.c:__connman_service_init()
May 05 23:27:06 connmand[1491]: src/timeserver.c:__connman_timeserver_init()
May 05 23:27:06 connmand[1491]: Checking loopback interface settings
May 05 23:27:06 connmand[1491]: System hostname is DEVNGMNF6CATAKNKMMFX
May 05 23:27:06 connmand[1491]: Failed to open RFKILL control device
May 05 23:27:06 connmand[1491]: lo {newlink} index 1 address
00:00:00:00:00:00 mtu 65536
May 05 23:27:06 connmand[1491]: lo {newlink} index 1 operstate 0 <UNKNOWN>
May 05 23:27:06 connmand[1491]: sit0 {newlink} index 2 address
00:00:00:00:08:00 mtu 1480
May 05 23:27:06 connmand[1491]: sit0 {newlink} index 2 operstate 2 <DOWN>
May 05 23:27:06 connmand[1491]: mlan0 {create} index 3 type 1 <ETHER>
May 05 23:27:06 connmand[1491]: mlan0 {RX} 38134 packets 36362582 bytes
May 05 23:27:06 connmand[1491]: mlan0 {TX} 27306 packets 4069659 bytes
May 05 23:27:06 connmand[1491]: mlan0 {update} flags 36867 <UP>
May 05 23:27:06 connmand[1491]: mlan0 {newlink} index 3 address
D0:E7:82:64:1B:1B mtu 1500
May 05 23:27:06 connmand[1491]: mlan0 {newlink} index 3 operstate 2 <DOWN>
May 05 23:27:06 connmand[1491]: Adding interface mlan0 [ wifi ]
May 05 23:27:06 connmand[1491]: uap0 {create} index 4 type 1 <ETHER>
May 05 23:27:06 connmand[1491]: uap0 {update} flags 4098 <DOWN>
May 05 23:27:06 connmand[1491]: uap0 {newlink} index 4 address
D0:E7:82:64:1B:1B mtu 1500
May 05 23:27:07 connmand[1491]: uap0 {newlink} index 4 operstate 2 <DOWN>
May 05 23:27:07 connmand[1491]: Ignoring interface uap0 (filtered)
May 05 23:27:07 connmand[1491]: Adding interface uap0 [ wifi ]
May 05 23:27:07 connmand[1491]:
src/service.c:__connman_service_create_from_network() network 0xadf358
May 05 23:27:07 connmand[1491]: src/service.c:connman_service_create()
service 0xadc138
May 05 23:27:07 connmand[1491]: src/service.c:service_initialize() service
0xadc138
May 05 23:27:07 connmand[1491]: src/service.c:service_get() service 0xadc138
May 05 23:27:07 connmand[1491]: src/service.c:update_from_network() service
0xadc138 network 0xadf358
May 05 23:27:07 connmand[1491]: src/service.c:service_register() service
0xadc138
May 05 23:27:07 connmand[1491]: src/service.c:service_register() path
/net/connman/service/wifi_d0e782641b1b_534b594433393642_managed_psk
May 05 23:27:07 connmand[1491]: src/service.c:service_load() service
0xadc138
May 05 23:27:07 connmand[1491]: src/service.c:service_schedule_added()
service 0xadc138
May 05 23:27:07 connmand[1491]:
src/service.c:__connman_service_auto_connect()
May 05 23:27:07 connmand[1491]: src/service.c:run_auto_connect()
May 05 23:27:07 connmand[1491]: src/service.c:auto_connect_service()
preferred 0 sessions 0 reason auto
May 05 23:27:07 connmand[1491]: src/service.c:auto_connect_service()
service 0xadc138 SKYD396B auto
May 05 23:27:07 connmand[1491]: src/service.c:__connman_service_connect()
service 0xadc138 state idle connect reason none -> auto
May 05 23:27:07 connmand[1491]:
src/service.c:__connman_service_clear_error() service 0xadc138
May 05 23:27:07 connmand[1491]: src/service.c:service_up() mlan0 up
May 05 23:27:07 connmand[1491]: src/service.c:allow_property_changed() no
property updates for service 0xadc138
May 05 23:27:07 connmand[1491]: src/service.c:service_lower_down() mlan0
lower down
May 05 23:27:07 connmand[1491]: src/service.c:stats_stop() service 0xadc138
May 05 23:27:07 connmand[1491]: src/service.c:service_save() service
0xadc138 new 0
May 05 23:27:07 connmand[1491]: src/service.c:service_up() mlan0 up
May 05 23:27:07 connmand[1491]: src/service.c:allow_property_changed() no
property updates for service 0xadc138
May 05 23:27:07 connmand[1491]: src/service.c:service_lower_down() mlan0
lower down
May 05 23:27:07 connmand[1491]: src/service.c:stats_stop() service 0xadc138
May 05 23:27:07 connmand[1491]: src/service.c:service_save() service
0xadc138 new 0
May 05 23:27:07 connmand[1491]: Skipping disconnect of
534b594433393642_managed_psk, network is connecting.
May 05 23:27:07 connmand[1491]:
src/service.c:__connman_service_ipconfig_indicate_state() service 0xadc138
(wifi_d0e782641b1b_534b594433393642_managed_psk) old state 1 (id...type 1
(IPv4)
May 05 23:27:07 connmand[1491]: src/service.c:service_indicate_state()
service 0xadc138 old idle - new association/idle => association
May 05 23:27:07 connmand[1491]: src/service.c:allow_property_changed() no
property updates for service 0xadc138
May 05 23:27:07 connmand[1491]:
src/service.c:__connman_service_ipconfig_indicate_state() service 0xadc138
(wifi_d0e782641b1b_534b594433393642_managed_psk) old state 1 (id...type 2
(IPv6)
May 05 23:27:07 connmand[1491]: src/service.c:service_indicate_state()
service 0xadc138 old association - new association/association =>
association
May 05 23:27:07 connmand[1491]: src/service.c:service_send_changed()
May 05 23:27:07 connmand[1491]:
src/service.c:service_append_added_foreach() new
/net/connman/service/wifi_d0e782641b1b_534b594433393642_managed_psk
May 05 23:27:07 connmand[1491]: mlan0 {add} route ff00:: gw :: scope 0
<UNIVERSE>
May 05 23:27:07 connmand[1491]: mlan0 {add} route fe80:: gw :: scope 0
<UNIVERSE>
May 05 23:27:07 connmand[1491]: mlan0 {RX} 38135 packets 36362703 bytes
May 05 23:27:07 connmand[1491]: mlan0 {TX} 27306 packets 4069659 bytes
May 05 23:27:07 connmand[1491]: mlan0 {update} flags 102403 <UP,LOWER_UP>
May 05 23:27:07 connmand[1491]: mlan0 {newlink} index 3 address
D0:E7:82:64:1B:1B mtu 1500
May 05 23:27:07 connmand[1491]: mlan0 {newlink} index 3 operstate 5
<DORMANT>
May 05 23:27:07 connmand[1491]: mlan0 {RX} 38136 packets 36362882 bytes
May 05 23:27:07 connmand[1491]: mlan0 {TX} 27309 packets 4069997 bytes
May 05 23:27:07 connmand[1491]: mlan0 {update} flags 102467
<UP,RUNNING,LOWER_UP>
May 05 23:27:07 connmand[1491]: src/service.c:service_lower_up() mlan0
lower up
May 05 23:27:07 connmand[1491]: src/service.c:stats_start() service 0xadc138
May 05 23:27:07 connmand[1491]: src/service.c:service_lower_up() mlan0
lower up
May 05 23:27:07 connmand[1491]: src/service.c:stats_start() service 0xadc138
May 05 23:27:07 connmand[1491]: mlan0 {newlink} index 3 address
D0:E7:82:64:1B:1B mtu 1500
May 05 23:27:07 connmand[1491]: mlan0 {newlink} index 3 operstate 6 <UP>
May 05 23:27:07 connmand[1491]:
src/service.c:__connman_service_ipconfig_indicate_state() service 0xadc138
(wifi_d0e782641b1b_534b594433393642_managed_psk) old state 2 (as...type 1
(IPv4)
May 05 23:27:07 connmand[1491]: src/service.c:service_indicate_state()
service 0xadc138 old association - new configuration/association =>
configuration
May 05 23:27:09 connmand[1491]:
src/service.c:connman_service_create_ip6config() ipv6 0xadcf08
May 05 23:27:09 connmand[1491]:
src/service.c:__connman_service_ipconfig_indicate_state() service 0xadc138
(wifi_d0e782641b1b_534b594433393642_managed_psk) old state 2 (as...type 2
(IPv6)
May 05 23:27:09 connmand[1491]: src/service.c:service_indicate_state()
service 0xadc138 old configuration - new configuration/configuration =>
configuration
May 05 23:27:09 connmand[1491]: mlan0 {add} route fd03:ea7d:7832:: gw ::
scope 0 <UNIVERSE>
May 05 23:27:11 connmand[1491]: mlan0 {add} address
fd03:ea7d:7832:0:d2e7:82ff:fe64:1b1b/64 label (null) family 10
May 05 23:27:11 connmand[1491]: src/service.c:service_ip_bound() mlan0 ip
bound
May 05 23:27:11 connmand[1491]: src/service.c:service_ip_bound() service
0xadc138 ipconfig 0xadcf08 type 2 method 5
May 05 23:27:11 connmand[1491]:
src/service.c:__connman_service_ipconfig_indicate_state() service 0xadc138
(wifi_d0e782641b1b_534b594433393642_managed_psk) old state 3 (co...type 2
(IPv6)
May 05 23:27:11 connmand[1491]: src/service.c:service_indicate_state()
service 0xadc138 old configuration - new configuration/ready => ready
May 05 23:27:11 connmand[1491]: src/service.c:default_changed() current
default (nil)
May 05 23:27:11 connmand[1491]: src/service.c:default_changed() new default
0xadc138 wifi_d0e782641b1b_534b594433393642_managed_psk
May 05 23:27:11 connmand[1491]: src/timeserver.c:timeserver_start() service
0xadc138 <---- FAILURE OCCURS HERE, SINCE NO NAME SERVERS YET -EINVAL  was
returned, never recovers
May 05 23:27:11 connmand[1491]: src/service.c:service_save() service
0xadc138 new 0
May 05 23:27:11 connmand[1491]: src/service.c:append_dns() append fallback
nameservers
May 05 23:27:13 connmand[1491]:
src/service.c:__connman_service_nameserver_append() service 0xadc138
nameserver 192.168.0.1 auto 0
May 05 23:27:13 connmand[1491]: src/service.c:__connman_service_get_order()
service 0xadc138 name SKYD396B order 1 split 0
May 05 23:27:13 connmand[1491]: src/service.c:connman_service_ref_debug()
0xadc138 ref 2 by src/connection.c:406:add_gateway()
May 05 23:27:13 connmand[1491]:
src/service.c:__connman_service_indicate_default() service 0xadc138 state
ready
May 05 23:27:13 connmand[1491]:
src/service.c:__connman_service_ipconfig_indicate_state() service 0xadc138
(wifi_d0e782641b1b_534b594433393642_managed_psk) old state 3 (co...type 1
(IPv4)
May 05 23:27:13 connmand[1491]: src/service.c:connman_service_ref_debug()
0xadc138 ref 3 by src/wpad.c:178:__connman_wpad_start()
May 05 23:27:13 connmand[1491]: src/service.c:service_rp_filter() connected
wifi_d0e782641b1b_534b594433393642_managed_psk ipconfig 0xad2e20 method 4
count 1 filter 0
May 05 23:27:13 connmand[1491]: src/service.c:service_indicate_state()
service 0xadc138 old ready - new ready/ready => ready
May 05 23:27:13 connmand[1491]: mlan0 {add} address 192.168.0.10/24 label
mlan0 family 2
May 05 23:27:13 connmand[1491]: src/service.c:service_ip_bound() mlan0 ip
bound
May 05 23:27:13 connmand[1491]: src/service.c:service_ip_bound() service
0xadc138 ipconfig 0xad2e20 type 1 method 4
May 05 23:27:13 connmand[1491]: mlan0 {add} route 192.168.0.0 gw 0.0.0.0
scope 253 <LINK>
May 05 23:27:13 connmand[1491]: mlan0 {add} route 192.168.0.1 gw 0.0.0.0
scope 253 <LINK>
May 05 23:27:13 connmand[1491]: src/service.c:service_route_changed() mlan0
route changed
May 05 23:27:13 connmand[1491]: mlan0 {add} route 0.0.0.0 gw 192.168.0.1
scope 0 <UNIVERSE>
May 05 23:27:13 connmand[1491]:
src/service.c:__connman_service_indicate_default() service 0xadc138 state
ready
May 05 23:27:18 connmand[1491]: mlan0 {add} route 87.106.208.187 gw
192.168.0.1 scope 0 <UNIVERSE>
May 05 23:27:18 connmand[1491]:
src/service.c:__connman_service_ipconfig_indicate_state() service 0xadc138
(wifi_d0e782641b1b_534b594433393642_managed_psk) old state 4 (re...type 1
(IPv4)
May 05 23:27:18 connmand[1491]: src/service.c:service_indicate_state()
service 0xadc138 old ready - new online/ready => online
May 05 23:27:18 connmand[1491]: src/service.c:__connman_service_get_order()
service 0xadc138 name SKYD396B order 1 split 0
May 05 23:27:18 connmand[1491]: mlan0 {del} route 87.106.208.187 gw
192.168.0.1 scope 0 <UNIVERSE>



------ Log file with Adam's patch applied and gateway timeserver moved to
after Fallbackservers in ntp server order list. I don't understand why this
fails. Look for resolv_result -----
May 06 00:32:53 connmand[1735]: Connection Manager version 1.28
May 06 00:32:53 connmand[1735]: src/service.c:__connman_service_init()
May 06 00:32:53 connmand[1735]: src/timeserver.c:__connman_timeserver_init()
May 06 00:32:53 connmand[1735]: Checking loopback interface settings
May 06 00:32:53 connmand[1735]: System hostname is DEVNGMNF6CATAKNKMMFX
May 06 00:32:53 connmand[1735]: src/dhcp.c:__connman_dhcp_init()
May 06 00:32:53 connmand[1735]: src/dhcpv6.c:__connman_dhcpv6_init()
May 06 00:32:53 connmand[1735]: Failed to open RFKILL control device
May 06 00:32:53 connmand[1735]: lo {newlink} index 1 address
00:00:00:00:00:00 mtu 65536
May 06 00:32:53 connmand[1735]: lo {newlink} index 1 operstate 0 <UNKNOWN>
May 06 00:32:53 connmand[1735]: sit0 {newlink} index 2 address
00:00:00:00:08:00 mtu 1480
May 06 00:32:53 connmand[1735]: sit0 {newlink} index 2 operstate 2 <DOWN>
May 06 00:32:53 connmand[1735]: mlan0 {create} index 3 type 1 <ETHER>
May 06 00:32:53 connmand[1735]: mlan0 {RX} 42913 packets 39831086 bytes
May 06 00:32:53 connmand[1735]: mlan0 {TX} 30885 packets 4730666 bytes
May 06 00:32:53 connmand[1735]: mlan0 {update} flags 36867 <UP>
May 06 00:32:53 connmand[1735]: mlan0 {newlink} index 3 address
D0:E7:82:64:1B:1B mtu 1500
May 06 00:32:53 connmand[1735]: mlan0 {newlink} index 3 operstate 2 <DOWN>
May 06 00:32:53 connmand[1735]: Adding interface mlan0 [ wifi ]
May 06 00:32:53 connmand[1735]: uap0 {create} index 4 type 1 <ETHER>
May 06 00:32:53 connmand[1735]: uap0 {update} flags 4098 <DOWN>
May 06 00:32:53 connmand[1735]: uap0 {newlink} index 4 address
D0:E7:82:64:1B:1B mtu 1500
May 06 00:32:53 connmand[1735]: uap0 {newlink} index 4 operstate 2 <DOWN>
May 06 00:32:53 connmand[1735]: Ignoring interface uap0 (filtered)
May 06 00:32:53 connmand[1735]: Adding interface uap0 [ wifi ]
May 06 00:32:53 connmand[1735]:
src/service.c:__connman_service_create_from_network() network 0x19978d0
May 06 00:32:53 connmand[1735]: src/service.c:connman_service_create()
service 0x1995fc0
May 06 00:32:53 connmand[1735]: src/service.c:service_initialize() service
0x1995fc0
May 06 00:32:53 connmand[1735]: src/service.c:service_get() service
0x1995fc0
May 06 00:32:53 connmand[1735]: src/service.c:update_from_network() service
0x1995fc0 network 0x19978d0
May 06 00:32:53 connmand[1735]: src/service.c:service_register() service
0x1995fc0
May 06 00:32:53 connmand[1735]: src/service.c:service_register() path
/net/connman/service/wifi_d0e782641b1b_534b594433393642_managed_psk
May 06 00:32:53 connmand[1735]: src/service.c:service_load() service
0x1995fc0
May 06 00:32:53 connmand[1735]: src/service.c:service_schedule_added()
service 0x1995fc0
May 06 00:32:53 connmand[1735]:
src/service.c:__connman_service_auto_connect()
May 06 00:32:53 connmand[1735]: src/service.c:service_send_changed()
May 06 00:32:53 connmand[1735]:
src/service.c:service_append_added_foreach() new
/net/connman/service/wifi_d0e782641b1b_534b594433393642_managed_psk
May 06 00:32:54 connmand[1735]: src/service.c:run_auto_connect()
May 06 00:32:54 connmand[1735]: src/service.c:auto_connect_service()
preferred 0 sessions 0 reason auto
May 06 00:32:54 connmand[1735]: src/service.c:auto_connect_service()
service 0x1995fc0 SKYD396B auto
May 06 00:32:54 connmand[1735]: src/service.c:__connman_service_connect()
service 0x1995fc0 state idle connect reason none -> auto
May 06 00:32:54 connmand[1735]:
src/service.c:__connman_service_clear_error() service 0x1995fc0
May 06 00:32:54 connmand[1735]: src/service.c:service_up() mlan0 up
May 06 00:32:54 connmand[1735]: src/service.c:service_lower_down() mlan0
lower down
May 06 00:32:54 connmand[1735]: src/service.c:stats_stop() service 0x1995fc0
May 06 00:32:54 connmand[1735]: src/service.c:service_save() service
0x1995fc0 new 0
May 06 00:32:54 connmand[1735]: src/service.c:service_up() mlan0 up
May 06 00:32:54 connmand[1735]: src/service.c:service_lower_down() mlan0
lower down
May 06 00:32:54 connmand[1735]: src/service.c:stats_stop() service 0x1995fc0
May 06 00:32:54 connmand[1735]: src/service.c:service_save() service
0x1995fc0 new 0
May 06 00:32:54 connmand[1735]: Skipping disconnect of
534b594433393642_managed_psk, network is connecting.
May 06 00:32:54 connmand[1735]:
src/service.c:__connman_service_ipconfig_indicate_state() service 0x1995fc0
(wifi_d0e782641b1b_534b594433393642_managed_psk) old state 1 (i...type 1
(IPv4)
May 06 00:32:54 connmand[1735]: src/service.c:service_indicate_state()
service 0x1995fc0 old idle - new association/idle => association
May 06 00:32:54 connmand[1735]:
src/service.c:__connman_service_ipconfig_indicate_state() service 0x1995fc0
(wifi_d0e782641b1b_534b594433393642_managed_psk) old state 1 (i...type 2
(IPv6)
May 06 00:32:54 connmand[1735]: src/service.c:service_indicate_state()
service 0x1995fc0 old association - new association/association =>
association
May 06 00:32:54 connmand[1735]: mlan0 {add} route ff00:: gw :: scope 0
<UNIVERSE>
May 06 00:32:54 connmand[1735]: mlan0 {add} route fe80:: gw :: scope 0
<UNIVERSE>
May 06 00:32:54 connmand[1735]: mlan0 {RX} 42914 packets 39831207 bytes
May 06 00:32:54 connmand[1735]: mlan0 {TX} 30885 packets 4730666 bytes
May 06 00:32:54 connmand[1735]: mlan0 {update} flags 102403 <UP,LOWER_UP>
May 06 00:32:54 connmand[1735]: mlan0 {newlink} index 3 address
D0:E7:82:64:1B:1B mtu 1500
May 06 00:32:54 connmand[1735]: mlan0 {newlink} index 3 operstate 5
<DORMANT>
May 06 00:32:54 connmand[1735]: mlan0 {RX} 42915 packets 39831386 bytes
May 06 00:32:54 connmand[1735]: mlan0 {TX} 30888 packets 4731004 bytes
May 06 00:32:54 connmand[1735]: mlan0 {update} flags 102467
<UP,RUNNING,LOWER_UP>
May 06 00:32:54 connmand[1735]: src/service.c:service_lower_up() mlan0
lower up
May 06 00:32:54 connmand[1735]: src/service.c:stats_start() service
0x1995fc0
May 06 00:32:54 connmand[1735]: src/service.c:service_lower_up() mlan0
lower up
May 06 00:32:54 connmand[1735]: src/service.c:stats_start() service
0x1995fc0
May 06 00:32:54 connmand[1735]: mlan0 {newlink} index 3 address
D0:E7:82:64:1B:1B mtu 1500
May 06 00:32:54 connmand[1735]: mlan0 {newlink} index 3 operstate 6 <UP>
May 06 00:32:54 connmand[1735]:
src/service.c:__connman_service_ipconfig_indicate_state() service 0x1995fc0
(wifi_d0e782641b1b_534b594433393642_managed_psk) old state 2 (a...type 1
(IPv4)
May 06 00:32:54 connmand[1735]: src/service.c:service_indicate_state()
service 0x1995fc0 old association - new configuration/association =>
configuration
May 06 00:32:54 connmand[1735]: src/dhcp.c:__connman_dhcp_start()
May 06 00:32:54 connmand[1735]: src/dhcp.c:dhcp_initialize() dhcp 0x1998230
May 06 00:32:55 connmand[1735]:
src/service.c:connman_service_create_ip6config() ipv6 0x19959c0
May 06 00:32:55 connmand[1735]:
src/service.c:__connman_service_ipconfig_indicate_state() service 0x1995fc0
(wifi_d0e782641b1b_534b594433393642_managed_psk) old state 2 (a...type 2
(IPv6)
May 06 00:32:55 connmand[1735]: src/service.c:service_indicate_state()
service 0x1995fc0 old configuration - new configuration/configuration =>
configuration
May 06 00:32:55 connmand[1735]: src/dhcpv6.c:__connman_dhcpv6_start_info()
May 06 00:32:55 connmand[1735]: src/dhcpv6.c:__connman_dhcpv6_start_info()
replace network 0x19978d0 dhcp 0x1994eb0
May 06 00:32:55 connmand[1735]: mlan0 {add} route fd03:ea7d:7832:: gw ::
scope 0 <UNIVERSE>
May 06 00:32:56 connmand[1735]: src/dhcpv6.c:start_info_req() info initial
RT timeout 906 msec
May 06 00:32:56 connmand[1735]: src/dhcpv6.c:dhcpv6_info_request() dhcp
0x1994eb0
May 06 00:32:56 connmand[1735]: mlan0 {add} address
fd03:ea7d:7832:0:d2e7:82ff:fe64:1b1b/64 label (null) family 10
May 06 00:32:56 connmand[1735]: src/service.c:service_ip_bound() mlan0 ip
bound
May 06 00:32:56 connmand[1735]: src/service.c:service_ip_bound() service
0x1995fc0 ipconfig 0x19959c0 type 2 method 5
May 06 00:32:56 connmand[1735]:
src/service.c:__connman_service_ipconfig_indicate_state() service 0x1995fc0
(wifi_d0e782641b1b_534b594433393642_managed_psk) old state 3 (c...type 2
(IPv6)
May 06 00:32:56 connmand[1735]: src/service.c:service_indicate_state()
service 0x1995fc0 old configuration - new configuration/ready => ready
May 06 00:32:56 connmand[1735]: src/service.c:default_changed() current
default (nil)
May 06 00:32:56 connmand[1735]: src/service.c:default_changed() new default
0x1995fc0 wifi_d0e782641b1b_534b594433393642_managed_psk
May 06 00:32:56 connmand[1735]: src/timeserver.c:timeserver_start() service
0x1995fc0
May 06 00:32:56 connmand[1735]: src/service.c:service_save() service
0x1995fc0 new 0
May 06 00:32:56 connmand[1735]: src/service.c:append_dns() append fallback
nameservers
May 06 00:32:56 connmand[1735]: src/timeserver.c:timeserver_start() service
0x1995fc0
May 06 00:32:57 connmand[1735]: src/dhcpv6.c:timeout_info_req() info RT
timeout 1730 msec
May 06 00:32:58 connmand[1735]: src/dhcpv6.c:timeout_info_req() info RT
timeout 3422 msec
May 06 00:32:59 connmand[1735]: src/dhcp.c:lease_available_cb() Lease
available
May 06 00:32:59 connmand[1735]: src/dhcp.c:lease_available_cb() last
address 192.168.0.10
May 06 00:32:59 connmand[1735]: src/dhcp.c:lease_available_cb() c_address
(null)
May 06 00:32:59 connmand[1735]:
src/service.c:__connman_service_nameserver_append() service 0x1995fc0
nameserver 192.168.0.1 auto 0
May 06 00:32:59 connmand[1735]: src/service.c:__connman_service_get_order()
service 0x1995fc0 name SKYD396B order 1 split 0
May 06 00:32:59 connmand[1735]: src/service.c:connman_service_ref_debug()
0x1995fc0 ref 2 by src/connection.c:406:add_gateway()
May 06 00:32:59 connmand[1735]:
src/service.c:__connman_service_indicate_default() service 0x1995fc0 state
ready
May 06 00:32:59 connmand[1735]:
src/service.c:__connman_service_ipconfig_indicate_state() service 0x1995fc0
(wifi_d0e782641b1b_534b594433393642_managed_psk) old state 3 (c...type 1
(IPv4)
May 06 00:32:59 connmand[1735]: src/service.c:connman_service_ref_debug()
0x1995fc0 ref 3 by src/wpad.c:178:__connman_wpad_start()
May 06 00:32:59 connmand[1735]: src/service.c:service_rp_filter() connected
wifi_d0e782641b1b_534b594433393642_managed_psk ipconfig 0x1998130 method 4
count 1 filter 0
May 06 00:32:59 connmand[1735]: src/service.c:service_indicate_state()
service 0x1995fc0 old ready - new ready/ready => ready
May 06 00:32:59 connmand[1735]: mlan0 {add} address 192.168.0.10/24 label
mlan0 family 2
May 06 00:32:59 connmand[1735]: src/service.c:service_ip_bound() mlan0 ip
bound
May 06 00:32:59 connmand[1735]: src/service.c:service_ip_bound() service
0x1995fc0 ipconfig 0x1998130 type 1 method 4
May 06 00:32:59 connmand[1735]: src/timeserver.c:timeserver_start() service
0x1995fc0
May 06 00:32:59 connmand[1735]: src/ntp.c:__connman_ntp_stop()
May 06 00:32:59 connmand[1735]: src/ntp.c:__connman_ntp_stop()
May 06 00:32:59 connmand[1735]:
src/timeserver.c:__connman_timeserver_sync_next() Resolving timeserver
pool.ntp.org
May 06 00:32:59 connmand[1735]: mlan0 {add} route 192.168.0.0 gw 0.0.0.0
scope 253 <LINK>
May 06 00:32:59 connmand[1735]: mlan0 {add} route 192.168.0.1 gw 0.0.0.0
scope 253 <LINK>
May 06 00:32:59 connmand[1735]: src/service.c:service_route_changed() mlan0
route changed
May 06 00:32:59 connmand[1735]: src/timeserver.c:timeserver_start() service
0x1995fc0
May 06 00:32:59 connmand[1735]: src/ntp.c:__connman_ntp_stop()
May 06 00:32:59 connmand[1735]: src/ntp.c:__connman_ntp_stop()
May 06 00:32:59 connmand[1735]:
src/timeserver.c:__connman_timeserver_sync_next() Resolving timeserver
pool.ntp.org
May 06 00:32:59 connmand[1735]: mlan0 {add} route 0.0.0.0 gw 192.168.0.1
scope 0 <UNIVERSE>
May 06 00:32:59 connmand[1735]:
src/service.c:__connman_service_indicate_default() service 0x1995fc0 state
ready
May 06 00:33:02 connmand[1735]: src/dhcpv6.c:timeout_info_req() info RT
timeout 7004 msec
May 06 00:33:04 connmand[1735]: src/timeserver.c:resolv_result() status 2
 <------- RESOLV FAILED AND NOW ONLY GATEWAY IP LEFT IN NTP list.
May 06 00:33:04 connmand[1735]: src/ntp.c:__connman_ntp_stop()
May 06 00:33:04 connmand[1735]:
src/timeserver.c:__connman_timeserver_sync_next() Using timeserver
192.168.0.1
May 06 00:33:04 connmand[1735]: src/ntp.c:__connman_ntp_start() 192.168.0.1
May 06 00:33:04 connmand[1735]: src/ntp.c:start_ntp() server 192.168.0.1
May 06 00:33:04 connmand[1735]: mlan0 {add} route 87.106.208.187 gw
192.168.0.1 scope 0 <UNIVERSE>
May 06 00:33:04 connmand[1735]:
src/service.c:__connman_service_ipconfig_indicate_state() service 0x1995fc0
(wifi_d0e782641b1b_534b594433393642_managed_psk) old state 4 (r...type 1
(IPv4)
May 06 00:33:04 connmand[1735]: src/service.c:service_indicate_state()
service 0x1995fc0 old ready - new online/ready => online
May 06 00:33:04 connmand[1735]: src/service.c:__connman_service_get_order()
service 0x1995fc0 name SKYD396B order 1 split 0
May 06 00:33:04 connmand[1735]: mlan0 {del} route 87.106.208.187 gw
192.168.0.1 scope 0 <UNIVERSE>
May 06 00:33:04 connmand[1735]: src/service.c:append_nameservers()
servers[0] 192.168.0.1 available 1
May 06 00:33:06 connmand[1735]: src/ntp.c:send_timeout() send timeout 2
(retries 0)
May 06 00:33:09 connmand[1735]: src/dhcpv6.c:timeout_info_req() info RT
timeout 13708 msec
May 06 00:33:10 connmand[1735]: src/ntp.c:send_timeout() send timeout 4
(retries 1)
May 06 00:33:18 connmand[1735]: src/ntp.c:send_timeout() send timeout 8
(retries 2)
May 06 00:33:22 connmand[1735]: src/dhcpv6.c:timeout_info_req() info RT
timeout 27871 msec
May 06 00:33:34 connmand[1735]: src/ntp.c:send_timeout() send timeout 16
(retries 3)
May 06 00:33:34 connmand[1735]: src/ntp.c:__connman_ntp_stop()
From: Adam Moore <adam.moore@...>
Subject: [PATCH] timeserver: resync on default service ipconfig change
Newsgroups: gmane.linux.network.connman
Date: 2015-05-01 01:53:19 GMT (4 days, 17 hours and 3 minutes ago)
Upon an ipconfig change of the default service, resync
with timeservers.
---
 src/timeserver.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/src/timeserver.c b/src/timeserver.c
index f0d33e5..f76320c 100644
--- a/src/timeserver.c
+++ b/src/timeserver.c
@@ -417,9 +417,25 @@ static void default_changed(struct connman_service *default_service)
		timeserver_stop();
 }

+static void ipconfig_changed(struct connman_service *service,
+				struct connman_ipconfig *ipconfig)
+{
+	/* if default service changed, resync timeservers */
+	if (service) {
+		if(service != __connman_service_get_default()) {
+			return;
+		}
+
+		timeserver_start(service);
+	} else {
+		timeserver_stop();
+	}
+}
+
 static struct connman_notifier timeserver_notifier = {
	.name			= "timeserver",
	.default_changed	= default_changed,
+	.ipconfig_changed	= ipconfig_changed,
 };

 int __connman_timeserver_init(void)
--
1.9.1

Statement of Confidentiality

The contents of this e-mail message and any attachments are confidential and are intended solely for the
addressee. The information may also be legally privileged. This transmission is sent in trust, and the
sole purpose of delivery to the intended recipient. If you have received this transmission in error, any
use, reproduction or dissemination of this transmission is strictly prohibited. If you are not the
intended recipient, please immediately notify the sender by reply e-mail or at 508.683.2500 and delete
this message and its attachments, if any.
--- connman-1.28.orig/src/timeserver.c	2014-10-12 07:14:13.000000000 -0700
+++ connman-1.28/src/timeserver.c	2015-05-05 12:57:42.251477435 -0700
@@ -204,17 +204,6 @@
 	for (i = 0; service_ts && service_ts[i]; i++)
 		list = __connman_timeserver_add_list(list, service_ts[i]);
 
-	network = __connman_service_get_network(service);
-	if (network) {
-		index = connman_network_get_index(network);
-		service_gw = __connman_ipconfig_get_gateway_from_index(index,
-			CONNMAN_IPCONFIG_TYPE_ALL);
-
-		/* Then add Service Gateway to the list */
-		if (service_gw)
-			list = __connman_timeserver_add_list(list, service_gw);
-	}
-
 	/* Then add Global Timeservers to the list */
 	timeservers = load_timeservers();
 
@@ -225,10 +214,22 @@
 
 	fallback_ts = connman_setting_get_string_list("FallbackTimeservers");
 
-	/* Lastly add the fallback servers */
+	/* Then add the fallback servers */
 	for (i = 0; fallback_ts && fallback_ts[i]; i++)
 		list = __connman_timeserver_add_list(list, fallback_ts[i]);
 
+	/* Lastly add the service gateways */
+	network = __connman_service_get_network(service);
+	if (network) {
+		index = connman_network_get_index(network);
+		service_gw = __connman_ipconfig_get_gateway_from_index(index,
+			CONNMAN_IPCONFIG_TYPE_ALL);
+
+		/* Then add Service Gateway to the list */
+		if (service_gw)
+			list = __connman_timeserver_add_list(list, service_gw);
+	}
+
 	return g_slist_reverse(list);
 }
 
_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman

Reply via email to