From 76ac6e9885d587921ac6dc54a3bd056c5dc74b4d Mon Sep 17 00:00:00 2001 From: zsdc Date: Sat, 27 Nov 2021 01:40:21 +0200 Subject: FRR: T4020: Added CLI options for FRR daemons Added first CLI items for controlling FRR daemons parameters that cannot be changed via vtysh and are available via arguments only. Now it is possible to enable/disable modules: SNMP (for each daemon), BMP (for BGP), IRDP (for Zebra). --- interface-definitions/system-frr.xml.in | 66 +++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 interface-definitions/system-frr.xml.in (limited to 'interface-definitions') diff --git a/interface-definitions/system-frr.xml.in b/interface-definitions/system-frr.xml.in new file mode 100644 index 000000000..e8b447f58 --- /dev/null +++ b/interface-definitions/system-frr.xml.in @@ -0,0 +1,66 @@ + + + + + + + Configure FRR parameters + + 150 + + + + + >Enable BGP Monitoring Protocol support + + + + + + >Enable ICMP Router Discovery Protocol support + + + + + + Enable SNMP integration for next daemons + + + + + >BGP + + + + + + >OSPFv3 + + + + + + >OSPFv2 + + + + + + >RIP + + + + + + >Zebra (IP routing manager) + + + + + + + + + + + -- cgit v1.2.3 From 373132a899cd53eaebedd23bd44702d245ce8165 Mon Sep 17 00:00:00 2001 From: zsdc Date: Wed, 29 Dec 2021 17:57:38 +0200 Subject: FRR: T4020: Updated CLI options processing for FRR daemons - Reverted changes from `python/vyos/util.py`. This may lead to unnecessary FRR restart during each boot, depending on a default file content and template, but makes this changeset cleaner. - Fixed typos in node names (extra `>` characters). - Added SNMP module for `isisd` and `ldpd`, since they have it compiled now. --- data/templates/frr/daemons.frr.tmpl | 8 ++++++-- interface-definitions/system-frr.xml.in | 27 +++++++++++++++++++-------- python/vyos/util.py | 12 ++++-------- src/conf_mode/snmp.py | 8 ++++++-- src/conf_mode/system_frr.py | 2 +- 5 files changed, 36 insertions(+), 21 deletions(-) (limited to 'interface-definitions') diff --git a/data/templates/frr/daemons.frr.tmpl b/data/templates/frr/daemons.frr.tmpl index 089cdae3b..ab7b14d6b 100644 --- a/data/templates/frr/daemons.frr.tmpl +++ b/data/templates/frr/daemons.frr.tmpl @@ -34,9 +34,13 @@ ripd_options=" --daemon -A 127.0.0.1 {%- if snmp is defined and snmp.ripd is defined %} -M snmp{% endif -%} " ripngd_options=" --daemon -A ::1" -isisd_options=" --daemon -A 127.0.0.1" +isisd_options=" --daemon -A 127.0.0.1 +{%- if snmp is defined and snmp.isisd is defined %} -M snmp{% endif -%} +" pimd_options=" --daemon -A 127.0.0.1" -ldpd_options=" --daemon -A 127.0.0.1" +ldpd_options=" --daemon -A 127.0.0.1 +{%- if snmp is defined and snmp.ldpd is defined %} -M snmp{% endif -%} +" nhrpd_options=" --daemon -A 127.0.0.1" eigrpd_options=" --daemon -A 127.0.0.1" babeld_options=" --daemon -A 127.0.0.1" diff --git a/interface-definitions/system-frr.xml.in b/interface-definitions/system-frr.xml.in index e8b447f58..9fe23ed75 100644 --- a/interface-definitions/system-frr.xml.in +++ b/interface-definitions/system-frr.xml.in @@ -11,13 +11,13 @@ - >Enable BGP Monitoring Protocol support + Enable BGP Monitoring Protocol support - >Enable ICMP Router Discovery Protocol support + Enable ICMP Router Discovery Protocol support @@ -28,31 +28,43 @@ - >BGP + BGP + + + + + + IS-IS + + + + + + LDP - >OSPFv3 + OSPFv3 - >OSPFv2 + OSPFv2 - >RIP + RIP - >Zebra (IP routing manager) + Zebra (IP routing manager) @@ -63,4 +75,3 @@ - diff --git a/python/vyos/util.py b/python/vyos/util.py index ce5dc51f5..d8e83ab8d 100644 --- a/python/vyos/util.py +++ b/python/vyos/util.py @@ -182,20 +182,16 @@ def call(command, flag='', shell=None, input=None, timeout=None, env=None, return code -def read_file(fname, defaultonfailure=None, strip_end=True): +def read_file(fname, defaultonfailure=None): """ - read the content of a file, optionally stripping any end characters (space, newlines) + read the content of a file, stripping any end characters (space, newlines) should defaultonfailure be not None, it is returned on failure to read """ try: """ Read a file to string """ with open(fname, 'r') as f: - data = f.read() - - if strip_end: - return data.strip() - else: - return data + data = f.read().strip() + return data except Exception as e: if defaultonfailure is not None: return defaultonfailure diff --git a/src/conf_mode/snmp.py b/src/conf_mode/snmp.py index 25dcdf7c6..6c6367045 100755 --- a/src/conf_mode/snmp.py +++ b/src/conf_mode/snmp.py @@ -583,9 +583,13 @@ def apply(snmp): # Enable AgentX in FRR # This should be done for each daemon individually because common command # works only if all the daemons started with SNMP support - frr_daemons_list = ['bgpd', 'ospf6d', 'ospfd', 'ripd', 'zebra'] + frr_daemons_list = [ + 'bgpd', 'ospf6d', 'ospfd', 'ripd', 'ripngd', 'isisd', 'ldpd', 'zebra' + ] for frr_daemon in frr_daemons_list: - call(f'vtysh -c "configure terminal" -d {frr_daemon} -c "agentx" >/dev/null') + call( + f'vtysh -c "configure terminal" -d {frr_daemon} -c "agentx" >/dev/null' + ) return None diff --git a/src/conf_mode/system_frr.py b/src/conf_mode/system_frr.py index 0d0b37e00..1af0055f6 100755 --- a/src/conf_mode/system_frr.py +++ b/src/conf_mode/system_frr.py @@ -51,7 +51,7 @@ def verify(frr_config): def generate(frr_config): # read daemons config file - daemons_config_current = read_file(config_file, strip_end=False) + daemons_config_current = read_file(config_file) # generate new config file daemons_config_new = render_to_string('frr/daemons.frr.tmpl', frr_config) # update configuration file if this is necessary -- cgit v1.2.3