From a6499ea9d95d2b66d7977cea1d43f96d0116d4c3 Mon Sep 17 00:00:00 2001
From: Christian Breunig <christian@breunig.cc>
Date: Mon, 17 Apr 2023 22:36:04 +0200
Subject: op-mode: bgp: T1315: add VNI related commands

This extends commit 3fa1092930c (op-mode: bgp: support VRF related "show bgp
vrf" commands).

vyos@vyos:~$ show bgp vni
Possible completions:
  1-16777215            VXLAN network identifier (VNI) number
  all

vyos@vyos:~$ show bgp vni 1 type
Possible completions:
  1                     EAD (Type-1) route
  2                     MAC-IP (Type-2) route
  3                     Multicast (Type-3) route
  ead                   EAD (Type-1) route
  macip                 MAC-IP (Type-2) route
  multicast             Multicast (Type-3) route

vyos@vyos:~$ show bgp vni 1 vtep
Possible completions:
  <x.x.x.x>             Remote VTEP IP address
---
 op-mode-definitions/include/bgp/evpn-type-1.xml.i  |  8 +++
 op-mode-definitions/include/bgp/evpn-type-2.xml.i  |  8 +++
 op-mode-definitions/include/bgp/evpn-type-3.xml.i  |  8 +++
 op-mode-definitions/include/bgp/evpn-type-4.xml.i  |  8 +++
 op-mode-definitions/include/bgp/evpn-type-5.xml.i  |  8 +++
 .../include/bgp/evpn-type-ead.xml.i                |  8 +++
 op-mode-definitions/include/bgp/evpn-type-es.xml.i |  8 +++
 .../include/bgp/evpn-type-macip.xml.i              |  8 +++
 .../include/bgp/evpn-type-multicast.xml.i          |  8 +++
 .../include/bgp/evpn-type-prefix.xml.i             |  8 +++
 .../include/bgp/show-bgp-common.xml.i              | 70 ++++------------------
 op-mode-definitions/show-bgp.xml.in                | 27 +++++++++
 12 files changed, 117 insertions(+), 60 deletions(-)
 create mode 100644 op-mode-definitions/include/bgp/evpn-type-1.xml.i
 create mode 100644 op-mode-definitions/include/bgp/evpn-type-2.xml.i
 create mode 100644 op-mode-definitions/include/bgp/evpn-type-3.xml.i
 create mode 100644 op-mode-definitions/include/bgp/evpn-type-4.xml.i
 create mode 100644 op-mode-definitions/include/bgp/evpn-type-5.xml.i
 create mode 100644 op-mode-definitions/include/bgp/evpn-type-ead.xml.i
 create mode 100644 op-mode-definitions/include/bgp/evpn-type-es.xml.i
 create mode 100644 op-mode-definitions/include/bgp/evpn-type-macip.xml.i
 create mode 100644 op-mode-definitions/include/bgp/evpn-type-multicast.xml.i
 create mode 100644 op-mode-definitions/include/bgp/evpn-type-prefix.xml.i

diff --git a/op-mode-definitions/include/bgp/evpn-type-1.xml.i b/op-mode-definitions/include/bgp/evpn-type-1.xml.i
new file mode 100644
index 000000000..b5097c8b1
--- /dev/null
+++ b/op-mode-definitions/include/bgp/evpn-type-1.xml.i
@@ -0,0 +1,8 @@
+<!-- included start from bgp/evpn-type-1.xml.i -->
+<leafNode name="1">
+  <properties>
+    <help>EAD (Type-1) route</help>
+  </properties>
+  <command>${vyos_op_scripts_dir}/vtysh_wrapper.sh $@</command>
+</leafNode>
+<!-- included end -->
diff --git a/op-mode-definitions/include/bgp/evpn-type-2.xml.i b/op-mode-definitions/include/bgp/evpn-type-2.xml.i
new file mode 100644
index 000000000..827298d62
--- /dev/null
+++ b/op-mode-definitions/include/bgp/evpn-type-2.xml.i
@@ -0,0 +1,8 @@
+<!-- included start from bgp/evpn-type-2.xml.i -->
+<leafNode name="2">
+  <properties>
+    <help>MAC-IP (Type-2) route</help>
+  </properties>
+  <command>${vyos_op_scripts_dir}/vtysh_wrapper.sh $@</command>
+</leafNode>
+<!-- included end -->
diff --git a/op-mode-definitions/include/bgp/evpn-type-3.xml.i b/op-mode-definitions/include/bgp/evpn-type-3.xml.i
new file mode 100644
index 000000000..ae90b2e5c
--- /dev/null
+++ b/op-mode-definitions/include/bgp/evpn-type-3.xml.i
@@ -0,0 +1,8 @@
+<!-- included start from bgp/evpn-type-3.xml.i -->
+<leafNode name="3">
+  <properties>
+    <help>Multicast (Type-3) route</help>
+  </properties>
+  <command>${vyos_op_scripts_dir}/vtysh_wrapper.sh $@</command>
+</leafNode>
+<!-- included end -->
diff --git a/op-mode-definitions/include/bgp/evpn-type-4.xml.i b/op-mode-definitions/include/bgp/evpn-type-4.xml.i
new file mode 100644
index 000000000..7248b4753
--- /dev/null
+++ b/op-mode-definitions/include/bgp/evpn-type-4.xml.i
@@ -0,0 +1,8 @@
+<!-- included start from bgp/evpn-type-4.xml.i -->
+<leafNode name="4">
+  <properties>
+    <help>Ethernet Segment (Type-4) route</help>
+  </properties>
+  <command>${vyos_op_scripts_dir}/vtysh_wrapper.sh $@</command>
+</leafNode>
+<!-- included end -->
diff --git a/op-mode-definitions/include/bgp/evpn-type-5.xml.i b/op-mode-definitions/include/bgp/evpn-type-5.xml.i
new file mode 100644
index 000000000..e3a72168a
--- /dev/null
+++ b/op-mode-definitions/include/bgp/evpn-type-5.xml.i
@@ -0,0 +1,8 @@
+<!-- included start from bgp/evpn-type-5.xml.i -->
+<leafNode name="5">
+  <properties>
+    <help>Prefix (Type-5) route</help>
+  </properties>
+  <command>${vyos_op_scripts_dir}/vtysh_wrapper.sh $@</command>
+</leafNode>
+<!-- included end -->
diff --git a/op-mode-definitions/include/bgp/evpn-type-ead.xml.i b/op-mode-definitions/include/bgp/evpn-type-ead.xml.i
new file mode 100644
index 000000000..452de2f9a
--- /dev/null
+++ b/op-mode-definitions/include/bgp/evpn-type-ead.xml.i
@@ -0,0 +1,8 @@
+<!-- included start from bgp/evpn-type-ead.xml.i -->
+<leafNode name="ead">
+  <properties>
+    <help>EAD (Type-1) route</help>
+  </properties>
+  <command>${vyos_op_scripts_dir}/vtysh_wrapper.sh $@</command>
+</leafNode>
+<!-- included end -->
diff --git a/op-mode-definitions/include/bgp/evpn-type-es.xml.i b/op-mode-definitions/include/bgp/evpn-type-es.xml.i
new file mode 100644
index 000000000..50c40151a
--- /dev/null
+++ b/op-mode-definitions/include/bgp/evpn-type-es.xml.i
@@ -0,0 +1,8 @@
+<!-- included start from bgp/evpn-type-es.xml.i -->
+<leafNode name="es">
+  <properties>
+    <help>Ethernet Segment (Type-4) route</help>
+  </properties>
+  <command>${vyos_op_scripts_dir}/vtysh_wrapper.sh $@</command>
+</leafNode>
+<!-- included end -->
diff --git a/op-mode-definitions/include/bgp/evpn-type-macip.xml.i b/op-mode-definitions/include/bgp/evpn-type-macip.xml.i
new file mode 100644
index 000000000..6f601eb3f
--- /dev/null
+++ b/op-mode-definitions/include/bgp/evpn-type-macip.xml.i
@@ -0,0 +1,8 @@
+<!-- included start from bgp/evpn-type-macip.xml.i -->
+<leafNode name="macip">
+  <properties>
+    <help>MAC-IP (Type-2) route</help>
+  </properties>
+  <command>${vyos_op_scripts_dir}/vtysh_wrapper.sh $@</command>
+</leafNode>
+<!-- included end -->
diff --git a/op-mode-definitions/include/bgp/evpn-type-multicast.xml.i b/op-mode-definitions/include/bgp/evpn-type-multicast.xml.i
new file mode 100644
index 000000000..5194dbb56
--- /dev/null
+++ b/op-mode-definitions/include/bgp/evpn-type-multicast.xml.i
@@ -0,0 +1,8 @@
+<!-- included start from bgp/evpn-type-multicast.xml.i -->
+<leafNode name="multicast">
+  <properties>
+    <help>Multicast (Type-3) route</help>
+  </properties>
+  <command>${vyos_op_scripts_dir}/vtysh_wrapper.sh $@</command>
+</leafNode>
+<!-- included end -->
diff --git a/op-mode-definitions/include/bgp/evpn-type-prefix.xml.i b/op-mode-definitions/include/bgp/evpn-type-prefix.xml.i
new file mode 100644
index 000000000..d5054d86b
--- /dev/null
+++ b/op-mode-definitions/include/bgp/evpn-type-prefix.xml.i
@@ -0,0 +1,8 @@
+<!-- included start from bgp/evpn-type-prefix.xml.i -->
+<leafNode name="prefix">
+  <properties>
+    <help>Prefix (Type-5) route</help>
+  </properties>
+  <command>${vyos_op_scripts_dir}/vtysh_wrapper.sh $@</command>
+</leafNode>
+<!-- included end -->
diff --git a/op-mode-definitions/include/bgp/show-bgp-common.xml.i b/op-mode-definitions/include/bgp/show-bgp-common.xml.i
index c9a112fca..de794a879 100644
--- a/op-mode-definitions/include/bgp/show-bgp-common.xml.i
+++ b/op-mode-definitions/include/bgp/show-bgp-common.xml.i
@@ -171,66 +171,16 @@
                 <help>Specify Route type</help>
               </properties>
               <children>
-                <leafNode name="1">
-                  <properties>
-                    <help>EAD (Type-1) route</help>
-                  </properties>
-                  <command>${vyos_op_scripts_dir}/vtysh_wrapper.sh $@</command>
-                </leafNode>
-                <leafNode name="2">
-                  <properties>
-                    <help>MAC-IP (Type-2) route</help>
-                  </properties>
-                  <command>${vyos_op_scripts_dir}/vtysh_wrapper.sh $@</command>
-                </leafNode>
-                <leafNode name="3">
-                  <properties>
-                    <help>Multicast (Type-3) route</help>
-                  </properties>
-                  <command>${vyos_op_scripts_dir}/vtysh_wrapper.sh $@</command>
-                </leafNode>
-                <leafNode name="4">
-                  <properties>
-                    <help>Ethernet Segment (Type-4) route</help>
-                  </properties>
-                  <command>${vyos_op_scripts_dir}/vtysh_wrapper.sh $@</command>
-                </leafNode>
-                <leafNode name="5">
-                  <properties>
-                    <help>Prefix (Type-5) route</help>
-                  </properties>
-                  <command>${vyos_op_scripts_dir}/vtysh_wrapper.sh $@</command>
-                </leafNode>
-                <leafNode name="ead">
-                  <properties>
-                    <help>EAD (Type-1) route</help>
-                  </properties>
-                  <command>${vyos_op_scripts_dir}/vtysh_wrapper.sh $@</command>
-                </leafNode>
-                <leafNode name="es">
-                  <properties>
-                    <help>Ethernet Segment (Type-4) route</help>
-                  </properties>
-                  <command>${vyos_op_scripts_dir}/vtysh_wrapper.sh $@</command>
-                </leafNode>
-                <leafNode name="macip">
-                  <properties>
-                    <help>MAC-IP (Type-2) route</help>
-                  </properties>
-                  <command>${vyos_op_scripts_dir}/vtysh_wrapper.sh $@</command>
-                </leafNode>
-                <leafNode name="multicast">
-                  <properties>
-                    <help>Multicast (Type-3) route</help>
-                  </properties>
-                  <command>${vyos_op_scripts_dir}/vtysh_wrapper.sh $@</command>
-                </leafNode>
-                <leafNode name="prefix">
-                  <properties>
-                    <help>Prefix (Type-5) route</help>
-                  </properties>
-                  <command>${vyos_op_scripts_dir}/vtysh_wrapper.sh $@</command>
-                </leafNode>
+                #include <include/bgp/evpn-type-1.xml.i>
+                #include <include/bgp/evpn-type-2.xml.i>
+                #include <include/bgp/evpn-type-3.xml.i>
+                #include <include/bgp/evpn-type-4.xml.i>
+                #include <include/bgp/evpn-type-5.xml.i>
+                #include <include/bgp/evpn-type-ead.xml.i>
+                #include <include/bgp/evpn-type-es.xml.i>
+                #include <include/bgp/evpn-type-macip.xml.i>
+                #include <include/bgp/evpn-type-multicast.xml.i>
+                #include <include/bgp/evpn-type-prefix.xml.i>
               </children>
             </node>
             #include <include/vni-tagnode-all.xml.i>
diff --git a/op-mode-definitions/show-bgp.xml.in b/op-mode-definitions/show-bgp.xml.in
index 974147621..3c212614c 100644
--- a/op-mode-definitions/show-bgp.xml.in
+++ b/op-mode-definitions/show-bgp.xml.in
@@ -51,6 +51,33 @@
             </properties>
             <command>${vyos_op_scripts_dir}/vtysh_wrapper.sh $@</command>
           </leafNode>
+          #include <include/vni-tagnode-all.xml.i>
+          <tagNode name="vni">
+            <children>
+              <tagNode name="vtep">
+                <properties>
+                  <help>Remote VTEP IP address</help>
+                  <completionHelp>
+                    <list>&lt;x.x.x.x&gt;</list>
+                  </completionHelp>
+                </properties>
+                <command>${vyos_op_scripts_dir}/vtysh_wrapper.sh $@</command>
+              </tagNode>
+              <node name="type">
+                <properties>
+                  <help>Display number of prefixes for all afi/safi</help>
+                </properties>
+                <children>
+                  #include <include/bgp/evpn-type-1.xml.i>
+                  #include <include/bgp/evpn-type-2.xml.i>
+                  #include <include/bgp/evpn-type-3.xml.i>
+                  #include <include/bgp/evpn-type-ead.xml.i>
+                  #include <include/bgp/evpn-type-macip.xml.i>
+                  #include <include/bgp/evpn-type-multicast.xml.i>
+                </children>
+              </node>
+            </children>
+          </tagNode>
           <leafNode name="vrf">
             <properties>
               <help>Show BGP VRF information</help>
-- 
cgit v1.2.3