diff --git a/net/ntpd/files/ntpd.hotplug b/net/ntpd/files/ntpd.hotplug index 5d5dce8f3557b96e285597adb7350bd4baa120db..6b22fa13a84a73dea3c803e62d254bd845daf3af 100644 --- a/net/ntpd/files/ntpd.hotplug +++ b/net/ntpd/files/ntpd.hotplug @@ -1,29 +1,35 @@ #!/bin/sh -NAME=ntpd +NAME=ntp COMMAND=/etc/init.d/$NAME . /usr/share/libubox/jshn.sh configure_ntp_servers() { - local ntp_interface="$(uci -q get system.ntp.interface)" + local ntp_interface="$(uci -q get ntp.dhcp_driven.client_interface)" - for ntpif in $ntp_interface; do - # Only change the ntp servers if interface matches with the defined interface - if [ "${ntpif}" == "${1}" ] ; then - json_load "$(ifstatus $ntpif)" - json_select data - json_get_var servers ntpserver "" + # Only change the ntp servers if interface matches with the defined interface + if [ "${ntp_interface}" == "${1}" ]; then + json_load "$(ifstatus $ntp_interface)" + json_select data + json_get_var servers ntpserver "" - [ -n "$servers" ] && uci -q delete system.ntp.server - for server in ${servers}; do - uci -q add_list system.ntp.server="${server}" - done - uci commit system - break + dhcp_ntp_server="" + for server in ${servers}; do + if [ -z "${dhcp_ntp_server}" ]; then + dhcp_ntp_server="${server}" + else + dhcp_ntp_server="${dhcp_ntp_server},${server}" + fi + done + + exist_dhcp_ntp_server="$(uci -q get ntp.dhcp_driven.server)" + if [ "${dhcp_ntp_server}" != "${exist_dhcp_ntp_server}" ]; then + uci -q set ntp.dhcp_driven.server="${dhcp_ntp_server}" + uci commit ntp fi - done + fi } [ "$ACTION" = "ifup" -a "$(uci -q get network.$INTERFACE.is_lan)" != "1" ] && {