diff options
-rw-r--r-- | data/templates/frr/ldpd.frr.tmpl | 24 | ||||
-rw-r--r-- | interface-definitions/protocols-mpls.xml.in | 57 | ||||
-rw-r--r-- | op-mode-definitions/reset-mpls.xml | 31 | ||||
-rw-r--r-- | op-mode-definitions/show-protocols-bfd.xml | 6 | ||||
-rwxr-xr-x | src/conf_mode/protocols_mpls.py | 42 |
5 files changed, 158 insertions, 2 deletions
diff --git a/data/templates/frr/ldpd.frr.tmpl b/data/templates/frr/ldpd.frr.tmpl index dbaa917e8..5f080d75f 100644 --- a/data/templates/frr/ldpd.frr.tmpl +++ b/data/templates/frr/ldpd.frr.tmpl @@ -15,6 +15,12 @@ neighbor {{neighbor_id}} password {{ldp.neighbors[neighbor_id].password}} {% endfor -%} address-family ipv4 label local allocate host-routes +{% if old_ldp.export_ipv4_exp -%} +no label local advertise explicit-null +{% endif -%} +{% if ldp.export_ipv4_exp -%} +label local advertise explicit-null +{% endif -%} {% if old_ldp.d_transp_ipv4 -%} no discovery transport-address {{ old_ldp.d_transp_ipv4 }} {% endif -%} @@ -33,6 +39,12 @@ no discovery hello interval {{ old_ldp.hello_interval }} {% if ldp.hello_interval -%} discovery hello interval {{ ldp.hello_interval }} {% endif -%} +{% if old_ldp.ses_ipv4_hold -%} +no session holdtime {{ old_ldp.ses_ipv4_hold }} +{% endif -%} +{% if ldp.ses_ipv4_hold -%} +session holdtime {{ ldp.ses_ipv4_hold }} +{% endif -%} {% for interface in old_ldp.interfaces -%} no interface {{interface}} {% endfor -%} @@ -46,6 +58,18 @@ exit-address-family {% if ldp.d_transp_ipv6 -%} address-family ipv6 label local allocate host-routes +{% if old_ldp.export_ipv6_exp -%} +no label local advertise explicit-null +{% endif -%} +{% if ldp.export_ipv6_exp -%} +label local advertise explicit-null +{% endif -%} +{% if old_ldp.ses_ipv6_hold -%} +no session holdtime {{ old_ldp.ses_ipv6_hold }} +{% endif -%} +{% if ldp.ses_ipv6_hold -%} +session holdtime {{ ldp.ses_ipv6_hold }} +{% endif -%} {% if old_ldp.d_transp_ipv6 -%} no discovery transport-address {{ old_ldp.d_transp_ipv6 }} {% endif -%} diff --git a/interface-definitions/protocols-mpls.xml.in b/interface-definitions/protocols-mpls.xml.in index 3e9edbf72..3ea610d8b 100644 --- a/interface-definitions/protocols-mpls.xml.in +++ b/interface-definitions/protocols-mpls.xml.in @@ -78,6 +78,30 @@ </constraint> </properties> </leafNode> + <leafNode name="session-ipv4-holdtime"> + <properties> + <help>Session ipv4 holdtime</help> + <valueHelp> + <format>15-65535</format> + <description>Time in seconds</description> + </valueHelp> + <constraint> + <validator name="numeric" argument="--range 15-65535"/> + </constraint> + </properties> + </leafNode> + <leafNode name="session-ipv6-holdtime"> + <properties> + <help>Session ipv6 holdtime</help> + <valueHelp> + <format>15-65535</format> + <description>Time in seconds</description> + </valueHelp> + <constraint> + <validator name="numeric" argument="--range 15-65535"/> + </constraint> + </properties> + </leafNode> <leafNode name="transport-ipv4-address"> <properties> <help>Transport ipv4 address</help> @@ -104,6 +128,39 @@ </leafNode> </children> </node> + <node name="export"> + <properties> + <help>Export parameters</help> + </properties> + <children> + <node name="ipv4"> + <properties> + <help>IPv4 parameters</help> + </properties> + <children> + <leafNode name="explicit-null"> + <properties> + <help>Explicit-Null Label</help> + <valueless/> + </properties> + </leafNode> + </children> + </node> + <node name="ipv6"> + <properties> + <help>IPv6 parameters</help> + </properties> + <children> + <leafNode name="explicit-null"> + <properties> + <help>Explicit-Null Label</help> + <valueless/> + </properties> + </leafNode> + </children> + </node> + </children> + </node> <leafNode name="interface"> <properties> <help>Listen interface for LDP</help> diff --git a/op-mode-definitions/reset-mpls.xml b/op-mode-definitions/reset-mpls.xml new file mode 100644 index 000000000..4e5d37d5b --- /dev/null +++ b/op-mode-definitions/reset-mpls.xml @@ -0,0 +1,31 @@ +<?xml version="1.0"?> +<interfaceDefinition> + <node name="reset"> + <children> + <node name="mpls"> + <properties> + <help>Reset MPLS and related protocol commands</help> + </properties> + <children> + <node name="ldp"> + <properties> + <help>Reset LDP commands</help> + </properties> + <children> + <tagNode name="neighbor"> + <properties> + <help>Reset MPLS LDP neighbor/session</help> + <completionHelp> + <list><x.x.x.x> <h:h:h:h:h:h:h:h></list> + <script>/usr/bin/vtysh -c "show mpls ldp neighbor" | awk '{print $2}' | egrep -v "ID"</script> + </completionHelp> + </properties> + <command>/usr/bin/vtysh -c "clear mpls ldp neighbor $5"</command> + </tagNode> + </children> + </node> + </children> + </node> + </children> + </node> +</interfaceDefinition>
\ No newline at end of file diff --git a/op-mode-definitions/show-protocols-bfd.xml b/op-mode-definitions/show-protocols-bfd.xml index 4483b39bf..3d9b67c67 100644 --- a/op-mode-definitions/show-protocols-bfd.xml +++ b/op-mode-definitions/show-protocols-bfd.xml @@ -40,6 +40,12 @@ </leafNode> </children> </tagNode> + <leafNode name="peers"> + <properties> + <help>Show Bidirectional Forwarding Detection (BFD) peers brief</help> + </properties> + <command>/usr/bin/vtysh -c "show bfd peers brief"</command> + </leafNode> </children> </node> </children> diff --git a/src/conf_mode/protocols_mpls.py b/src/conf_mode/protocols_mpls.py index e515490d0..904d219e2 100755 --- a/src/conf_mode/protocols_mpls.py +++ b/src/conf_mode/protocols_mpls.py @@ -43,7 +43,12 @@ def get_config(config=None): 'd_transp_ipv4' : None, 'd_transp_ipv6' : None, 'hello_holdtime' : None, - 'hello_interval' : None + 'hello_interval' : None, + 'ses_ipv4_hold' : None, + 'ses_ipv6_hold' : None, + 'export_ipv4_exp' : False, + 'export_ipv6_exp' : False + }, 'ldp' : { 'interfaces' : [], @@ -51,7 +56,12 @@ def get_config(config=None): 'd_transp_ipv4' : None, 'd_transp_ipv6' : None, 'hello_holdtime' : None, - 'hello_interval' : None + 'hello_interval' : None, + 'ses_ipv4_hold' : None, + 'ses_ipv6_hold' : None, + 'export_ipv4_exp' : False, + 'export_ipv6_exp' : False + } } if not (conf.exists('protocols mpls') or conf.exists_effective('protocols mpls')): @@ -82,6 +92,20 @@ def get_config(config=None): if conf.exists('discovery hello-interval'): mpls_conf['ldp']['hello_interval'] = conf.return_value('discovery hello-interval') + # Get session-ipv4-holdtime + if conf.exists_effective('discovery session-ipv4-holdtime'): + mpls_conf['old_ldp']['ses_ipv4_hold'] = conf.return_effective_value('discovery session-ipv4-holdtime') + + if conf.exists('discovery session-ipv4-holdtime'): + mpls_conf['ldp']['ses_ipv4_hold'] = conf.return_value('discovery session-ipv4-holdtime') + + # Get session-ipv6-holdtime + if conf.exists_effective('discovery session-ipv6-holdtime'): + mpls_conf['old_ldp']['ses_ipv6_hold'] = conf.return_effective_value('discovery session-ipv6-holdtime') + + if conf.exists('discovery session-ipv6-holdtime'): + mpls_conf['ldp']['ses_ipv6_hold'] = conf.return_value('discovery session-ipv6-holdtime') + # Get discovery transport-ipv4-address if conf.exists_effective('discovery transport-ipv4-address'): mpls_conf['old_ldp']['d_transp_ipv4'] = conf.return_effective_value('discovery transport-ipv4-address') @@ -96,6 +120,20 @@ def get_config(config=None): if conf.exists('discovery transport-ipv6-address'): mpls_conf['ldp']['d_transp_ipv6'] = conf.return_value('discovery transport-ipv6-address') + # Get export ipv4 explicit-null + if conf.exists_effective('export ipv4 explicit-null'): + mpls_conf['old_ldp']['export_ipv4_exp'] = True + + if conf.exists('export ipv4 explicit-null'): + mpls_conf['ldp']['export_ipv4_exp'] = True + + # Get export ipv6 explicit-null + if conf.exists_effective('export ipv6 explicit-null'): + mpls_conf['old_ldp']['export_ipv6_exp'] = True + + if conf.exists('export ipv6 explicit-null'): + mpls_conf['ldp']['export_ipv6_exp'] = True + # Get interfaces if conf.exists_effective('interface'): mpls_conf['old_ldp']['interfaces'] = conf.return_effective_values('interface') |