From 6451fe281f4b28b9f2dc504c954e0fd72e34a5a0 Mon Sep 17 00:00:00 2001
From: Cheeze_It <none@none.com>
Date: Fri, 18 Dec 2020 20:27:10 -0700
Subject: mpls: T915: Add a bunch of op commands to LDP

In here we are adding a lot more commands that
can be used within LDP. There's also some help
and contextual changes for initialism that are
being removed.
---
 interface-definitions/protocols-mpls.xml.in |  16 +--
 op-mode-definitions/show-mpls.xml           | 179 ++++++++++++++++++++++++++--
 2 files changed, 174 insertions(+), 21 deletions(-)

diff --git a/interface-definitions/protocols-mpls.xml.in b/interface-definitions/protocols-mpls.xml.in
index 3ac248e79..645b264bb 100644
--- a/interface-definitions/protocols-mpls.xml.in
+++ b/interface-definitions/protocols-mpls.xml.in
@@ -16,7 +16,7 @@
             <children>
               <leafNode name="router-id">
                 <properties>
-                  <help>Label Distribution Protocol (LDP) router ID</help>
+                  <help>Label Distribution Protocol router ID</help>
                   <valueHelp>
                     <format>ipv4</format>
                     <description>LDP IPv4 ID</description>
@@ -28,7 +28,7 @@
               </leafNode>
               <node name="allocation">
                 <properties>
-                  <help>Forwarding equivalence class (FEC) allocation from local routes</help>
+                  <help>Forwarding equivalence class allocation from local routes</help>
                 </properties>
                 <children>
                   <node name="ipv4">
@@ -334,7 +334,7 @@
               </node>
               <node name="parameters">
                 <properties>
-                  <help>Label Distribution Protocol (LDP) miscellaneous parameters</help>
+                  <help>Label Distribution Protocol miscellaneous parameters</help>
                 </properties>
                 <children>
                   <leafNode name="cisco-interop-tlv">
@@ -369,7 +369,7 @@
                       </leafNode>
                       <node name="export-filter">
                         <properties>
-                          <help>Forwarding equivalence class (FEC) export filter</help>
+                          <help>Forwarding equivalence class export filter</help>
                         </properties>
                         <children>
                           <leafNode name="filter-access-list">
@@ -413,7 +413,7 @@
                       </leafNode>
                       <node name="export-filter">
                         <properties>
-                          <help>Forwarding equivalence class (FEC) export filter</help>
+                          <help>Forwarding equivalence class export filter</help>
                         </properties>
                         <children>
                           <leafNode name="filter-access-list6">
@@ -458,7 +458,7 @@
                     <children>
                       <node name="import-filter">
                         <properties>
-                          <help>Forwarding equivalence class (FEC) import filter</help>
+                          <help>Forwarding equivalence class import filter</help>
                         </properties>
                         <children>
                           <leafNode name="filter-access-list">
@@ -496,7 +496,7 @@
                     <children>
                       <node name="import-filter">
                         <properties>
-                          <help>Forwarding equivalence class (FEC) import filter</help>
+                          <help>Forwarding equivalence class import filter</help>
                         </properties>
                         <children>
                           <leafNode name="filter-access-list6">
@@ -542,7 +542,7 @@
           </node>
           <node name="parameters">
             <properties>
-              <help>Multiprotocol Label Switching (MPLS) miscellaneous parameters</help>
+              <help>Multiprotocol Label Switching miscellaneous parameters</help>
             </properties>
             <children>
               <leafNode name="no-propagate-ttl">
diff --git a/op-mode-definitions/show-mpls.xml b/op-mode-definitions/show-mpls.xml
index 3f160b6dc..833ac98eb 100644
--- a/op-mode-definitions/show-mpls.xml
+++ b/op-mode-definitions/show-mpls.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <interfaceDefinition>
   <node name="show">
     <children>
@@ -17,33 +17,186 @@
                   <help>Label Information Base</help>
                 </properties>
                 <command>/usr/bin/vtysh -c "show mpls ldp binding"</command>
+                <children>
+                  <node name="detail">
+                    <properties>
+                      <help>Show detailed information</help>
+                    </properties>
+                    <command>/usr/bin/vtysh -c "show mpls ldp binding detail"</command>
+                  </node>
+                  <tagNode name="neighbor">
+                    <properties>
+                      <help>Display labels from LDP neighbor</help>
+                      <completionHelp>
+                        <list>&lt;x.x.x.x&gt; &lt;h:h:h:h:h:h:h:h&gt;</list>
+                        <script>/usr/bin/vtysh -c "show mpls ldp neighbor" | awk '{print $2}' | egrep -v "ID"</script>
+                      </completionHelp>
+                    </properties>
+                    <command>/usr/bin/vtysh -c "show mpls ldp binding neighbor $6"</command>
+                    <children>
+                      <leafNode name="detail">
+                        <properties>
+                          <help>Show detailed information</help>
+                        </properties>
+                        <command>/usr/bin/vtysh -c "show mpls ldp binding neighbor $6 detail"</command>
+                      </leafNode>
+                      <tagNode name="local-label">
+                        <properties>
+                          <help>Match locally assigned label value</help>
+                        </properties>
+                        <command>/usr/bin/vtysh -c "show mpls ldp binding neighbor $6 local-label $8"</command>
+                      </tagNode>
+                      <tagNode name="remote-label">
+                        <properties>
+                          <help>Match remotely assigned label value</help>
+                        </properties>
+                        <command>/usr/bin/vtysh -c "show mpls ldp binding neighbor $6 remote-label $8"</command>
+                      </tagNode>
+                    </children>
+                  </tagNode>
+                  <tagNode name="local-label">
+                    <properties>
+                      <help>Match locally assigned label value</help>
+                    </properties>
+                    <command>/usr/bin/vtysh -c "show mpls ldp binding local-label $6"</command>
+                    <children>
+                      <leafNode name="detail">
+                        <properties>
+                          <help>Show detailed information</help>
+                        </properties>
+                        <command>/usr/bin/vtysh -c "show mpls ldp binding local-label $6 detail"</command>
+                      </leafNode>
+                      <tagNode name="neighbor">
+                        <properties>
+                          <help>Match LDP neighbor</help>
+                          <completionHelp>
+                            <list>&lt;x.x.x.x&gt; &lt;h:h:h:h:h:h:h:h&gt;</list>
+                            <script>/usr/bin/vtysh -c "show mpls ldp neighbor" | awk '{print $2}' | egrep -v "ID"</script>
+                          </completionHelp>
+                        </properties>
+                        <command>/usr/bin/vtysh -c "show mpls ldp binding local-label $6 neighbor $8"</command>
+                      </tagNode>
+                      <tagNode name="remote-label">
+                        <properties>
+                          <help>Match remotely assigned label value</help>
+                        </properties>
+                        <command>/usr/bin/vtysh -c "show mpls ldp binding local-label $6 remote-label $8"</command>
+                      </tagNode>
+                    </children>
+                  </tagNode>
+                  <tagNode name="remote-label">
+                    <properties>
+                      <help>Match remotely assigned label value</help>
+                    </properties>
+                    <command>/usr/bin/vtysh -c "show mpls ldp binding remote-label $6"</command>
+                    <children>
+                      <leafNode name="detail">
+                        <properties>
+                          <help>Show detailed information</help>
+                        </properties>
+                        <command>/usr/bin/vtysh -c "show mpls ldp binding remote-label $6 detail"</command>
+                      </leafNode>
+                      <tagNode name="neighbor">
+                        <properties>
+                          <help>Match LDP neighbor</help>
+                          <completionHelp>
+                            <list>&lt;x.x.x.x&gt; &lt;h:h:h:h:h:h:h:h&gt;</list>
+                            <script>/usr/bin/vtysh -c "show mpls ldp neighbor" | awk '{print $2}' | egrep -v "ID"</script>
+                          </completionHelp>
+                        </properties>
+                        <command>/usr/bin/vtysh -c "show mpls ldp binding remote-label $6 neighbor $8"</command>
+                      </tagNode>
+                      <tagNode name="local-label">
+                        <properties>
+                          <help>Match locally assigned label value</help>
+                        </properties>
+                        <command>/usr/bin/vtysh -c "show mpls ldp binding remote-label $6 local-label $8"</command>
+                      </tagNode>
+                    </children>
+                  </tagNode>
+                </children>
               </node>
+              <tagNode name="binding">
+                <properties>
+                  <help>LDP forwarding equivalence class</help>
+                  <completionHelp>
+                    <list>&lt;x.x.x.x/x&gt; &lt;h:h:h:h:h:h:h:h/h&gt;</list>
+                  </completionHelp>
+                </properties>
+                <command>/usr/bin/vtysh -c "show mpls ldp binding $5"</command>
+                <children>
+                  <leafNode name="detail">
+                    <properties>
+                      <help>Show detailed information</help>
+                    </properties>
+                    <command>/usr/bin/vtysh -c "show mpls ldp binding $5 detail"</command>
+                  </leafNode>
+                </children>
+              </tagNode>
               <node name="discovery">
                 <properties>
                   <help>Discovery hello information</help>
                 </properties>
                 <command>/usr/bin/vtysh -c "show mpls ldp discovery"</command>
+                <children>
+                  <leafNode name="detail">
+                    <properties>
+                      <help>Show detailed information</help>
+                    </properties>
+                    <command>/usr/bin/vtysh -c "show mpls ldp discovery detail"</command>
+                  </leafNode>
+                </children>
               </node>
-             <node name="interface">
+              <node name="interface">
                 <properties>
                   <help>LDP interface information</help>
                 </properties>
                 <command>/usr/bin/vtysh -c "show mpls ldp interface"</command>
               </node>
               <node name="neighbor">
-               <properties>
-                 <help>LDP neighbor information</help>
-               </properties>
-               <command>/usr/bin/vtysh -c "show mpls ldp neighbor"</command>
+                <properties>
+                  <help>LDP neighbor information</help>
+                </properties>
+                <command>/usr/bin/vtysh -c "show mpls ldp neighbor"</command>
                 <children>
-                 <node name="detail">
-                   <properties>
-                     <help>Show neighbor detail</help>
-                   </properties>
-                   <command>/usr/bin/vtysh -c "show mpls ldp neighbor detail"</command>
-                 </node>
-               </children>
+                  <leafNode name="detail">
+                    <properties>
+                      <help>Show detailed information</help>
+                    </properties>
+                    <command>/usr/bin/vtysh -c "show mpls ldp neighbor detail"</command>
+                  </leafNode>
+                  <leafNode name="capabilities">
+                    <properties>
+                      <help>Show neighbor capability information</help>
+                    </properties>
+                    <command>/usr/bin/vtysh -c "show mpls ldp neighbor capabilities"</command>
+                  </leafNode>
+                </children>
               </node>
+              <tagNode name="neighbor">
+                <properties>
+                  <help>LDP neighbor</help>
+                  <completionHelp>
+                    <list>&lt;x.x.x.x&gt; &lt;h:h:h:h:h:h:h:h&gt;</list>
+                    <script>/usr/bin/vtysh -c "show mpls ldp neighbor" | awk '{print $2}' | egrep -v "ID"</script>
+                  </completionHelp>
+                </properties>
+                <command>/usr/bin/vtysh -c "show mpls ldp neighbor $5"</command>
+                <children>
+                  <leafNode name="detail">
+                    <properties>
+                      <help>Show detailed information</help>
+                    </properties>
+                    <command>/usr/bin/vtysh -c "show mpls ldp neighbor $5 detail"</command>
+                  </leafNode>
+                  <leafNode name="capabilities">
+                    <properties>
+                      <help>Show neighbor capability information</help>
+                    </properties>
+                    <command>/usr/bin/vtysh -c "show mpls ldp neighbor $5 capabilities"</command>
+                  </leafNode>
+                </children>
+              </tagNode>
             </children>
           </node>
           <node name="pseudowire">
-- 
cgit v1.2.3