lib, zebra: Minimize display of link-params sub data

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
!

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This commit is contained in:
Donald Sharp 2016-12-01 10:49:22 -05:00 committed by David Lamparter
parent 7cd6a66a6f
commit b6a9e7b487
3 changed files with 16 additions and 13 deletions

View file

@ -1366,14 +1366,14 @@ if_link_params_get (struct interface *ifp)
iflp->te_metric = ifp->metric; iflp->te_metric = ifp->metric;
/* Compute default bandwidth based on interface */ /* Compute default bandwidth based on interface */
int bw = (float)((ifp->bandwidth ? ifp->bandwidth : DEFAULT_BANDWIDTH) iflp->default_bw = ((ifp->bandwidth ? ifp->bandwidth : DEFAULT_BANDWIDTH)
* TE_KILO_BIT / TE_BYTE); * TE_KILO_BIT / TE_BYTE);
/* Set Max, Reservable and Unreserved Bandwidth */ /* Set Max, Reservable and Unreserved Bandwidth */
iflp->max_bw = bw; iflp->max_bw = iflp->default_bw;
iflp->max_rsv_bw = bw; iflp->max_rsv_bw = iflp->default_bw;
for (i = 0; i < MAX_CLASS_TYPE; i++) for (i = 0; i < MAX_CLASS_TYPE; i++)
iflp->unrsv_bw[i] = bw; iflp->unrsv_bw[i] = iflp->default_bw;
/* Update Link parameters status */ /* Update Link parameters status */
iflp->lp_status = LP_TE | LP_MAX_BW | LP_MAX_RSV_BW | LP_UNRSV_BW; iflp->lp_status = LP_TE | LP_MAX_BW | LP_MAX_RSV_BW | LP_UNRSV_BW;

View file

@ -161,6 +161,7 @@ struct if_stats
#define LP_RES_BW 0x0400 #define LP_RES_BW 0x0400
#define LP_AVA_BW 0x0800 #define LP_AVA_BW 0x0800
#define LP_USE_BW 0x1000 #define LP_USE_BW 0x1000
#define LP_TE_METRIC 0x2000
#define IS_PARAM_UNSET(lp, st) !(lp->lp_status & st) #define IS_PARAM_UNSET(lp, st) !(lp->lp_status & st)
#define IS_PARAM_SET(lp, st) (lp->lp_status & st) #define IS_PARAM_SET(lp, st) (lp->lp_status & st)
@ -174,6 +175,7 @@ struct if_stats
struct if_link_params { struct if_link_params {
u_int32_t lp_status; /* Status of Link Parameters: */ u_int32_t lp_status; /* Status of Link Parameters: */
u_int32_t te_metric; /* Traffic Engineering metric */ u_int32_t te_metric; /* Traffic Engineering metric */
float default_bw;
float max_bw; /* Maximum Bandwidth */ float max_bw; /* Maximum Bandwidth */
float max_rsv_bw; /* Maximum Reservable Bandwidth */ float max_rsv_bw; /* Maximum Reservable Bandwidth */
float unrsv_bw[MAX_CLASS_TYPE]; /* Unreserved Bandwidth per Class Type (8) */ float unrsv_bw[MAX_CLASS_TYPE]; /* Unreserved Bandwidth per Class Type (8) */

View file

@ -1846,7 +1846,7 @@ DEFUN (link_params_metric,
VTY_GET_ULONG("metric", metric, argv[0]); VTY_GET_ULONG("metric", metric, argv[0]);
/* Update TE metric if needed */ /* Update TE metric if needed */
link_param_cmd_set_uint32 (ifp, &iflp->te_metric, LP_TE, metric); link_param_cmd_set_uint32 (ifp, &iflp->te_metric, LP_TE | LP_TE_METRIC, metric);
return CMD_SUCCESS; return CMD_SUCCESS;
} }
@ -1860,7 +1860,7 @@ DEFUN (no_link_params_metric,
VTY_DECLVAR_CONTEXT (interface, ifp); VTY_DECLVAR_CONTEXT (interface, ifp);
/* Unset TE Metric */ /* Unset TE Metric */
link_param_cmd_unset(ifp, LP_TE); link_param_cmd_unset(ifp, LP_TE | LP_TE_METRIC);
return CMD_SUCCESS; return CMD_SUCCESS;
} }
@ -2788,20 +2788,21 @@ link_params_config_write (struct vty *vty, struct interface *ifp)
vty_out (vty, " link-params%s", VTY_NEWLINE); vty_out (vty, " link-params%s", VTY_NEWLINE);
vty_out(vty, " enable%s", VTY_NEWLINE); vty_out(vty, " enable%s", VTY_NEWLINE);
if (IS_PARAM_SET(iflp, LP_TE)) if (IS_PARAM_SET(iflp, LP_TE) && IS_PARAM_SET(iflp, LP_TE_METRIC))
vty_out(vty, " metric %u%s",iflp->te_metric, VTY_NEWLINE); 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); 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); vty_out(vty, " max-rsv-bw %g%s", iflp->max_rsv_bw, VTY_NEWLINE);
if (IS_PARAM_SET(iflp, LP_UNRSV_BW)) if (IS_PARAM_SET(iflp, LP_UNRSV_BW))
{ {
for (i = 0; i < 8; i++) for (i = 0; i < 8; i++)
vty_out(vty, " unrsv-bw %d %g%s", if (iflp->unrsv_bw[i] != iflp->default_bw)
i, iflp->unrsv_bw[i], VTY_NEWLINE); vty_out(vty, " unrsv-bw %d %g%s",
i, iflp->unrsv_bw[i], VTY_NEWLINE);
} }
if (IS_PARAM_SET(iflp, LP_ADM_GRP)) 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)) if (IS_PARAM_SET(iflp, LP_DELAY))
{ {
vty_out(vty, " delay %u", iflp->av_delay); vty_out(vty, " delay %u", iflp->av_delay);