diff options
| author | Igor Ryzhov <iryzhov@nfware.com> | 2024-01-24 23:04:23 +0200 | 
|---|---|---|
| committer | Igor Ryzhov <iryzhov@nfware.com> | 2024-01-28 23:28:40 +0200 | 
| commit | 390081329874c4fd8b4a15ffa2a090275b5fc8ac (patch) | |
| tree | 632835cad70bf321e2f0d2acaf9d59c11a3925fe /zebra/interface.c | |
| parent | 42d6b864cdce2e4477a14eae639bc22aa9fc1118 (diff) | |
zebra: convert to mgmtd
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
Diffstat (limited to 'zebra/interface.c')
| -rw-r--r-- | zebra/interface.c | 974 | 
1 files changed, 0 insertions, 974 deletions
diff --git a/zebra/interface.c b/zebra/interface.c index 62ff676f48..cba052dff6 100644 --- a/zebra/interface.c +++ b/zebra/interface.c @@ -18,7 +18,6 @@  #include "log.h"  #include "zclient.h"  #include "vrf.h" -#include "lib/northbound_cli.h"  #include "zebra/rtadv.h"  #include "zebra_ns.h" @@ -37,7 +36,6 @@  #include "zebra/zebra_vxlan.h"  #include "zebra/zebra_errors.h"  #include "zebra/zebra_evpn_mh.h" -#include "zebra/zebra_nb.h"  DEFINE_MTYPE_STATIC(ZEBRA, ZINFO, "Zebra Interface Information"); @@ -3685,36 +3683,6 @@ void if_arp(struct interface *ifp, bool enable)  	if_refresh(ifp);  } -DEFPY_YANG (multicast_new, -       multicast_new_cmd, -       "[no] multicast <enable$on|disable$off>", -       NO_STR -       "Control multicast flag on interface\n" -       "Set multicast flag on interface\n" -       "Unset multicast flag on interface\n") -{ -	if (!no) -		nb_cli_enqueue_change(vty, "./frr-zebra:zebra/multicast", -				      NB_OP_CREATE, on ? "true" : "false"); -	else -		nb_cli_enqueue_change(vty, "./frr-zebra:zebra/multicast", -				      NB_OP_DESTROY, NULL); - -	return nb_cli_apply_changes(vty, NULL); -} - -void lib_interface_zebra_multicast_cli_write(struct vty *vty, -					     const struct lyd_node *dnode, -					     bool show_defaults) -{ -	bool multicast = yang_dnode_get_bool(dnode, NULL); - -	if (multicast) -		vty_out(vty, " multicast enable\n"); -	else -		vty_out(vty, " multicast disable\n"); -} -  int if_multicast_set(struct interface *ifp)  {  	struct zebra_if *if_data; @@ -3733,47 +3701,6 @@ int if_multicast_set(struct interface *ifp)  	return 0;  } -DEFUN_HIDDEN (multicast, -       multicast_cmd, -       "multicast", -       "Set multicast flag to interface\n") -{ -	nb_cli_enqueue_change(vty, "./frr-zebra:zebra/multicast", -			      NB_OP_CREATE, "true"); - -	return nb_cli_apply_changes(vty, NULL); -} - -DEFPY_YANG (mpls, -       mpls_cmd, -       "[no] mpls <enable$on|disable$off>", -       NO_STR -       MPLS_STR -       "Set mpls to be on for the interface\n" -       "Set mpls to be off for the interface\n") -{ -	if (!no) -		nb_cli_enqueue_change(vty, "./frr-zebra:zebra/mpls", -				      NB_OP_CREATE, on ? "true" : "false"); -	else -		nb_cli_enqueue_change(vty, "./frr-zebra:zebra/mpls", -				      NB_OP_DESTROY, NULL); - -	return nb_cli_apply_changes(vty, NULL); -} - -void lib_interface_zebra_mpls_cli_write(struct vty *vty, -					const struct lyd_node *dnode, -					bool show_defaults) -{ -	bool mpls = yang_dnode_get_bool(dnode, NULL); - -	if (mpls) -		vty_out(vty, " mpls enable\n"); -	else -		vty_out(vty, " mpls disable\n"); -} -  int if_multicast_unset(struct interface *ifp)  {  	struct zebra_if *if_data; @@ -3792,18 +3719,6 @@ int if_multicast_unset(struct interface *ifp)  	return 0;  } -DEFUN_HIDDEN (no_multicast, -       no_multicast_cmd, -       "no multicast", -       NO_STR -       "Unset multicast flag to interface\n") -{ -	nb_cli_enqueue_change(vty, "./frr-zebra:zebra/multicast", -			      NB_OP_CREATE, "false"); - -	return nb_cli_apply_changes(vty, NULL); -} -  int if_linkdetect(struct interface *ifp, bool detect)  {  	int if_was_operative; @@ -3827,30 +3742,6 @@ int if_linkdetect(struct interface *ifp, bool detect)  	return 0;  } -DEFPY_YANG (linkdetect, -      linkdetect_cmd, -      "[no] link-detect", -      NO_STR -      "Enable link detection on interface\n") -{ -	nb_cli_enqueue_change(vty, "./frr-zebra:zebra/link-detect", -			      NB_OP_CREATE, no ? "false" : "true"); - -	return nb_cli_apply_changes(vty, NULL); -} - -void lib_interface_zebra_link_detect_cli_write(struct vty *vty, -					       const struct lyd_node *dnode, -					       bool show_defaults) -{ -	bool link_detect = yang_dnode_get_bool(dnode, NULL); - -	if (!link_detect) -		vty_out(vty, " no link-detect\n"); -	else if (show_defaults) -		vty_out(vty, " link-detect\n"); -} -  int if_shutdown(struct interface *ifp)  {  	struct zebra_if *if_data; @@ -3870,30 +3761,6 @@ int if_shutdown(struct interface *ifp)  	return 0;  } -DEFPY_YANG (shutdown_if, -       shutdown_if_cmd, -       "[no] shutdown", -       NO_STR -       "Shutdown the selected interface\n") -{ -	nb_cli_enqueue_change(vty, "./frr-zebra:zebra/enabled", -			      NB_OP_CREATE, no ? "true" : "false"); - -	return nb_cli_apply_changes(vty, NULL); -} - -void lib_interface_zebra_enabled_cli_write(struct vty *vty, -					   const struct lyd_node *dnode, -					   bool show_defaults) -{ -	bool enabled = yang_dnode_get_bool(dnode, NULL); - -	if (!enabled) -		vty_out(vty, " shutdown\n"); -	else if (show_defaults) -		vty_out(vty, " no shutdown\n"); -} -  int if_no_shutdown(struct interface *ifp)  {  	struct zebra_if *if_data; @@ -3918,39 +3785,6 @@ int if_no_shutdown(struct interface *ifp)  	return 0;  } -DEFPY_YANG (bandwidth_if, -       bandwidth_if_cmd, -       "[no] bandwidth ![(1-100000)]$bw", -       NO_STR -       "Set bandwidth informational parameter\n" -       "Bandwidth in megabits\n") -{ -	if (!no) -		nb_cli_enqueue_change(vty, "./frr-zebra:zebra/bandwidth", -				      NB_OP_CREATE, bw_str); -	else -		nb_cli_enqueue_change(vty, "./frr-zebra:zebra/bandwidth", -				      NB_OP_DESTROY, NULL); - -	return nb_cli_apply_changes(vty, NULL); -} - -void lib_interface_zebra_bandwidth_cli_write(struct vty *vty, -					     const struct lyd_node *dnode, -					     bool show_defaults) -{ -	uint32_t bandwidth = yang_dnode_get_uint32(dnode, NULL); - -	vty_out(vty, " bandwidth %u\n", bandwidth); -} - -struct cmd_node link_params_node = { -	.name = "link-params", -	.node = LINK_PARAMS_NODE, -	.parent_node = INTERFACE_NODE, -	.prompt = "%s(config-link-params)# ", -}; -  void link_param_cmd_set_uint32(struct interface *ifp, uint32_t *field,  			       uint32_t type, uint32_t value)  { @@ -3995,600 +3829,6 @@ void link_param_cmd_unset(struct interface *ifp, uint32_t type)  		zebra_interface_parameters_update(ifp);  } -DEFUN_YANG_NOSH (link_params, -       link_params_cmd, -       "link-params", -       LINK_PARAMS_STR) -{ -	int ret; - -	nb_cli_enqueue_change(vty, "./frr-zebra:zebra/link-params", NB_OP_CREATE, NULL); - -	ret = nb_cli_apply_changes(vty, NULL); -	if (ret == CMD_SUCCESS) { -		char xpath[XPATH_MAXLEN]; -		snprintf(xpath, sizeof(xpath), "%s/frr-zebra:zebra/link-params", VTY_CURR_XPATH); -		VTY_PUSH_XPATH(LINK_PARAMS_NODE, xpath); -	} - -	return ret; -} - -DEFUN_NOSH (exit_link_params, -       exit_link_params_cmd, -       "exit-link-params", -       "Exit from Link Params configuration mode\n") -{ -	cmd_exit(vty); -	return CMD_SUCCESS; -} - -void lib_interface_zebra_link_params_cli_write(struct vty *vty, -					       const struct lyd_node *dnode, -					       bool show_defaults) -{ -	vty_out(vty, " link-params\n"); -} - -void lib_interface_zebra_link_params_cli_write_end(struct vty *vty, -						   const struct lyd_node *dnode) -{ -	vty_out(vty, " exit-link-params\n"); -} - -DEFUN_YANG (no_link_params, -       no_link_params_cmd, -       "no link-params", -       NO_STR -       LINK_PARAMS_STR) -{ -	nb_cli_enqueue_change(vty, "./frr-zebra:zebra/link-params", NB_OP_DESTROY, NULL); - -	return nb_cli_apply_changes(vty, NULL); -} - -/* Specific Traffic Engineering parameters commands */ -DEFUN_HIDDEN (link_params_enable, -       link_params_enable_cmd, -       "enable", -       "Activate link parameters on this interface\n") -{ -	vty_out(vty, "This command is deprecated. Link parameters are activated when \"link-params\" node is entered.\n"); - -	return CMD_SUCCESS; -} - -DEFUN_NOSH (no_link_params_enable, -       no_link_params_enable_cmd, -       "no enable", -       NO_STR -       "Disable link parameters on this interface\n") -{ -	int ret; - -	vty_out(vty, "This command is deprecated. To disable link parameters use \"no link-params\" in the interface node.\n"); - -	nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL); - -	ret = nb_cli_apply_changes(vty, NULL); -	if (ret == CMD_SUCCESS) -		cmd_exit(vty); - -	return ret; -} - -/* STANDARD TE metrics */ -DEFPY_YANG (link_params_metric, -       link_params_metric_cmd, -       "[no] metric ![(0-4294967295)]$metric", -       NO_STR -       "Link metric for MPLS-TE purpose\n" -       "Metric value in decimal\n") -{ -	if (!no) -		nb_cli_enqueue_change(vty, "./metric", NB_OP_MODIFY, metric_str); -	else -		nb_cli_enqueue_change(vty, "./metric", NB_OP_DESTROY, NULL); - -	return nb_cli_apply_changes(vty, NULL); -} - -void lib_interface_zebra_link_params_metric_cli_write( -	struct vty *vty, const struct lyd_node *dnode, bool show_defaults) -{ -	uint32_t metric = yang_dnode_get_uint32(dnode, NULL); - -	vty_out(vty, "  metric %u\n", metric); -} - -DEFPY_YANG (link_params_maxbw, -       link_params_maxbw_cmd, -       "max-bw BANDWIDTH", -       "Maximum bandwidth that can be used\n" -       "Bytes/second (IEEE floating point format)\n") -{ -	char value[YANG_VALUE_MAXLEN]; -	float bw; - -	if (sscanf(bandwidth, "%g", &bw) != 1) { -		vty_out(vty, "Invalid bandwidth value\n"); -		return CMD_WARNING_CONFIG_FAILED; -	} - -	snprintf(value, sizeof(value), "%a", bw); - -	nb_cli_enqueue_change(vty, "./max-bandwidth", NB_OP_MODIFY, value); - -	return nb_cli_apply_changes(vty, NULL); -} - -void lib_interface_zebra_link_params_max_bandwidth_cli_write( -	struct vty *vty, const struct lyd_node *dnode, bool show_defaults) -{ -	float max_bandwidth = yang_dnode_get_bandwidth_ieee_float32(dnode, NULL); - -	vty_out(vty, "  max-bw %g\n", max_bandwidth); -} - -DEFPY_YANG (link_params_max_rsv_bw, -       link_params_max_rsv_bw_cmd, -       "max-rsv-bw BANDWIDTH", -       "Maximum bandwidth that may be reserved\n" -       "Bytes/second (IEEE floating point format)\n") -{ -	char value[YANG_VALUE_MAXLEN]; -	float bw; - -	if (sscanf(bandwidth, "%g", &bw) != 1) { -		vty_out(vty, "Invalid bandwidth value\n"); -		return CMD_WARNING_CONFIG_FAILED; -	} - -	snprintf(value, sizeof(value), "%a", bw); - -	nb_cli_enqueue_change(vty, "./max-reservable-bandwidth", NB_OP_MODIFY, -			      value); - -	return nb_cli_apply_changes(vty, NULL); -} - -void lib_interface_zebra_link_params_max_reservable_bandwidth_cli_write( -	struct vty *vty, const struct lyd_node *dnode, bool show_defaults) -{ -	float max_reservable_bandwidth = -		yang_dnode_get_bandwidth_ieee_float32(dnode, NULL); - -	vty_out(vty, "  max-rsv-bw %g\n", max_reservable_bandwidth); -} - -DEFPY_YANG (link_params_unrsv_bw, -       link_params_unrsv_bw_cmd, -       "unrsv-bw (0-7)$priority BANDWIDTH", -       "Unreserved bandwidth at each priority level\n" -       "Priority\n" -       "Bytes/second (IEEE floating point format)\n") -{ -	char xpath[XPATH_MAXLEN]; -	char value[YANG_VALUE_MAXLEN]; -	float bw; - -	if (sscanf(bandwidth, "%g", &bw) != 1) { -		vty_out(vty, "Invalid bandwidth value\n"); -		return CMD_WARNING_CONFIG_FAILED; -	} - -	snprintf(xpath, sizeof(xpath), -		 "./unreserved-bandwidths/unreserved-bandwidth[priority='%s']/unreserved-bandwidth", -		 priority_str); -	snprintf(value, sizeof(value), "%a", bw); - -	nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY, value); - -	return nb_cli_apply_changes(vty, NULL); -} - -void lib_interface_zebra_link_params_unreserved_bandwidths_unreserved_bandwidth_cli_write( -	struct vty *vty, const struct lyd_node *dnode, bool show_defaults) -{ -	uint8_t priority = yang_dnode_get_uint8(dnode, "priority"); -	float unreserved_bandwidth = -		yang_dnode_get_bandwidth_ieee_float32(dnode, -						      "unreserved-bandwidth"); - -	vty_out(vty, "  unrsv-bw %u %g\n", priority, unreserved_bandwidth); -} - -DEFPY_YANG(link_params_admin_grp, link_params_admin_grp_cmd, -	   "admin-grp BITPATTERN", -	   "Administrative group membership\n" -	   "32-bit Hexadecimal value (e.g. 0xa1)\n") -{ -	int idx_bitpattern = 1; -	unsigned long value; -	char value_str[11]; - -	if (sscanf(argv[idx_bitpattern]->arg, "0x%lx", &value) != 1) { -		vty_out(vty, "link_params_admin_grp: fscanf: %s\n", -			safe_strerror(errno)); -		return CMD_WARNING_CONFIG_FAILED; -	} - -	if (value > 0xFFFFFFFF) { -		vty_out(vty, "value must be not be superior to 0xFFFFFFFF\n"); -		return CMD_WARNING_CONFIG_FAILED; -	} - -	snprintf(value_str, sizeof(value_str), "%ld", value); - -	nb_cli_enqueue_change( -		vty, "./legacy-admin-group", -		NB_OP_MODIFY, value_str); - -	return nb_cli_apply_changes(vty, NULL); -} - -DEFPY_YANG(no_link_params_admin_grp, no_link_params_admin_grp_cmd, -	   "no admin-grp", -	   NO_STR "Disable Administrative group membership on this interface\n") -{ -	nb_cli_enqueue_change( -		vty, "./legacy-admin-group", -		NB_OP_DESTROY, NULL); - -	return nb_cli_apply_changes(vty, NULL); -} - -/* RFC5392 & RFC5316: INTER-AS */ -DEFPY_YANG (link_params_inter_as, -       link_params_inter_as_cmd, -       "[no] neighbor ![A.B.C.D$ip as (1-4294967295)$as]", -       NO_STR -       "Configure remote ASBR information (Neighbor IP address and AS number)\n" -       "Remote IP address in dot decimal A.B.C.D\n" -       "Remote AS number\n" -       "AS number in the range <1-4294967295>\n") -{ -	if (!no) { -		nb_cli_enqueue_change(vty, "./neighbor", NB_OP_CREATE, NULL); -		nb_cli_enqueue_change(vty, "./neighbor/remote-as", NB_OP_MODIFY, -				      as_str); -		nb_cli_enqueue_change(vty, "./neighbor/ipv4-remote-id", -				      NB_OP_MODIFY, ip_str); -	} else { -		nb_cli_enqueue_change(vty, "./neighbor", NB_OP_DESTROY, NULL); -	} - -	return nb_cli_apply_changes(vty, NULL); -} - -void lib_interface_zebra_link_params_neighbor_cli_write( -	struct vty *vty, const struct lyd_node *dnode, bool show_defaults) -{ -	uint32_t remote_as = yang_dnode_get_uint32(dnode, "remote-as"); -	const char *ipv4_remote_id = yang_dnode_get_string(dnode, -							   "ipv4-remote-id"); - -	vty_out(vty, "  neighbor %s as %u\n", ipv4_remote_id, remote_as); -} - -/* RFC7471: OSPF Traffic Engineering (TE) Metric extensions & - * draft-ietf-isis-metric-extensions-07.txt */ -DEFPY_YANG (link_params_delay, -       link_params_delay_cmd, -       "[no] delay ![(0-16777215)$delay [min (0-16777215)$min max (0-16777215)$max]]", -       NO_STR -       "Unidirectional Average Link Delay\n" -       "Average delay in micro-second as decimal (0...16777215)\n" -       "Minimum delay\n" -       "Minimum delay in micro-second as decimal (0...16777215)\n" -       "Maximum delay\n" -       "Maximum delay in micro-second as decimal (0...16777215)\n") -{ -	if (!no) { -		nb_cli_enqueue_change(vty, "./delay", NB_OP_MODIFY, delay_str); -		if (min_str && max_str) { -			nb_cli_enqueue_change(vty, "./min-max-delay", -					      NB_OP_CREATE, NULL); -			nb_cli_enqueue_change(vty, "./min-max-delay/delay-min", -					      NB_OP_MODIFY, min_str); -			nb_cli_enqueue_change(vty, "./min-max-delay/delay-max", -					      NB_OP_MODIFY, max_str); -		} else { -			nb_cli_enqueue_change(vty, "./min-max-delay", -					      NB_OP_DESTROY, NULL); -		} -	} else { -		nb_cli_enqueue_change(vty, "./delay", NB_OP_DESTROY, NULL); -		nb_cli_enqueue_change(vty, "./min-max-delay", NB_OP_DESTROY, -				      NULL); -	} - -	return nb_cli_apply_changes(vty, NULL); -} - -void lib_interface_zebra_link_params_delay_cli_write( -	struct vty *vty, const struct lyd_node *dnode, bool show_defaults) -{ -	uint32_t delay = yang_dnode_get_uint32(dnode, NULL); - -	vty_out(vty, "  delay %u", delay); - -	if (yang_dnode_exists(dnode, "../min-max-delay")) { -		uint32_t delay_min = -			yang_dnode_get_uint32(dnode, -					      "../min-max-delay/delay-min"); -		uint32_t delay_max = -			yang_dnode_get_uint32(dnode, -					      "../min-max-delay/delay-max"); - -		vty_out(vty, " min %u max %u", delay_min, delay_max); -	} - -	vty_out(vty, "\n"); -} - -DEFPY_YANG (link_params_delay_var, -       link_params_delay_var_cmd, -       "[no] delay-variation ![(0-16777215)$delay_var]", -       NO_STR -       "Unidirectional Link Delay Variation\n" -       "delay variation in micro-second as decimal (0...16777215)\n") -{ -	if (!no) -		nb_cli_enqueue_change(vty, "./delay-variation", NB_OP_MODIFY, -				      delay_var_str); -	else -		nb_cli_enqueue_change(vty, "./delay-variation", NB_OP_DESTROY, -				      NULL); - -	return nb_cli_apply_changes(vty, NULL); -} - -void lib_interface_zebra_link_params_delay_variation_cli_write( -	struct vty *vty, const struct lyd_node *dnode, bool show_defaults) -{ -	uint32_t delay_variation = yang_dnode_get_uint32(dnode, NULL); - -	vty_out(vty, "  delay-variation %u\n", delay_variation); -} - -DEFPY_YANG( -	link_params_pkt_loss, link_params_pkt_loss_cmd, -	"[no] packet-loss ![PERCENTAGE]", -	NO_STR -	"Unidirectional Link Packet Loss\n" -	"percentage of total traffic by 0.000003% step and less than 50.331642%\n") -{ -	if (!no) -		nb_cli_enqueue_change(vty, "./packet-loss", NB_OP_MODIFY, -				      percentage); -	else -		nb_cli_enqueue_change(vty, "./packet-loss", NB_OP_DESTROY, NULL); - -	return nb_cli_apply_changes(vty, NULL); -} - -void lib_interface_zebra_link_params_packet_loss_cli_write( -	struct vty *vty, const struct lyd_node *dnode, bool show_defaults) -{ -	double packet_loss = yang_dnode_get_dec64(dnode, NULL); - -	vty_out(vty, "  packet-loss %lf\n", packet_loss); -} - -DEFPY_YANG (link_params_res_bw, -       link_params_res_bw_cmd, -       "[no] res-bw ![BANDWIDTH]", -       NO_STR -       "Unidirectional Residual Bandwidth\n" -       "Bytes/second (IEEE floating point format)\n") -{ -	char value[YANG_VALUE_MAXLEN]; -	float bw; - -	if (!no) { -		if (sscanf(bandwidth, "%g", &bw) != 1) { -			vty_out(vty, "Invalid bandwidth value\n"); -			return CMD_WARNING_CONFIG_FAILED; -		} - -		snprintf(value, sizeof(value), "%a", bw); - -		nb_cli_enqueue_change(vty, "./residual-bandwidth", NB_OP_MODIFY, -				      value); -	} else { -		nb_cli_enqueue_change(vty, "./residual-bandwidth", -				      NB_OP_DESTROY, NULL); -	} - -	return nb_cli_apply_changes(vty, NULL); -} - -void lib_interface_zebra_link_params_residual_bandwidth_cli_write( -	struct vty *vty, const struct lyd_node *dnode, bool show_defaults) -{ -	float residual_bandwidth = yang_dnode_get_bandwidth_ieee_float32(dnode, -									 NULL); - -	vty_out(vty, "  res-bw %g\n", residual_bandwidth); -} - -DEFPY_YANG (link_params_ava_bw, -       link_params_ava_bw_cmd, -       "[no] ava-bw ![BANDWIDTH]", -       NO_STR -       "Unidirectional Available Bandwidth\n" -       "Bytes/second (IEEE floating point format)\n") -{ -	char value[YANG_VALUE_MAXLEN]; -	float bw; - -	if (!no) { -		if (sscanf(bandwidth, "%g", &bw) != 1) { -			vty_out(vty, "Invalid bandwidth value\n"); -			return CMD_WARNING_CONFIG_FAILED; -		} - -		snprintf(value, sizeof(value), "%a", bw); - -		nb_cli_enqueue_change(vty, "./available-bandwidth", -				      NB_OP_MODIFY, value); -	} else { -		nb_cli_enqueue_change(vty, "./available-bandwidth", -				      NB_OP_DESTROY, NULL); -	} - -	return nb_cli_apply_changes(vty, NULL); -} - -void lib_interface_zebra_link_params_available_bandwidth_cli_write( -	struct vty *vty, const struct lyd_node *dnode, bool show_defaults) -{ -	float available_bandwidth = yang_dnode_get_bandwidth_ieee_float32(dnode, -									  NULL); - -	vty_out(vty, "  ava-bw %g\n", available_bandwidth); -} - -DEFPY_YANG (link_params_use_bw, -       link_params_use_bw_cmd, -       "[no] use-bw ![BANDWIDTH]", -       NO_STR -       "Unidirectional Utilised Bandwidth\n" -       "Bytes/second (IEEE floating point format)\n") -{ -	char value[YANG_VALUE_MAXLEN]; -	float bw; - -	if (!no) { -		if (sscanf(bandwidth, "%g", &bw) != 1) { -			vty_out(vty, "Invalid bandwidth value\n"); -			return CMD_WARNING_CONFIG_FAILED; -		} - -		snprintf(value, sizeof(value), "%a", bw); - -		nb_cli_enqueue_change(vty, "./utilized-bandwidth", NB_OP_MODIFY, -				      value); -	} else { -		nb_cli_enqueue_change(vty, "./utilized-bandwidth", -				      NB_OP_DESTROY, NULL); -	} - -	return nb_cli_apply_changes(vty, NULL); -} - -void lib_interface_zebra_link_params_utilized_bandwidth_cli_write( -	struct vty *vty, const struct lyd_node *dnode, bool show_defaults) -{ -	float utilized_bandwidth = yang_dnode_get_bandwidth_ieee_float32(dnode, -									 NULL); - -	vty_out(vty, "  use-bw %g\n", utilized_bandwidth); -} - -static int ag_change(struct vty *vty, int argc, struct cmd_token **argv, -		     const char *xpath_base, bool no, int start_idx) -{ -	char xpath[XPATH_MAXLEN]; - -	for (int i = start_idx; i < argc; i++) { -		snprintf(xpath, XPATH_MAXLEN, "%s[.='%s']", xpath_base, -			 argv[i]->arg); -		nb_cli_enqueue_change(vty, xpath, -				      no ? NB_OP_DESTROY : NB_OP_CREATE, NULL); -	} -	return nb_cli_apply_changes(vty, NULL); -} - -/* - * XPath: - * /frr-interface:lib/interface/frr-zebra:zebra/link-params/affinities/affinity - */ -DEFPY_YANG(link_params_affinity, link_params_affinity_cmd, -	   "[no] affinity NAME...", -	   NO_STR -	   "Interface affinities\n" -	   "Affinity names\n") -{ -	return ag_change(vty, argc, argv, -			 "./affinities/affinity", -			 no, no ? 2 : 1); -} - - -/* - * XPath: - * /frr-interface:lib/interface/frr-zebra:zebra/link-params/affinities/affinity-mode - */ -DEFPY_YANG(link_params_affinity_mode, link_params_affinity_mode_cmd, -	   "affinity-mode <standard|extended|both>$affmode", -	   "Interface affinity mode\n" -	   "Standard Admin-Group only RFC3630,5305,5329\n" -	   "Extended Admin-Group only RFC7308 (default)\n" -	   "Standard and extended Admin-Group format\n") -{ -	const char *xpath = "./affinity-mode"; - -	nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY, affmode); - -	return nb_cli_apply_changes(vty, NULL); -} - -DEFPY_YANG(no_link_params_affinity_mode, no_link_params_affinity_mode_cmd, -	   "no affinity-mode [<standard|extended|both>]", -	   NO_STR -	   "Interface affinity mode\n" -	   "Standard Admin-Group only RFC3630,5305,5329\n" -	   "Extended Admin-Group only RFC7308 (default)\n" -	   "Standard and extended Admin-Group format\n") -{ -	const char *xpath = "./affinity-mode"; - -	nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY, "extended"); - -	return nb_cli_apply_changes(vty, NULL); -} - -static int ag_iter_cb(const struct lyd_node *dnode, void *arg) -{ -	struct vty *vty = (struct vty *)arg; - -	vty_out(vty, " %s", yang_dnode_get_string(dnode, ".")); -	return YANG_ITER_CONTINUE; -} - -void cli_show_legacy_admin_group(struct vty *vty, const struct lyd_node *dnode, -				 bool show_defaults) -{ -	vty_out(vty, "  admin-grp 0x%x\n", -		yang_dnode_get_uint32(dnode, NULL)); -} - -void cli_show_affinity_mode(struct vty *vty, const struct lyd_node *dnode, -			    bool show_defaults) -{ -	enum affinity_mode affinity_mode = yang_dnode_get_enum(dnode, "."); - -	if (affinity_mode == AFFINITY_MODE_STANDARD) -		vty_out(vty, "  affinity-mode standard\n"); -	else if (affinity_mode == AFFINITY_MODE_BOTH) -		vty_out(vty, "  affinity-mode both\n"); -	else if (affinity_mode == AFFINITY_MODE_EXTENDED && show_defaults) -		vty_out(vty, "  affinity-mode extended\n"); -} - -void cli_show_affinity(struct vty *vty, const struct lyd_node *dnode, -		       bool show_defaults) -{ -	if (!yang_dnode_exists(dnode, "affinity")) -		return; - -	vty_out(vty, "  affinity"); -	yang_dnode_iterate(ag_iter_cb, vty, dnode, "affinity"); -	vty_out(vty, "\n"); -} -  void if_ip_address_install(struct interface *ifp, struct prefix *prefix,  			   const char *label, struct prefix *pp)  { @@ -4668,144 +3908,6 @@ void if_ip_address_uninstall(struct interface *ifp, struct prefix *prefix,  	UNSET_FLAG(ifc->conf, ZEBRA_IFC_QUEUED);  } -#ifdef HAVE_NETLINK -DEFPY_YANG (ip_address, -       ip_address_cmd, -       "[no] ip address A.B.C.D/M [label LINE$label]", -       NO_STR -       "Interface Internet Protocol config commands\n" -       "Set the IP address of an interface\n" -       "IP address (e.g. 10.0.0.1/8)\n" -       "Label of this address\n" -       "Label\n") -#else -DEFPY_YANG (ip_address, -       ip_address_cmd, -       "[no] ip address A.B.C.D/M", -       NO_STR -       "Interface Internet Protocol config commands\n" -       "Set the IP address of an interface\n" -       "IP address (e.g. 10.0.0.1/8)\n") -#endif -{ -	char ip[INET_ADDRSTRLEN + 3]; -	char *mask; - -	if (no) { -		nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL); -	} else { -		nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL); -#ifdef HAVE_NETLINK -		if (label) -			nb_cli_enqueue_change(vty, "./label", NB_OP_MODIFY, -					      label); -		else -			nb_cli_enqueue_change(vty, "./label", NB_OP_DESTROY, -					      NULL); -#endif -	} - -	strlcpy(ip, address_str, sizeof(ip)); - -	mask = strchr(ip, '/'); -	*mask = 0; -	mask++; - -	return nb_cli_apply_changes(vty, -				    "./frr-zebra:zebra/ipv4-addrs[ip='%s'][prefix-length='%s']", -				    ip, mask); -} - -void lib_interface_zebra_ipv4_addrs_cli_write(struct vty *vty, -					      const struct lyd_node *dnode, -					      bool show_defaults) -{ -	const char *ip = yang_dnode_get_string(dnode, "ip"); -	uint8_t prefix_length = yang_dnode_get_uint8(dnode, "prefix-length"); - -	vty_out(vty, " ip address %s/%u", ip, prefix_length); - -	if (yang_dnode_exists(dnode, "label")) { -		const char *label = yang_dnode_get_string(dnode, "label"); -		vty_out(vty, " label %s", label); -	} - -	vty_out(vty, "\n"); -} - -#ifdef HAVE_NETLINK -DEFPY_YANG (ip_address_peer, -      ip_address_peer_cmd, -      "[no] ip address A.B.C.D peer A.B.C.D/M [label LINE$label]", -      NO_STR -      "Interface Internet Protocol config commands\n" -      "Set the IP address of an interface\n" -      "Local IP (e.g. 10.0.0.1) for P-t-P address\n" -      "Specify P-t-P address\n" -      "Peer IP address (e.g. 10.0.0.1/8)\n" -      "Label of this address\n" -      "Label\n") -#else -DEFPY_YANG (ip_address_peer, -      ip_address_peer_cmd, -      "[no] ip address A.B.C.D peer A.B.C.D/M", -      NO_STR -      "Interface Internet Protocol config commands\n" -      "Set the IP address of an interface\n" -      "Local IP (e.g. 10.0.0.1) for P-t-P address\n" -      "Specify P-t-P address\n" -      "Peer IP address (e.g. 10.0.0.1/8)\n") -#endif -{ -	char peer_ip[INET_ADDRSTRLEN + 3]; -	char *peer_mask; - -	if (no) { -		nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL); -	} else { -		nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL); -#ifdef HAVE_NETLINK -		if (label) -			nb_cli_enqueue_change(vty, "./label", NB_OP_MODIFY, -					      label); -		else -			nb_cli_enqueue_change(vty, "./label", NB_OP_DESTROY, -					      NULL); -#endif -	} - -	strlcpy(peer_ip, peer_str, sizeof(peer_ip)); - -	peer_mask = strchr(peer_ip, '/'); -	*peer_mask = 0; -	peer_mask++; - -	return nb_cli_apply_changes( -		vty, -		"./frr-zebra:zebra/ipv4-p2p-addrs[ip='%s'][peer-ip='%s'][peer-prefix-length='%s']", -		address_str, peer_ip, peer_mask); -} - -void lib_interface_zebra_ipv4_p2p_addrs_cli_write(struct vty *vty, -						  const struct lyd_node *dnode, -						  bool show_defaults) -{ -	const char *ip = yang_dnode_get_string(dnode, "ip"); -	const char *peer_ip = yang_dnode_get_string(dnode, "peer-ip"); -	uint8_t peer_prefix_length = yang_dnode_get_uint8(dnode, -							  "peer-prefix-length"); - -	vty_out(vty, " ip address %s peer %s/%u", ip, peer_ip, -		peer_prefix_length); - -	if (yang_dnode_exists(dnode, "label")) { -		const char *label = yang_dnode_get_string(dnode, "label"); -		vty_out(vty, " label %s", label); -	} - -	vty_out(vty, "\n"); -} -  void if_ipv6_address_install(struct interface *ifp, struct prefix *prefix)  {  	struct zebra_if *if_data; @@ -4872,43 +3974,6 @@ void if_ipv6_address_uninstall(struct interface *ifp, struct prefix *prefix)  	UNSET_FLAG(ifc->conf, ZEBRA_IFC_QUEUED);  } -DEFPY_YANG (ipv6_address, -       ipv6_address_cmd, -       "[no] ipv6 address X:X::X:X/M", -       NO_STR -       "Interface IPv6 config commands\n" -       "Set the IP address of an interface\n" -       "IPv6 address (e.g. 3ffe:506::1/48)\n") -{ -	char ip[INET6_ADDRSTRLEN + 4]; -	char *mask; - -	if (no) -		nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL); -	else -		nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL); - -	strlcpy(ip, address_str, sizeof(ip)); - -	mask = strchr(ip, '/'); -	*mask = 0; -	mask++; - -	return nb_cli_apply_changes(vty, -				    "./frr-zebra:zebra/ipv6-addrs[ip='%s'][prefix-length='%s']", -				    ip, mask); -} - -void lib_interface_zebra_ipv6_addrs_cli_write(struct vty *vty, -					      const struct lyd_node *dnode, -					      bool show_defaults) -{ -	const char *ip = yang_dnode_get_string(dnode, "ip"); -	uint8_t prefix_length = yang_dnode_get_uint8(dnode, "prefix-length"); - -	vty_out(vty, " ipv6 address %s/%u\n", ip, prefix_length); -} -  /* Allocate and initialize interface vector. */  void zebra_if_init(void)  { @@ -4916,10 +3981,6 @@ void zebra_if_init(void)  	hook_register_prio(if_add, 0, if_zebra_new_hook);  	hook_register_prio(if_del, 0, if_zebra_delete_hook); -	/* Install configuration write function. */ -	if_cmd_init_default(); -	install_node(&link_params_node); -  	install_element(VIEW_NODE, &show_interface_cmd);  	install_element(VIEW_NODE, &show_interface_vrf_all_cmd);  	install_element(VIEW_NODE, &show_interface_name_vrf_cmd); @@ -4927,39 +3988,4 @@ void zebra_if_init(void)  	install_element(ENABLE_NODE, &show_interface_desc_cmd);  	install_element(ENABLE_NODE, &show_interface_desc_vrf_all_cmd); -	install_element(INTERFACE_NODE, &multicast_new_cmd); -	install_element(INTERFACE_NODE, &multicast_cmd); -	install_element(INTERFACE_NODE, &no_multicast_cmd); -	install_element(INTERFACE_NODE, &mpls_cmd); -	install_element(INTERFACE_NODE, &linkdetect_cmd); -	install_element(INTERFACE_NODE, &shutdown_if_cmd); -	install_element(INTERFACE_NODE, &bandwidth_if_cmd); -	install_element(INTERFACE_NODE, &ip_address_cmd); -	install_element(INTERFACE_NODE, &ip_address_peer_cmd); -	install_element(INTERFACE_NODE, &ipv6_address_cmd); -	install_element(INTERFACE_NODE, &link_params_cmd); -	install_element(INTERFACE_NODE, &no_link_params_cmd); -	install_default(LINK_PARAMS_NODE); -	install_element(LINK_PARAMS_NODE, &link_params_enable_cmd); -	install_element(LINK_PARAMS_NODE, &no_link_params_enable_cmd); -	install_element(LINK_PARAMS_NODE, &link_params_metric_cmd); -	install_element(LINK_PARAMS_NODE, &link_params_maxbw_cmd); -	install_element(LINK_PARAMS_NODE, &link_params_max_rsv_bw_cmd); -	install_element(LINK_PARAMS_NODE, &link_params_unrsv_bw_cmd); -	install_element(LINK_PARAMS_NODE, &link_params_admin_grp_cmd); -	install_element(LINK_PARAMS_NODE, &no_link_params_admin_grp_cmd); -	install_element(LINK_PARAMS_NODE, &link_params_inter_as_cmd); -	install_element(LINK_PARAMS_NODE, &link_params_delay_cmd); -	install_element(LINK_PARAMS_NODE, &link_params_delay_var_cmd); -	install_element(LINK_PARAMS_NODE, &link_params_pkt_loss_cmd); -	install_element(LINK_PARAMS_NODE, &link_params_ava_bw_cmd); -	install_element(LINK_PARAMS_NODE, &link_params_res_bw_cmd); -	install_element(LINK_PARAMS_NODE, &link_params_use_bw_cmd); -	install_element(LINK_PARAMS_NODE, &link_params_affinity_cmd); -	install_element(LINK_PARAMS_NODE, &link_params_affinity_mode_cmd); -	install_element(LINK_PARAMS_NODE, &no_link_params_affinity_mode_cmd); -	install_element(LINK_PARAMS_NODE, &exit_link_params_cmd); - -	/* setup EVPN MH elements */ -	zebra_evpn_interface_init();  }  | 
