timemngr: 1.0.1

This commit is contained in:
suvendhu 2023-08-28 15:13:32 +05:30 committed by Vivek Kumar Dutta
parent 89a86c3629
commit 213f7850bc
5 changed files with 50 additions and 32 deletions

View file

@ -5,13 +5,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=timemngr
PKG_VERSION:=1.0.0
PKG_VERSION:=1.0.1
LOCAL_DEV:=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/bbf/timemngr.git
PKG_SOURCE_VERSION:=7803c29c7c16e808f10dec226ec66d1ade5e84ec
PKG_SOURCE_VERSION:=4ac0681d546ae94eeedbcf2b2ccbb9c4637e9bdb
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
endif

View file

@ -9,7 +9,7 @@ configure_ntp_servers()
local ntp_interface
# Only change the ntp servers if interface matches with the defined interface
ntp_interface="$(uci -q get ${NAME}.dhcp_driven.client_interface)"
ntp_interface="$(uci -q get ${NAME}.dhcp_driven.interface)"
if [ "${ntp_interface}" != "${1}" ]; then
return 0
@ -19,11 +19,12 @@ configure_ntp_servers()
json_select data
json_get_var servers ntpserver ""
dhcp_ntp_server="${servers// /,}"
exist_dhcp_ntp_server="$(uci -q get ${NAME}.dhcp_driven.server)"
if [ "${dhcp_ntp_server}" != "${exist_dhcp_ntp_server}" ]; then
uci -q set ${NAME}.dhcp_driven.server="${dhcp_ntp_server}"
if [ "${servers}" != "${exist_dhcp_ntp_server}" ]; then
uci -q del ${NAME}.dhcp_driven.server
for server in ${servers}; do
uci -q add_list ${NAME}.dhcp_driven.server="${server}"
done
eval ubus call uci commit '{\"config\":\"$NAME\"}'
fi
}

View file

@ -49,12 +49,12 @@ reload_service() {
service_triggers() {
procd_add_reload_trigger "time"
local enable_server server_mode ttl interface
local enable mode ttl interface
validate_server_section || {
return 1
}
if [ "$enable_server" != 0 ] && [ "$server_mode" = "Broadcast" ] && [ -n "$interface" ]; then
if [ "$enable" != 0 ] && [ "$mode" = "Broadcast" ] && [ -n "$interface" ]; then
procd_open_trigger
procd_add_interface_trigger "interface.*.up" $interface /etc/init.d/timemngr restart
procd_close_trigger

View file

@ -21,22 +21,22 @@ validate_global_section() {
validate_server_section() {
uci_validate_section time server server \
'enable_server:bool:1'\
'server_mode:string:Unicast'\
'enable:bool:1'\
'mode:string:Unicast'\
'ttl:uinteger:255'\
'interface:string'
}
validate_client_section() {
uci_validate_section time client $1 \
'enable_client:bool:1'\
'enable:bool:1'\
'iburst:bool:1'\
'version:uinteger:4'\
'peer:bool:0'\
'minpoll:uinteger:6'\
'maxpoll:uinteger:10'\
'client_mode:string:Unicast'\
'server:string'
'mode:string:Unicast'\
'server:list(host)'
}
generate_config() {
@ -49,21 +49,37 @@ generate_config() {
return 1
fi
enable_client_sec=$(uci -q show time | grep enable_client=\'1\' | cut -d'.' -f 2)
local enable_client iburst version peer minpoll maxpoll client_mode server
local enable_client_sec
enabled_sec=$(uci -q show time | grep enable=\'1\' | cut -d'.' -f 2)
for sec in $enabled_sec; do
type=$(uci -q get time.$sec)
if [ "${type}" == "client" ]; then
enable_client_sec=$sec
break
fi
done
local client_mode enable_client
local enable iburst version peer minpoll maxpoll mode server
if [ -n $enable_client_sec ]; then
validate_client_section $enable_client_sec || {
return 1
}
client_mode=$mode
enable_client=$enable
else
enable_client=0
fi
local enable_server server_mode ttl interface
local server_mode enable_server
local enable mode ttl interface
validate_server_section || {
return 1
}
server_mode=$mode
enable_server=$enable
[ "$enable_client" = 0 ] && [ "$enable_server" = 0 ] && return
trunc
@ -97,7 +113,7 @@ generate_config() {
elif [ "$client_mode" = "Manycast" ]; then
emit "manycastclient 224.0.1.1 minpoll $minpoll maxpoll $maxpoll version $version\n"
else
for i in ${server//,/ }; do
for i in $server; do
str="server $i minpoll $minpoll maxpoll $maxpoll version $version"
if [ "$iburst" != 0 ]; then
str="${str} iburst"
@ -106,7 +122,7 @@ generate_config() {
done
if [ "$peer" != 0 ]; then
for i in ${server//,/ }; do
for i in $server; do
str="peer $i minpoll $minpoll maxpoll $maxpoll version $version"
if [ "$iburst" != 0 ]; then
str="${str} iburst"

View file

@ -23,31 +23,32 @@ if uci -q get system.ntp >/dev/null 2>&1; then
enabled="1"
fi
uci -q set time.client.enable_client="$enabled"
uci -q set time.client.enable="$enabled"
uci -q set time.client.iburst="1"
uci -q set time.client.version="4"
uci -q set time.client.peer="0"
uci -q set time.client.minpoll="6"
uci -q set time.client.maxpoll="10"
uci -q set time.client.client_mode="Unicast"
uci -q set time.client.mode="Unicast"
servers="$(get_system_ntp_option server)"
if [ -n "${servers}" ]; then
servers="${servers// /,}"
else
servers="ntp1.sth.netnod.se,ntp1.gbg.netnod.se"
if [ -z "${servers}" ]; then
servers="ntp1.sth.netnod.se ntp1.gbg.netnod.se"
fi
uci -q set time.client.server="${servers}"
for server in $servers; do
uci -q add_list time.client.server="${server}"
done
# DHCP client instance
uci -q set time.dhcp_driven="client"
uci -q set time.dhcp_driven.enable_client="0"
uci -q set time.dhcp_driven.enable="0"
interface="$(get_system_ntp_option interface)"
if [ -n "${interface}" ]; then
uci -q set time.dhcp_driven.client_interface="${interface}"
uci -q set time.dhcp_driven.interface="${interface}"
else
uci -q set time.dhcp_driven.client_interface="wan"
uci -q set time.dhcp_driven.interface="wan"
fi
uci -q set time.dhcp_driven.iburst="1"
@ -55,12 +56,12 @@ if uci -q get system.ntp >/dev/null 2>&1; then
uci -q set time.dhcp_driven.peer="0"
uci -q set time.dhcp_driven.minpoll="6"
uci -q set time.dhcp_driven.maxpoll="10"
uci -q set time.dhcp_driven.client_mode="Unicast"
uci -q set time.dhcp_driven.mode="Unicast"
# Add timeserver
uci -q set time.server="server"
uci -q set time.server.enable_server="$(get_system_ntp_option enable_server)"
uci -q set time.server.server_mode="Unicast"
uci -q set time.server.enable="$(get_system_ntp_option enable_server)"
uci -q set time.server.mode="Unicast"
uci -q set time.server.ttl="255"
uci -q commit time
fi