diff options
Diffstat (limited to 'pimd/pim_nb_config.c')
| -rw-r--r-- | pimd/pim_nb_config.c | 177 | 
1 files changed, 97 insertions, 80 deletions
diff --git a/pimd/pim_nb_config.c b/pimd/pim_nb_config.c index 233f866e09..0970eb599a 100644 --- a/pimd/pim_nb_config.c +++ b/pimd/pim_nb_config.c @@ -318,7 +318,9 @@ static bool is_pim_interface(const struct lyd_node *dnode)  	yang_dnode_get_path(dnode, if_xpath, sizeof(if_xpath));  	pim_enable_dnode = -		yang_dnode_getf(dnode, "%s/frr-pim:pim/pim-enable", if_xpath); +		yang_dnode_getf(dnode, +				"%s/frr-pim:pim/address-family[address-family='%s']/pim-enable", +				if_xpath, "frr-routing:ipv4");  	igmp_enable_dnode = yang_dnode_getf(  		dnode, "%s/frr-igmp:igmp/igmp-enable", if_xpath); @@ -502,9 +504,38 @@ int routing_control_plane_protocols_name_validate(  }  /* - * XPath: /frr-pim:pim/packets + * XPath: /frr-pim:pim/address-family   */ -int pim_packets_modify(struct nb_cb_modify_args *args) +int pim_address_family_create(struct nb_cb_create_args *args) +{ +	switch (args->event) { +	case NB_EV_VALIDATE: +	case NB_EV_PREPARE: +	case NB_EV_ABORT: +	case NB_EV_APPLY: +		break; +	} + +	return NB_OK; +} + +int pim_address_family_destroy(struct nb_cb_destroy_args *args) +{ +	switch (args->event) { +	case NB_EV_VALIDATE: +	case NB_EV_PREPARE: +	case NB_EV_ABORT: +	case NB_EV_APPLY: +		break; +	} + +	return NB_OK; +} + +/* + * XPath: /frr-pim:pim/address-family/packets + */ +int pim_address_family_packets_modify(struct nb_cb_modify_args *args)  {  	switch (args->event) {  	case NB_EV_VALIDATE: @@ -521,9 +552,10 @@ int pim_packets_modify(struct nb_cb_modify_args *args)  }  /* - * XPath: /frr-pim:pim/join-prune-interval + * XPath: /frr-pim:pim/address-family/join-prune-interval   */ -int pim_join_prune_interval_modify(struct nb_cb_modify_args *args) +int pim_address_family_join_prune_interval_modify( +	struct nb_cb_modify_args *args)  {  	switch (args->event) {  	case NB_EV_VALIDATE: @@ -539,9 +571,10 @@ int pim_join_prune_interval_modify(struct nb_cb_modify_args *args)  }  /* - * XPath: /frr-pim:pim/register-suppress-time + * XPath: /frr-pim:pim/address-family/register-suppress-time   */ -int pim_register_suppress_time_modify(struct nb_cb_modify_args *args) +int pim_address_family_register_suppress_time_modify( +	struct nb_cb_modify_args *args)  {  	uint16_t value;  	switch (args->event) { @@ -577,9 +610,9 @@ int pim_register_suppress_time_modify(struct nb_cb_modify_args *args)  }  /* - * XPath: /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/ecmp + * XPath: /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/ecmp   */ -int routing_control_plane_protocols_control_plane_protocol_pim_ecmp_modify( +int routing_control_plane_protocols_control_plane_protocol_pim_address_family_ecmp_modify(  	struct nb_cb_modify_args *args)  {  	struct vrf *vrf; @@ -600,9 +633,9 @@ int routing_control_plane_protocols_control_plane_protocol_pim_ecmp_modify(  }  /* - * XPath: /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/ecmp-rebalance + * XPath: /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/ecmp-rebalance   */ -int routing_control_plane_protocols_control_plane_protocol_pim_ecmp_rebalance_modify( +int routing_control_plane_protocols_control_plane_protocol_pim_address_family_ecmp_rebalance_modify(  	struct nb_cb_modify_args *args)  {  	struct vrf *vrf; @@ -624,9 +657,9 @@ int routing_control_plane_protocols_control_plane_protocol_pim_ecmp_rebalance_mo  }  /* - * XPath: /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/keep-alive-timer + * XPath: /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/keep-alive-timer   */ -int routing_control_plane_protocols_control_plane_protocol_pim_keep_alive_timer_modify( +int routing_control_plane_protocols_control_plane_protocol_pim_address_family_keep_alive_timer_modify(  	struct nb_cb_modify_args *args)  {  	struct vrf *vrf; @@ -648,9 +681,9 @@ int routing_control_plane_protocols_control_plane_protocol_pim_keep_alive_timer_  }  /* - * XPath: /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/rp-keep-alive-timer + * XPath: /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/rp-keep-alive-timer   */ -int routing_control_plane_protocols_control_plane_protocol_pim_rp_keep_alive_timer_modify( +int routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_keep_alive_timer_modify(  	struct nb_cb_modify_args *args)  {  	struct vrf *vrf; @@ -697,7 +730,6 @@ int routing_control_plane_protocols_control_plane_protocol_pim_address_family_de  	case NB_EV_PREPARE:  	case NB_EV_ABORT:  	case NB_EV_APPLY: -		/* TODO: implement me. */  		break;  	} @@ -1468,9 +1500,9 @@ int routing_control_plane_protocols_control_plane_protocol_pim_address_family_re  }  /* - * XPath: /frr-interface:lib/interface/frr-pim:pim + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family   */ -int lib_interface_pim_create(struct nb_cb_create_args *args) +int lib_interface_pim_address_family_create(struct nb_cb_create_args *args)  {  	switch (args->event) {  	case NB_EV_VALIDATE: @@ -1483,7 +1515,7 @@ int lib_interface_pim_create(struct nb_cb_create_args *args)  	return NB_OK;  } -int lib_interface_pim_destroy(struct nb_cb_destroy_args *args) +int lib_interface_pim_address_family_destroy(struct nb_cb_destroy_args *args)  {  	struct interface *ifp;  	struct pim_interface *pim_ifp; @@ -1511,9 +1543,9 @@ int lib_interface_pim_destroy(struct nb_cb_destroy_args *args)  }  /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/pim-enable + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/pim-enable   */ -int lib_interface_pim_pim_enable_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_pim_enable_modify(struct nb_cb_modify_args *args)  {  	struct interface *ifp;  	struct pim_interface *pim_ifp; @@ -1565,9 +1597,10 @@ int lib_interface_pim_pim_enable_modify(struct nb_cb_modify_args *args)  }  /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/hello-interval + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/hello-interval   */ -int lib_interface_pim_hello_interval_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_hello_interval_modify( +	struct nb_cb_modify_args *args)  {  	struct interface *ifp;  	struct pim_interface *pim_ifp; @@ -1590,9 +1623,10 @@ int lib_interface_pim_hello_interval_modify(struct nb_cb_modify_args *args)  }  /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/hello-holdtime + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/hello-holdtime   */ -int lib_interface_pim_hello_holdtime_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_hello_holdtime_modify( +	struct nb_cb_modify_args *args)  {  	struct interface *ifp;  	struct pim_interface *pim_ifp; @@ -1614,7 +1648,8 @@ int lib_interface_pim_hello_holdtime_modify(struct nb_cb_modify_args *args)  } -int lib_interface_pim_hello_holdtime_destroy(struct nb_cb_destroy_args *args) +int lib_interface_pim_address_family_hello_holdtime_destroy( +	struct nb_cb_destroy_args *args)  {  	struct interface *ifp;  	struct pim_interface *pim_ifp; @@ -1634,9 +1669,9 @@ int lib_interface_pim_hello_holdtime_destroy(struct nb_cb_destroy_args *args)  	return NB_OK;  }  /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/bfd + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/bfd   */ -int lib_interface_pim_bfd_create(struct nb_cb_create_args *args) +int lib_interface_pim_address_family_bfd_create(struct nb_cb_create_args *args)  {  	struct interface *ifp;  	struct pim_interface *pim_ifp; @@ -1657,7 +1692,8 @@ int lib_interface_pim_bfd_create(struct nb_cb_create_args *args)  	return NB_OK;  } -int lib_interface_pim_bfd_destroy(struct nb_cb_destroy_args *args) +int lib_interface_pim_address_family_bfd_destroy( +	struct nb_cb_destroy_args *args)  {  	struct interface *ifp;  	struct pim_interface *pim_ifp; @@ -1687,9 +1723,10 @@ int lib_interface_pim_bfd_destroy(struct nb_cb_destroy_args *args)  }  /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/bfd + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/bfd   */ -void lib_interface_pim_bfd_apply_finish(struct nb_cb_apply_finish_args *args) +void lib_interface_pim_address_family_bfd_apply_finish( +	struct nb_cb_apply_finish_args *args)  {  	struct interface *ifp;  	struct pim_interface *pim_ifp; @@ -1713,9 +1750,10 @@ void lib_interface_pim_bfd_apply_finish(struct nb_cb_apply_finish_args *args)  }  /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/bfd/min-rx-interval + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/bfd/min-rx-interval   */ -int lib_interface_pim_bfd_min_rx_interval_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_bfd_min_rx_interval_modify( +	struct nb_cb_modify_args *args)  {  	switch (args->event) {  	case NB_EV_VALIDATE: @@ -1729,9 +1767,10 @@ int lib_interface_pim_bfd_min_rx_interval_modify(struct nb_cb_modify_args *args)  }  /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/bfd/min-tx-interval + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/bfd/min-tx-interval   */ -int lib_interface_pim_bfd_min_tx_interval_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_bfd_min_tx_interval_modify( +	struct nb_cb_modify_args *args)  {  	switch (args->event) {  	case NB_EV_VALIDATE: @@ -1745,9 +1784,10 @@ int lib_interface_pim_bfd_min_tx_interval_modify(struct nb_cb_modify_args *args)  }  /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/bfd/detect_mult + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/bfd/detect_mult   */ -int lib_interface_pim_bfd_detect_mult_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_bfd_detect_mult_modify( +	struct nb_cb_modify_args *args)  {  	switch (args->event) {  	case NB_EV_VALIDATE: @@ -1761,9 +1801,10 @@ int lib_interface_pim_bfd_detect_mult_modify(struct nb_cb_modify_args *args)  }  /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/bfd/profile + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/bfd/profile   */ -int lib_interface_pim_bfd_profile_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_bfd_profile_modify( +	struct nb_cb_modify_args *args)  {  	struct interface *ifp;  	struct pim_interface *pim_ifp; @@ -1786,7 +1827,8 @@ int lib_interface_pim_bfd_profile_modify(struct nb_cb_modify_args *args)  	return NB_OK;  } -int lib_interface_pim_bfd_profile_destroy(struct nb_cb_destroy_args *args) +int lib_interface_pim_address_family_bfd_profile_destroy( +	struct nb_cb_destroy_args *args)  {  	struct interface *ifp;  	struct pim_interface *pim_ifp; @@ -1808,9 +1850,9 @@ int lib_interface_pim_bfd_profile_destroy(struct nb_cb_destroy_args *args)  }  /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/bsm + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/bsm   */ -int lib_interface_pim_bsm_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_bsm_modify(struct nb_cb_modify_args *args)  {  	struct interface *ifp;  	struct pim_interface *pim_ifp; @@ -1832,9 +1874,10 @@ int lib_interface_pim_bsm_modify(struct nb_cb_modify_args *args)  }  /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/unicast-bsm + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/unicast-bsm   */ -int lib_interface_pim_unicast_bsm_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_unicast_bsm_modify( +	struct nb_cb_modify_args *args)  {  	struct interface *ifp;  	struct pim_interface *pim_ifp; @@ -1857,9 +1900,10 @@ int lib_interface_pim_unicast_bsm_modify(struct nb_cb_modify_args *args)  }  /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/active-active + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/active-active   */ -int lib_interface_pim_active_active_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_active_active_modify( +	struct nb_cb_modify_args *args)  {  	struct interface *ifp;  	struct pim_interface *pim_ifp; @@ -1894,9 +1938,10 @@ int lib_interface_pim_active_active_modify(struct nb_cb_modify_args *args)  }  /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/dr-priority + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/dr-priority   */ -int lib_interface_pim_dr_priority_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_dr_priority_modify( +	struct nb_cb_modify_args *args)  {  	struct interface *ifp;  	struct pim_interface *pim_ifp; @@ -1908,7 +1953,7 @@ int lib_interface_pim_dr_priority_modify(struct nb_cb_modify_args *args)  		if_dnode = yang_dnode_get_parent(args->dnode, "interface");  		if (!is_pim_interface(if_dnode)) {  			snprintf(args->errmsg, args->errmsg_len, -					"Pim not enabled on this interface"); +				 "Pim not enabled on this interface");  			return NB_ERR_VALIDATION;  		}  		break; @@ -1933,38 +1978,10 @@ int lib_interface_pim_dr_priority_modify(struct nb_cb_modify_args *args)  }  /* - * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family - */ -int lib_interface_pim_address_family_create(struct nb_cb_create_args *args) -{ -	switch (args->event) { -	case NB_EV_VALIDATE: -	case NB_EV_PREPARE: -	case NB_EV_ABORT: -	case NB_EV_APPLY: -		break; -	} - -	return NB_OK; -} - -int lib_interface_pim_address_family_destroy(struct nb_cb_destroy_args *args) -{ -	switch (args->event) { -	case NB_EV_VALIDATE: -	case NB_EV_PREPARE: -	case NB_EV_ABORT: -	case NB_EV_APPLY: -		break; -	} - -	return NB_OK; -} - -/*   * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/use-source   */ -int lib_interface_pim_address_family_use_source_modify(struct nb_cb_modify_args *args) +int lib_interface_pim_address_family_use_source_modify( +	struct nb_cb_modify_args *args)  {  	struct interface *ifp;  	struct ipaddr source_addr; @@ -2013,7 +2030,7 @@ int lib_interface_pim_address_family_use_source_destroy(  		if_dnode = yang_dnode_get_parent(args->dnode, "interface");  		if (!is_pim_interface(if_dnode)) {  			snprintf(args->errmsg, args->errmsg_len, -					"Pim not enabled on this interface"); +				 "Pim not enabled on this interface");  			return NB_ERR_VALIDATION;  		}  		break;  | 
