-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[ntp] Fix ntp.conf template to allow setting of source port in CONFIG…
…_DB (#7586) Why I did it Currently, there is a bug in the ntp.conf jinja2 template where it will ignore the src_intf directive in CONFIG_DB if there are multiple IP addresses associated with an interface. This code change fixes that bug and allows the template to select the correct source interface for NTP. How I did it I did this by modifying the macro in ntp.conf.j2 which determines if there is an ip address associated with an interface to set a state variable when it detects a valid interface entry in CONFIG_DB instead of outputting "true" directly (which could result in multiple "trues" outputted for interfaces with multiple valid IP addresses). How to verify it Add two ipv4 addresses to an interface in SONiC Add the following configuration to config_db.json { "NTP": { "global": { "src_intf": "Ethernet1" } } } Replace Ethernet1 with the interface name of the one you assigned the IP addresses to. Run sudo config reload -y Open /etc/ntp.conf and verify that the following line exists ... interface listen Ethernet1 ... The interface specified should be the one set in the previous steps. Description for the changelog [ntp] Fix ntp.conf template to allow setting of source port in CONFIG_DB
- Loading branch information
1 parent
53b3d37
commit bd6096a
Showing
6 changed files
with
169 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
12 changes: 12 additions & 0 deletions
12
src/sonic-config-engine/tests/data/ntp/ntp_interfaces.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
{ | ||
"NTP": { | ||
"global": { | ||
"src_intf": "Ethernet0" | ||
} | ||
}, | ||
"INTERFACE": { | ||
"Ethernet0": {}, | ||
"Ethernet0|10.0.0.0/31": {}, | ||
"Ethernet0|192.168.0.122/24": {} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
../../../files/image_config/ntp/ntp.conf.j2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
############################################################################### | ||
# Managed by Ansible | ||
# file: ansible/roles/acs/templates/ntp.conf.j2 | ||
############################################################################### | ||
|
||
# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help | ||
|
||
# To avoid ntpd from panic and exit if the drift between new time and | ||
# current system time is large. | ||
tinker panic 0 | ||
|
||
driftfile /var/lib/ntp/ntp.drift | ||
|
||
|
||
# Enable this if you want statistics to be logged. | ||
#statsdir /var/log/ntpstats/ | ||
|
||
statistics loopstats peerstats clockstats | ||
filegen loopstats file loopstats type day enable | ||
filegen peerstats file peerstats type day enable | ||
filegen clockstats file clockstats type day enable | ||
|
||
|
||
# You do need to talk to an NTP server or two (or three). | ||
#server ntp.your-provider.example | ||
|
||
# pool.ntp.org maps to about 1000 low-stratum NTP servers. Your server will | ||
# pick a different set every time it starts up. Please consider joining the | ||
# pool: <http://www.pool.ntp.org/join.html> | ||
|
||
#listen on source interface if configured, else | ||
#only listen on MGMT_INTERFACE, LOOPBACK_INTERFACE ip when MGMT_INTERFACE is not defined, or eth0 | ||
# if we don't have both of them (default is to listen on all ip addresses) | ||
interface ignore wildcard | ||
|
||
# set global variable for configured source interface name | ||
# set global boolean to indicate if the ip of the configured source interface is configured | ||
# if the source interface is configured but no ip on that interface, then listen on another | ||
# interface based on existing logic | ||
|
||
interface listen Ethernet0 | ||
interface listen 127.0.0.1 | ||
|
||
# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for | ||
# details. The web page <http://support.ntp.org/bin/view/Support/AccessRestrictions> | ||
# might also be helpful. | ||
# | ||
# Note that "restrict" applies to both servers and clients, so a configuration | ||
# that might be intended to block requests from certain clients could also end | ||
# up blocking replies from your own upstream servers. | ||
|
||
# By default, exchange time with everybody, but don't allow configuration. | ||
restrict -4 default kod notrap nomodify nopeer noquery | ||
restrict -6 default kod notrap nomodify nopeer noquery | ||
|
||
# Local users may interrogate the ntp server more closely. | ||
restrict 127.0.0.1 | ||
restrict ::1 | ||
|
||
# Clients from this (example!) subnet have unlimited access, but only if | ||
# cryptographically authenticated. | ||
#restrict 192.168.123.0 mask 255.255.255.0 notrust | ||
|
||
|
||
# If you want to provide time to your local subnet, change the next line. | ||
# (Again, the address is an example only.) | ||
#broadcast 192.168.123.255 | ||
|
||
# If you want to listen to time broadcasts on your local subnet, de-comment the | ||
# next lines. Please do this only if you trust everybody on the network! | ||
#disable auth | ||
#broadcastclient |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
############################################################################### | ||
# Managed by Ansible | ||
# file: ansible/roles/acs/templates/ntp.conf.j2 | ||
############################################################################### | ||
|
||
# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help | ||
|
||
# To avoid ntpd from panic and exit if the drift between new time and | ||
# current system time is large. | ||
tinker panic 0 | ||
|
||
driftfile /var/lib/ntp/ntp.drift | ||
|
||
|
||
# Enable this if you want statistics to be logged. | ||
#statsdir /var/log/ntpstats/ | ||
|
||
statistics loopstats peerstats clockstats | ||
filegen loopstats file loopstats type day enable | ||
filegen peerstats file peerstats type day enable | ||
filegen clockstats file clockstats type day enable | ||
|
||
|
||
# You do need to talk to an NTP server or two (or three). | ||
#server ntp.your-provider.example | ||
|
||
# pool.ntp.org maps to about 1000 low-stratum NTP servers. Your server will | ||
# pick a different set every time it starts up. Please consider joining the | ||
# pool: <http://www.pool.ntp.org/join.html> | ||
|
||
#listen on source interface if configured, else | ||
#only listen on MGMT_INTERFACE, LOOPBACK_INTERFACE ip when MGMT_INTERFACE is not defined, or eth0 | ||
# if we don't have both of them (default is to listen on all ip addresses) | ||
interface ignore wildcard | ||
|
||
# set global variable for configured source interface name | ||
# set global boolean to indicate if the ip of the configured source interface is configured | ||
# if the source interface is configured but no ip on that interface, then listen on another | ||
# interface based on existing logic | ||
|
||
interface listen Ethernet0 | ||
interface listen 127.0.0.1 | ||
|
||
# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for | ||
# details. The web page <http://support.ntp.org/bin/view/Support/AccessRestrictions> | ||
# might also be helpful. | ||
# | ||
# Note that "restrict" applies to both servers and clients, so a configuration | ||
# that might be intended to block requests from certain clients could also end | ||
# up blocking replies from your own upstream servers. | ||
|
||
# By default, exchange time with everybody, but don't allow configuration. | ||
restrict -4 default kod notrap nomodify nopeer noquery | ||
restrict -6 default kod notrap nomodify nopeer noquery | ||
|
||
# Local users may interrogate the ntp server more closely. | ||
restrict 127.0.0.1 | ||
restrict ::1 | ||
|
||
# Clients from this (example!) subnet have unlimited access, but only if | ||
# cryptographically authenticated. | ||
#restrict 192.168.123.0 mask 255.255.255.0 notrust | ||
|
||
|
||
# If you want to provide time to your local subnet, change the next line. | ||
# (Again, the address is an example only.) | ||
#broadcast 192.168.123.255 | ||
|
||
# If you want to listen to time broadcasts on your local subnet, de-comment the | ||
# next lines. Please do this only if you trust everybody on the network! | ||
#disable auth | ||
#broadcastclient |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters