diff options
| author | Sarita Patra <saritap@vmware.com> | 2022-07-12 03:49:48 -0700 | 
|---|---|---|
| committer | Sarita Patra <saritap@vmware.com> | 2022-10-20 01:07:46 -0700 | 
| commit | dfeda85c4bd6d19ee711750e8b8de6c4f6e82762 (patch) | |
| tree | 31608b61bdef996efa71b19b4515d2f7ccda6c3d | |
| parent | 5e651c369947edbe7bc5bea07770c9a00f061abf (diff) | |
pim6d: Add [no] ipv6 pim unicast-bsm" command
Introduced common api pim_process_unicast_bsm_cmd,
pim_process_no_unicast_bsm_cmd which will process
both "[no] ip pim unicast-bsm" command and "[no] ipv6 pim
unicast-bsm" command.
Signed-off-by: Sarita Patra <saritap@vmware.com>
| -rw-r--r-- | pimd/pim6_cmd.c | 23 | ||||
| -rw-r--r-- | pimd/pim_cmd.c | 29 | ||||
| -rw-r--r-- | pimd/pim_cmd_common.c | 30 | ||||
| -rw-r--r-- | pimd/pim_cmd_common.h | 2 | 
4 files changed, 58 insertions, 26 deletions
diff --git a/pimd/pim6_cmd.c b/pimd/pim6_cmd.c index e7c20c1f37..a2a7e7c01e 100644 --- a/pimd/pim6_cmd.c +++ b/pimd/pim6_cmd.c @@ -497,6 +497,27 @@ DEFPY (no_ipv6_pim_bsm,  	return pim_process_no_bsm_cmd(vty);  } +DEFPY (ipv6_pim_ucast_bsm, +       ipv6_pim_ucast_bsm_cmd, +       "ipv6 pim unicast-bsm", +       IPV6_STR +       PIM_STR +       "Accept/Send unicast BSM on the interface\n") +{ +	return pim_process_unicast_bsm_cmd(vty); +} + +DEFPY (no_ipv6_pim_ucast_bsm, +       no_ipv6_pim_ucast_bsm_cmd, +       "no ipv6 pim unicast-bsm", +       NO_STR +       IPV6_STR +       PIM_STR +       "Accept/Send unicast BSM on the interface\n") +{ +	return pim_process_no_unicast_bsm_cmd(vty); +} +  DEFPY (ipv6_ssmpingd,        ipv6_ssmpingd_cmd,        "ipv6 ssmpingd [X:X::X:X]$source", @@ -1708,6 +1729,8 @@ void pim_cmd_init(void)  	/* Install BSM command */  	install_element(INTERFACE_NODE, &ipv6_pim_bsm_cmd);  	install_element(INTERFACE_NODE, &no_ipv6_pim_bsm_cmd); +	install_element(INTERFACE_NODE, &ipv6_pim_ucast_bsm_cmd); +	install_element(INTERFACE_NODE, &no_ipv6_pim_ucast_bsm_cmd);  	install_element(CONFIG_NODE, &ipv6_pim_rp_cmd);  	install_element(VRF_NODE, &ipv6_pim_rp_cmd);  	install_element(CONFIG_NODE, &no_ipv6_pim_rp_cmd); diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c index c5c098774c..c6f2e8dbde 100644 --- a/pimd/pim_cmd.c +++ b/pimd/pim_cmd.c @@ -5014,7 +5014,6 @@ DEFUN (ip_pim_bsm,  {  	return pim_process_bsm_cmd(vty);  } -  DEFUN (no_ip_pim_bsm,         no_ip_pim_bsm_cmd,         "no ip pim bsm", @@ -5033,26 +5032,7 @@ DEFUN (ip_pim_ucast_bsm,         PIM_STR         "Accept/Send unicast BSM on the interface\n")  { -	const struct lyd_node *igmp_enable_dnode; - -	igmp_enable_dnode = -		yang_dnode_getf(vty->candidate_config->dnode, -				FRR_GMP_ENABLE_XPATH, VTY_CURR_XPATH, -				"frr-routing:ipv4"); -	if (!igmp_enable_dnode) -		nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY, -				      "true"); -	else { -		if (!yang_dnode_get_bool(igmp_enable_dnode, ".")) -			nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY, -					      "true"); -	} - -	nb_cli_enqueue_change(vty, "./unicast-bsm", NB_OP_MODIFY, "true"); - -	return nb_cli_apply_changes(vty, -			FRR_PIM_INTERFACE_XPATH, "frr-routing:ipv4"); - +	return pim_process_unicast_bsm_cmd(vty);  }  DEFUN (no_ip_pim_ucast_bsm, @@ -5061,12 +5041,9 @@ DEFUN (no_ip_pim_ucast_bsm,         NO_STR         IP_STR         PIM_STR -       "Block send/receive unicast BSM on this interface\n") +       "Accept/Send unicast BSM on the interface\n")  { -	nb_cli_enqueue_change(vty, "./unicast-bsm", NB_OP_MODIFY, "false"); - -	return nb_cli_apply_changes(vty, -			FRR_PIM_INTERFACE_XPATH, "frr-routing:ipv4"); +	return pim_process_no_unicast_bsm_cmd(vty);  }  #if HAVE_BFDD > 0 diff --git a/pimd/pim_cmd_common.c b/pimd/pim_cmd_common.c index 6fa4d8eddb..4b17d0bafd 100644 --- a/pimd/pim_cmd_common.c +++ b/pimd/pim_cmd_common.c @@ -3446,6 +3446,36 @@ int pim_process_no_bsm_cmd(struct vty *vty)  				    FRR_PIM_AF_XPATH_VAL);  } +int pim_process_unicast_bsm_cmd(struct vty *vty) +{ +	const struct lyd_node *gm_enable_dnode; + +	gm_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode, +					  FRR_GMP_ENABLE_XPATH, VTY_CURR_XPATH, +					  FRR_PIM_AF_XPATH_VAL); +	if (!gm_enable_dnode) +		nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY, +				      "true"); +	else { +		if (!yang_dnode_get_bool(gm_enable_dnode, ".")) +			nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY, +					      "true"); +	} + +	nb_cli_enqueue_change(vty, "./unicast-bsm", NB_OP_MODIFY, "true"); + +	return nb_cli_apply_changes(vty, FRR_PIM_INTERFACE_XPATH, +				    FRR_PIM_AF_XPATH_VAL); +} + +int pim_process_no_unicast_bsm_cmd(struct vty *vty) +{ +	nb_cli_enqueue_change(vty, "./unicast-bsm", NB_OP_MODIFY, "false"); + +	return nb_cli_apply_changes(vty, FRR_PIM_INTERFACE_XPATH, +				    FRR_PIM_AF_XPATH_VAL); +} +  static void show_scan_oil_stats(struct pim_instance *pim, struct vty *vty,  				time_t now)  { diff --git a/pimd/pim_cmd_common.h b/pimd/pim_cmd_common.h index f2ce292f03..6a72664a55 100644 --- a/pimd/pim_cmd_common.h +++ b/pimd/pim_cmd_common.h @@ -64,6 +64,8 @@ int pim_process_no_ip_mroute_cmd(struct vty *vty, const char *interface,  				 const char *group_str, const char *src_str);  int pim_process_bsm_cmd(struct vty *vty);  int pim_process_no_bsm_cmd(struct vty *vty); +int pim_process_unicast_bsm_cmd(struct vty *vty); +int pim_process_no_unicast_bsm_cmd(struct vty *vty);  void json_object_pim_upstream_add(json_object *json, struct pim_upstream *up);  void pim_show_rpf(struct pim_instance *pim, struct vty *vty, json_object *json);  void pim_show_neighbors_secondary(struct pim_instance *pim, struct vty *vty);  | 
