[cmaster-next] [PATCH] lib, zebra: Minimize display of link-params sub data

Donald Sharp sharpd at cumulusnetworks.com
Thu Dec 1 08:16:29 EST 2016


When link-params is configured it auto starts displaying
6000-02# conf t
dell-s6000-02(config)# int swp1
dell-s6000-02(config-if)# link-params
dell-s6000-02(config-link-params)# admin-grp 0x12345678
dell-s6000-02(config-link-params)# end
dell-s6000-02# show run

interface swp1
 link-params
  enable
  metric 0              <----Remove the bw lines
  max-bw 1.25e+06
  max-rsv-bw 1.25e+06
  unrsv-bw 0 1.25e+06
  unrsv-bw 1 1.25e+06
  unrsv-bw 2 1.25e+06
  unrsv-bw 3 1.25e+06
  unrsv-bw 4 1.25e+06
  unrsv-bw 5 1.25e+06
  unrsv-bw 6 1.25e+06
  unrsv-bw 7 1.25e+06
  admin-grp 305419896
  exit-link-params
!

I'd like to reduce this to:

interface enp0s3
 ip igmp
 ip pim sm
 link-params
  enable
  admin-grp 0x12345678    <----- Fix this to be what we entered
  exit-link-params
!

(cherry picked from commit fc256e310c9d231e8bc1e0a147009463c95ab19f)
---
 lib/if.c          | 10 +++++-----
 lib/if.h          |  1 +
 zebra/interface.c | 13 +++++++------
 3 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/lib/if.c b/lib/if.c
index df53f8d..e745dc9 100644
--- a/lib/if.c
+++ b/lib/if.c
@@ -1366,14 +1366,14 @@ if_link_params_get (struct interface *ifp)
   iflp->te_metric = ifp->metric;
 
   /* Compute default bandwidth based on interface */
-  int bw = (float)((ifp->bandwidth ? ifp->bandwidth : DEFAULT_BANDWIDTH)
-                   * TE_KILO_BIT / TE_BYTE);
+  iflp->default_bw = ((ifp->bandwidth ? ifp->bandwidth : DEFAULT_BANDWIDTH)
+		      * TE_KILO_BIT / TE_BYTE);
 
   /* Set Max, Reservable and Unreserved Bandwidth */
-  iflp->max_bw = bw;
-  iflp->max_rsv_bw = bw;
+  iflp->max_bw = iflp->default_bw;
+  iflp->max_rsv_bw = iflp->default_bw;
   for (i = 0; i < MAX_CLASS_TYPE; i++)
-    iflp->unrsv_bw[i] = bw;
+    iflp->unrsv_bw[i] = iflp->default_bw;
 
   /* Update Link parameters status */
   iflp->lp_status = LP_TE | LP_MAX_BW | LP_MAX_RSV_BW | LP_UNRSV_BW;
diff --git a/lib/if.h b/lib/if.h
index 7fdd46d..0041a1a 100644
--- a/lib/if.h
+++ b/lib/if.h
@@ -174,6 +174,7 @@ struct if_stats
 struct if_link_params {
   u_int32_t lp_status;   /* Status of Link Parameters: */
   u_int32_t te_metric;   /* Traffic Engineering metric */
+  float default_bw;
   float max_bw;          /* Maximum Bandwidth */
   float max_rsv_bw;      /* Maximum Reservable Bandwidth */
   float unrsv_bw[MAX_CLASS_TYPE];     /* Unreserved Bandwidth per Class Type (8) */
diff --git a/zebra/interface.c b/zebra/interface.c
index b87f61f..f7ec650 100644
--- a/zebra/interface.c
+++ b/zebra/interface.c
@@ -2787,20 +2787,21 @@ link_params_config_write (struct vty *vty, struct interface *ifp)
 
   vty_out (vty, " link-params%s", VTY_NEWLINE);
   vty_out(vty, "  enable%s", VTY_NEWLINE);
-  if (IS_PARAM_SET(iflp, LP_TE))
+  if (IS_PARAM_SET(iflp, LP_TE) && iflp->te_metric != (u_int32_t)ifp->metric)
     vty_out(vty, "  metric %u%s",iflp->te_metric, VTY_NEWLINE);
-  if (IS_PARAM_SET(iflp, LP_MAX_BW))
+  if (IS_PARAM_SET(iflp, LP_MAX_BW) && iflp->max_bw != iflp->default_bw)
     vty_out(vty, "  max-bw %g%s", iflp->max_bw, VTY_NEWLINE);
-  if (IS_PARAM_SET(iflp, LP_MAX_RSV_BW))
+  if (IS_PARAM_SET(iflp, LP_MAX_RSV_BW) && iflp->max_rsv_bw != iflp->default_bw)
     vty_out(vty, "  max-rsv-bw %g%s", iflp->max_rsv_bw, VTY_NEWLINE);
   if (IS_PARAM_SET(iflp, LP_UNRSV_BW))
     {
       for (i = 0; i < 8; i++)
-        vty_out(vty, "  unrsv-bw %d %g%s",
-            i, iflp->unrsv_bw[i], VTY_NEWLINE);
+	if (iflp->unrsv_bw[i] != iflp->default_bw)
+	  vty_out(vty, "  unrsv-bw %d %g%s",
+		  i, iflp->unrsv_bw[i], VTY_NEWLINE);
     }
   if (IS_PARAM_SET(iflp, LP_ADM_GRP))
-    vty_out(vty, "  admin-grp %u%s", iflp->admin_grp, VTY_NEWLINE);
+    vty_out(vty, "  admin-grp 0x%x%s", iflp->admin_grp, VTY_NEWLINE);
   if (IS_PARAM_SET(iflp, LP_DELAY))
     {
       vty_out(vty, "  delay %u", iflp->av_delay);
-- 
2.5.5





More information about the dev mailing list