Renamed frr-igmp.yang to frr-gmp.yang, igmp to gmp container.
to support IGMP and MLD protocol.
frr-gmp.yang, created a list of address family under mgmd
container. For PIMV4 the key is IPV4, where as for PIMV6
the key is IPV6. This is done for PIMV6 development.
This commit will have all the northbound changes to support
IPV4 address family.
Signed-off-by: sarita patra <saritap@vmware.com>
IP_STR
IFACE_IGMP_STR)
{
- nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY, "true");
+ nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY, "true");
- return nb_cli_apply_changes(vty, "./frr-igmp:igmp");
+ return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
+ "frr-routing:ipv4");
}
DEFUN (interface_no_ip_igmp,
NULL);
nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL);
} else
- nb_cli_enqueue_change(vty, "./igmp-enable",
+ nb_cli_enqueue_change(vty, "./enable",
NB_OP_MODIFY, "false");
}
- return nb_cli_apply_changes(vty, "./frr-igmp:igmp");
+ return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
+ "frr-routing:ipv4");
}
DEFUN (interface_ip_igmp_join,
} else
source_str = "0.0.0.0";
- snprintf(xpath, sizeof(xpath), FRR_IGMP_JOIN_XPATH,
+ snprintf(xpath, sizeof(xpath), FRR_GMP_JOIN_XPATH,
"frr-routing:ipv4", argv[idx_group]->arg, source_str);
nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
} else
source_str = "0.0.0.0";
- snprintf(xpath, sizeof(xpath), FRR_IGMP_JOIN_XPATH,
+ snprintf(xpath, sizeof(xpath), FRR_GMP_JOIN_XPATH,
"frr-routing:ipv4", argv[idx_group]->arg, source_str);
nb_cli_enqueue_change(vty, xpath, NB_OP_DESTROY, NULL);
"true");
} else {
if (!yang_dnode_get_bool(pim_enable_dnode, "."))
- nb_cli_enqueue_change(vty, "./igmp-enable",
+ nb_cli_enqueue_change(vty, "./enable",
NB_OP_MODIFY, "true");
}
nb_cli_enqueue_change(vty, "./query-interval", NB_OP_MODIFY,
argv[3]->arg);
- return nb_cli_apply_changes(vty, "./frr-igmp:igmp");
+ return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
+ "frr-routing:ipv4");
}
DEFUN (interface_no_ip_igmp_query_interval,
{
nb_cli_enqueue_change(vty, "./query-interval", NB_OP_DESTROY, NULL);
- return nb_cli_apply_changes(vty, "./frr-igmp:igmp");
+ return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
+ "frr-routing:ipv4");
}
DEFUN (interface_ip_igmp_version,
"IGMP version\n"
"IGMP version number\n")
{
- nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY,
+ nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY,
"true");
- nb_cli_enqueue_change(vty, "./version", NB_OP_MODIFY, argv[3]->arg);
+ nb_cli_enqueue_change(vty, "./igmp-version", NB_OP_MODIFY,
+ argv[3]->arg);
- return nb_cli_apply_changes(vty, "./frr-igmp:igmp");
+ return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
+ "frr-routing:ipv4");
}
DEFUN (interface_no_ip_igmp_version,
"IGMP version\n"
"IGMP version number\n")
{
- nb_cli_enqueue_change(vty, "./version", NB_OP_DESTROY, NULL);
+ nb_cli_enqueue_change(vty, "./igmp-version", NB_OP_DESTROY, NULL);
- return nb_cli_apply_changes(vty, "./frr-igmp:igmp");
+ return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
+ "frr-routing:ipv4");
}
DEFUN (interface_ip_igmp_query_max_response_time,
"frr-routing:ipv4");
if (!pim_enable_dnode) {
- nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY,
+ nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY,
"true");
} else {
if (!yang_dnode_get_bool(pim_enable_dnode, "."))
- nb_cli_enqueue_change(vty, "./igmp-enable",
+ nb_cli_enqueue_change(vty, "./enable",
NB_OP_MODIFY, "true");
}
nb_cli_enqueue_change(vty, "./query-max-response-time", NB_OP_MODIFY,
argv[3]->arg);
- return nb_cli_apply_changes(vty, "./frr-igmp:igmp");
+ return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
+ "frr-routing:ipv4");
}
DEFUN (interface_no_ip_igmp_query_max_response_time,
{
nb_cli_enqueue_change(vty, "./query-max-response-time", NB_OP_DESTROY,
NULL);
- return nb_cli_apply_changes(vty, "./frr-igmp:igmp");
+ return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
+ "frr-routing:ipv4");
}
DEFUN_HIDDEN (interface_ip_igmp_query_max_response_time_dsec,
FRR_PIM_ENABLE_XPATH, VTY_CURR_XPATH,
"frr-routing:ipv4");
if (!pim_enable_dnode) {
- nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY,
+ nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY,
"true");
} else {
if (!yang_dnode_get_bool(pim_enable_dnode, "."))
- nb_cli_enqueue_change(vty, "./igmp-enable",
+ nb_cli_enqueue_change(vty, "./enable",
NB_OP_MODIFY, "true");
}
nb_cli_enqueue_change(vty, "./query-max-response-time", NB_OP_MODIFY,
argv[3]->arg);
- return nb_cli_apply_changes(vty, "./frr-igmp:igmp");
+ return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
+ "frr-routing:ipv4");
}
DEFUN_HIDDEN (interface_no_ip_igmp_query_max_response_time_dsec,
nb_cli_enqueue_change(vty, "./query-max-response-time", NB_OP_DESTROY,
NULL);
- return nb_cli_apply_changes(vty, "./frr-igmp:igmp");
+ return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
+ "frr-routing:ipv4");
}
DEFUN (interface_ip_igmp_last_member_query_count,
FRR_PIM_ENABLE_XPATH, VTY_CURR_XPATH,
"frr-routing:ipv4");
if (!pim_enable_dnode) {
- nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY,
+ nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY,
"true");
} else {
if (!yang_dnode_get_bool(pim_enable_dnode, "."))
- nb_cli_enqueue_change(vty, "./igmp-enable",
+ nb_cli_enqueue_change(vty, "./enable",
NB_OP_MODIFY, "true");
}
nb_cli_enqueue_change(vty, "./robustness-variable", NB_OP_MODIFY,
argv[3]->arg);
- return nb_cli_apply_changes(vty, "./frr-igmp:igmp");
+ return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
+ "frr-routing:ipv4");
}
DEFUN (interface_no_ip_igmp_last_member_query_count,
nb_cli_enqueue_change(vty, "./robustness-variable", NB_OP_DESTROY,
NULL);
- return nb_cli_apply_changes(vty, "./frr-igmp:igmp");
+ return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
+ "frr-routing:ipv4");
}
DEFUN (interface_ip_igmp_last_member_query_interval,
FRR_PIM_ENABLE_XPATH, VTY_CURR_XPATH,
"frr-routing:ipv4");
if (!pim_enable_dnode) {
- nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY,
+ nb_cli_enqueue_change(vty, "./enable", NB_OP_MODIFY,
"true");
} else {
if (!yang_dnode_get_bool(pim_enable_dnode, "."))
- nb_cli_enqueue_change(vty, "./igmp-enable",
+ nb_cli_enqueue_change(vty, "./enable",
NB_OP_MODIFY, "true");
}
nb_cli_enqueue_change(vty, "./last-member-query-interval", NB_OP_MODIFY,
argv[3]->arg);
- return nb_cli_apply_changes(vty, "./frr-igmp:igmp");
+ return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
+ "frr-routing:ipv4");
}
DEFUN (interface_no_ip_igmp_last_member_query_interval,
nb_cli_enqueue_change(vty, "./last-member-query-interval",
NB_OP_DESTROY, NULL);
- return nb_cli_apply_changes(vty, "./frr-igmp:igmp");
+ return nb_cli_apply_changes(vty, FRR_GMP_INTERFACE_XPATH,
+ "frr-routing:ipv4");
}
DEFUN (interface_ip_pim_drprio,
char igmp_if_xpath[XPATH_MAXLEN + 20];
snprintf(igmp_if_xpath, sizeof(igmp_if_xpath),
- "%s/frr-igmp:igmp", VTY_CURR_XPATH);
+ "%s/frr-gmp:gmp/address-family[address-family='%s']",
+ VTY_CURR_XPATH, "frr-routing:ipv4");
igmp_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode,
- "%s/igmp-enable", igmp_if_xpath);
-
+ FRR_GMP_ENABLE_XPATH,
+ VTY_CURR_XPATH,
+ "frr-routing:ipv4");
if (!igmp_enable_dnode) {
nb_cli_enqueue_change(vty, igmp_if_xpath, NB_OP_DESTROY, NULL);
nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL);
char igmp_if_xpath[XPATH_MAXLEN + 20];
snprintf(igmp_if_xpath, sizeof(igmp_if_xpath),
- "%s/frr-igmp:igmp", VTY_CURR_XPATH);
- igmp_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode,
- "%s/igmp-enable", igmp_if_xpath);
+ "%s/frr-gmp:gmp/address-family[address-family='%s']",
+ VTY_CURR_XPATH, "frr-routing:ipv4");
+ 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, igmp_if_xpath, NB_OP_DESTROY, NULL);
char igmp_if_xpath[XPATH_MAXLEN + 20];
snprintf(igmp_if_xpath, sizeof(igmp_if_xpath),
- "%s/frr-igmp:igmp", VTY_CURR_XPATH);
- igmp_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode,
- "%s/igmp-enable", igmp_if_xpath);
+ "%s/frr-gmp:gmp/address-family[address-family='%s']",
+ VTY_CURR_XPATH, "frr-routing:ipv4");
+ 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, igmp_if_xpath, NB_OP_DESTROY, NULL);
igmp_enable_dnode =
yang_dnode_getf(vty->candidate_config->dnode,
- "%s/frr-igmp:igmp/igmp-enable", VTY_CURR_XPATH);
+ 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");
igmp_enable_dnode =
yang_dnode_getf(vty->candidate_config->dnode,
- "%s/frr-igmp:igmp/igmp-enable", VTY_CURR_XPATH);
+ 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");
igmp_enable_dnode =
yang_dnode_getf(vty->candidate_config->dnode,
- "%s/frr-igmp:igmp/igmp-enable", VTY_CURR_XPATH);
+ 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");
igmp_enable_dnode =
yang_dnode_getf(vty->candidate_config->dnode,
- "%s/frr-igmp:igmp/igmp-enable", VTY_CURR_XPATH);
+ 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");
igmp_enable_dnode =
yang_dnode_getf(vty->candidate_config->dnode,
- "%s/frr-igmp:igmp/igmp-enable", VTY_CURR_XPATH);
+ 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");
&frr_routing_info,
&frr_pim_info,
&frr_pim_rp_info,
- &frr_igmp_info,
+ &frr_gmp_info,
};
FRR_DAEMON_INFO(pimd, PIM, .vty_port = PIMD_VTY_PORT,
};
/* clang-format off */
-const struct frr_yang_module_info frr_igmp_info = {
- .name = "frr-igmp",
+const struct frr_yang_module_info frr_gmp_info = {
+ .name = "frr-gmp",
.nodes = {
{
- .xpath = "/frr-interface:lib/interface/frr-igmp:igmp",
+ .xpath = "/frr-interface:lib/interface/frr-gmp:gmp/address-family",
.cbs = {
- .create = lib_interface_igmp_create,
- .destroy = lib_interface_igmp_destroy,
+ .create = lib_interface_gmp_address_family_create,
+ .destroy = lib_interface_gmp_address_family_destroy,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-igmp:igmp/igmp-enable",
+ .xpath = "/frr-interface:lib/interface/frr-gmp:gmp/address-family/enable",
.cbs = {
- .modify = lib_interface_igmp_igmp_enable_modify,
+ .modify = lib_interface_gmp_address_family_enable_modify,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-igmp:igmp/version",
+ .xpath = "/frr-interface:lib/interface/frr-gmp:gmp/address-family/igmp-version",
.cbs = {
- .modify = lib_interface_igmp_version_modify,
- .destroy = lib_interface_igmp_version_destroy,
+ .modify = lib_interface_gmp_address_family_igmp_version_modify,
+ .destroy = lib_interface_gmp_address_family_igmp_version_destroy,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-igmp:igmp/query-interval",
+ .xpath = "/frr-interface:lib/interface/frr-gmp:gmp/address-family/mld-version",
.cbs = {
- .modify = lib_interface_igmp_query_interval_modify,
+ .modify = lib_interface_gmp_address_family_mld_version_modify,
+ .destroy = lib_interface_gmp_address_family_mld_version_destroy,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-igmp:igmp/query-max-response-time",
+ .xpath = "/frr-interface:lib/interface/frr-gmp:gmp/address-family/query-interval",
.cbs = {
- .modify = lib_interface_igmp_query_max_response_time_modify,
+ .modify = lib_interface_gmp_address_family_query_interval_modify,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-igmp:igmp/last-member-query-interval",
+ .xpath = "/frr-interface:lib/interface/frr-gmp:gmp/address-family/query-max-response-time",
.cbs = {
- .modify = lib_interface_igmp_last_member_query_interval_modify,
+ .modify = lib_interface_gmp_address_family_query_max_response_time_modify,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-igmp:igmp/robustness-variable",
+ .xpath = "/frr-interface:lib/interface/frr-gmp:gmp/address-family/last-member-query-interval",
.cbs = {
- .modify = lib_interface_igmp_robustness_variable_modify,
+ .modify = lib_interface_gmp_address_family_last_member_query_interval_modify,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-igmp:igmp/address-family",
+ .xpath = "/frr-interface:lib/interface/frr-gmp:gmp/address-family/robustness-variable",
.cbs = {
- .create = lib_interface_igmp_address_family_create,
- .destroy = lib_interface_igmp_address_family_destroy,
+ .modify = lib_interface_gmp_address_family_robustness_variable_modify,
}
},
{
- .xpath = "/frr-interface:lib/interface/frr-igmp:igmp/address-family/static-group",
+ .xpath = "/frr-interface:lib/interface/frr-gmp:gmp/address-family/static-group",
.cbs = {
- .create = lib_interface_igmp_address_family_static_group_create,
- .destroy = lib_interface_igmp_address_family_static_group_destroy,
+ .create = lib_interface_gmp_address_family_static_group_create,
+ .destroy = lib_interface_gmp_address_family_static_group_destroy,
}
},
{
},
}
};
+
extern const struct frr_yang_module_info frr_pim_info;
extern const struct frr_yang_module_info frr_pim_rp_info;
-extern const struct frr_yang_module_info frr_igmp_info;
+extern const struct frr_yang_module_info frr_gmp_info;
/* frr-pim prototypes*/
int routing_control_plane_protocols_control_plane_protocol_pim_address_family_ecmp_modify(
int routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_prefix_list_destroy(
struct nb_cb_destroy_args *args);
-/* frr-igmp prototypes*/
-int lib_interface_igmp_create(struct nb_cb_create_args *args);
-int lib_interface_igmp_destroy(struct nb_cb_destroy_args *args);
-int lib_interface_igmp_igmp_enable_modify(struct nb_cb_modify_args *args);
-int lib_interface_igmp_version_modify(struct nb_cb_modify_args *args);
-int lib_interface_igmp_version_destroy(struct nb_cb_destroy_args *args);
-int lib_interface_igmp_query_interval_modify(struct nb_cb_modify_args *args);
-int lib_interface_igmp_query_max_response_time_modify(
- struct nb_cb_modify_args *args);
-int lib_interface_igmp_last_member_query_interval_modify(
- struct nb_cb_modify_args *args);
-int lib_interface_igmp_robustness_variable_modify(
- struct nb_cb_modify_args *args);
-int lib_interface_igmp_address_family_create(struct nb_cb_create_args *args);
-int lib_interface_igmp_address_family_destroy(struct nb_cb_destroy_args *args);
-int lib_interface_igmp_address_family_static_group_create(
+/* frr-gmp prototypes*/
+int lib_interface_gmp_address_family_create(
struct nb_cb_create_args *args);
-int lib_interface_igmp_address_family_static_group_destroy(
+int lib_interface_gmp_address_family_destroy(
struct nb_cb_destroy_args *args);
+int lib_interface_gmp_address_family_enable_modify(
+ struct nb_cb_modify_args *args);
+int lib_interface_gmp_address_family_igmp_version_modify(
+ struct nb_cb_modify_args *args);
+int lib_interface_gmp_address_family_igmp_version_destroy(
+ struct nb_cb_destroy_args *args);
+int lib_interface_gmp_address_family_mld_version_modify(
+ struct nb_cb_modify_args *args);
+int lib_interface_gmp_address_family_mld_version_destroy(
+ struct nb_cb_destroy_args *args);
+int lib_interface_gmp_address_family_query_interval_modify(
+ struct nb_cb_modify_args *args);
+int lib_interface_gmp_address_family_query_max_response_time_modify(
+ struct nb_cb_modify_args *args);
+int lib_interface_gmp_address_family_last_member_query_interval_modify(
+ struct nb_cb_modify_args *args);
+int lib_interface_gmp_address_family_robustness_variable_modify(
+ struct nb_cb_modify_args *args);
+int lib_interface_gmp_address_family_static_group_create(
+ struct nb_cb_create_args *args);
+int lib_interface_gmp_address_family_static_group_destroy(
+ struct nb_cb_destroy_args *args);
/*
* Callback registered with routing_nb lib to validate only
"control-plane-protocol[type='%s'][name='%s'][vrf='%s']/" \
"frr-pim:pim/address-family[address-family='%s']/" \
"frr-pim-rp:rp/static-rp/rp-list[rp-address='%s']"
-#define FRR_IGMP_JOIN_XPATH \
- "./frr-igmp:igmp/address-family[address-family='%s']/" \
+#define FRR_GMP_INTERFACE_XPATH \
+ "./frr-gmp:gmp/address-family[address-family='%s']"
+#define FRR_GMP_ENABLE_XPATH \
+ "%s/frr-gmp:gmp/address-family[address-family='%s']/enable"
+#define FRR_GMP_JOIN_XPATH \
+ "./frr-gmp:gmp/address-family[address-family='%s']/" \
"static-group[group-addr='%s'][source-addr='%s']"
#define FRR_PIM_MSDP_XPATH FRR_PIM_VRF_XPATH "/msdp"
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);
+ igmp_enable_dnode = yang_dnode_getf(dnode,
+ "%s/frr-gmp:gmp/address-family[address-family='%s']/enable",
+ if_xpath, "frr-routing:ipv4");
if (((pim_enable_dnode) &&
(yang_dnode_get_bool(pim_enable_dnode, "."))) ||
}
/*
- * XPath: /frr-interface:lib/interface/frr-igmp:igmp
+ * XPath: /frr-interface:lib/interface/frr-gmp:gmp/address-family
*/
-int lib_interface_igmp_create(struct nb_cb_create_args *args)
+int lib_interface_gmp_address_family_create(struct nb_cb_create_args *args)
{
switch (args->event) {
case NB_EV_VALIDATE:
return NB_OK;
}
-int lib_interface_igmp_destroy(struct nb_cb_destroy_args *args)
+int lib_interface_gmp_address_family_destroy(struct nb_cb_destroy_args *args)
{
struct interface *ifp;
struct pim_interface *pim_ifp;
}
/*
- * XPath: /frr-interface:lib/interface/frr-igmp:igmp/igmp-enable
+ * XPath: /frr-interface:lib/interface/frr-gmp:gmp/address-family/enable
*/
-int lib_interface_igmp_igmp_enable_modify(struct nb_cb_modify_args *args)
+int lib_interface_gmp_address_family_enable_modify(
+ struct nb_cb_modify_args *args)
{
struct interface *ifp;
bool igmp_enable;
}
/*
- * XPath: /frr-interface:lib/interface/frr-igmp:igmp/version
+ * XPath: /frr-interface:lib/interface/frr-gmp:gmp/address-family/igmp-version
*/
-int lib_interface_igmp_version_modify(struct nb_cb_modify_args *args)
+int lib_interface_gmp_address_family_igmp_version_modify(
+ struct nb_cb_modify_args *args)
{
struct interface *ifp;
struct pim_interface *pim_ifp;
return NB_OK;
}
-int lib_interface_igmp_version_destroy(struct nb_cb_destroy_args *args)
+int lib_interface_gmp_address_family_igmp_version_destroy(
+ struct nb_cb_destroy_args *args)
{
struct interface *ifp;
struct pim_interface *pim_ifp;
}
/*
- * XPath: /frr-interface:lib/interface/frr-igmp:igmp/query-interval
+ * XPath: /frr-interface:lib/interface/frr-gmp:gmp/address-family/mld-version
+ */
+int lib_interface_gmp_address_family_mld_version_modify(
+ struct nb_cb_modify_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_gmp_address_family_mld_version_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-gmp:gmp/address-family/query-interval
*/
-int lib_interface_igmp_query_interval_modify(struct nb_cb_modify_args *args)
+int lib_interface_gmp_address_family_query_interval_modify(
+ struct nb_cb_modify_args *args)
{
struct interface *ifp;
int query_interval;
}
/*
- * XPath: /frr-interface:lib/interface/frr-igmp:igmp/query-max-response-time
+ * XPath: /frr-interface:lib/interface/frr-gmp:gmp/address-family/query-max-response-time
*/
-int lib_interface_igmp_query_max_response_time_modify(
+int lib_interface_gmp_address_family_query_max_response_time_modify(
struct nb_cb_modify_args *args)
{
struct interface *ifp;
}
/*
- * XPath: /frr-interface:lib/interface/frr-igmp:igmp/last-member-query-interval
+ * XPath: /frr-interface:lib/interface/frr-gmp:gmp/address-family/last-member-query-interval
*/
-int lib_interface_igmp_last_member_query_interval_modify(
+int lib_interface_gmp_address_family_last_member_query_interval_modify(
struct nb_cb_modify_args *args)
{
struct interface *ifp;
}
/*
- * XPath: /frr-interface:lib/interface/frr-igmp:igmp/robustness-variable
+ * XPath: /frr-interface:lib/interface/frr-gmp:gmp/address-family/robustness-variable
*/
-int lib_interface_igmp_robustness_variable_modify(
+int lib_interface_gmp_address_family_robustness_variable_modify(
struct nb_cb_modify_args *args)
{
struct interface *ifp;
}
/*
- * XPath: /frr-interface:lib/interface/frr-igmp:igmp/address-family
- */
-int lib_interface_igmp_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_igmp_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-igmp:igmp/address-family/static-group
+ * XPath: /frr-interface:lib/interface/frr-gmp:gmp/address-family/static-group
*/
-int lib_interface_igmp_address_family_static_group_create(
+int lib_interface_gmp_address_family_static_group_create(
struct nb_cb_create_args *args)
{
struct interface *ifp;
return NB_OK;
}
-int lib_interface_igmp_address_family_static_group_destroy(
+int lib_interface_gmp_address_family_static_group_destroy(
struct nb_cb_destroy_args *args)
{
struct interface *ifp;
nodist_pimd_pimd_SOURCES = \
yang/frr-pim.yang.c \
yang/frr-pim-rp.yang.c \
- yang/frr-igmp.yang.c \
+ yang/frr-gmp.yang.c \
# end
pimd_pim6d_SOURCES = \
--- /dev/null
+module frr-gmp {
+ yang-version "1.1";
+ namespace "http://frrouting.org/yang/gmp";
+
+ prefix frr-gmp;
+
+ import frr-routing {
+ prefix "frr-rt";
+ }
+
+ import ietf-routing-types {
+ prefix "rt-types";
+ }
+
+ import ietf-inet-types {
+ prefix "inet";
+ }
+
+ import frr-interface {
+ prefix frr-interface;
+ }
+
+ organization
+ "FRRouting";
+
+ contact
+ "FRR Users List: <mailto:frog@lists.frrouting.org>
+ FRR Development List: <mailto:dev@lists.frrouting.org>";
+
+ description
+ "This module defines a model for managing FRR pimd daemon.
+
+ Copyright 2020 FRRouting
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.";
+
+ revision 2021-11-22 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 2236: IGMP v2.
+ RFC 3376: IGMP v3.
+ RFC 2710: MLD.
+ RFC 3810: MLD v2.";
+ }
+
+ grouping interface-config-attributes {
+ description
+ "Configuration IGMP/MLD attributes applied to the interface level.";
+
+ leaf enable {
+ type boolean;
+ default "false";
+ description
+ "Enable IGMP/MLD flag on the interface.";
+ }
+
+ leaf igmp-version {
+ when "../frr-gmp:address-family = 'frr-rt:ipv4'" {
+ description
+ "Only applicable to IPv4 address family.";
+ }
+ type uint8 {
+ range "2..3";
+ }
+ description
+ "IGMP version.";
+ }
+
+ leaf mld-version {
+ when "../frr-gmp:address-family = 'frr-rt:ipv6'" {
+ description
+ "Only applicable to IPv6 address family.";
+ }
+ type uint8 {
+ range "1..2";
+ }
+ description
+ "MLD version.";
+ }
+
+ leaf query-interval {
+ type uint16 {
+ range "1..max";
+ }
+ units seconds;
+ must ". * 10 >= ../query-max-response-time";
+ default "125";
+ description
+ "The Query Interval is the interval between General Queries
+ sent by the Querier.";
+ }
+
+ leaf query-max-response-time {
+ type uint16 {
+ range "1..max";
+ }
+ units deciseconds;
+ must ". <= ../query-interval * 10";
+ default "100";
+ description
+ "Query maximum response time specifies the maximum time
+ allowed before sending a responding report.";
+ }
+
+ leaf last-member-query-interval {
+ type uint16 {
+ range "1..max";
+ }
+ units deciseconds;
+ default "10";
+ description
+ "Last Member Query Interval, which may be tuned to modify
+ the leave latency of the network.";
+ }
+
+ leaf robustness-variable {
+ type uint8 {
+ range "1..max";
+ }
+ default "2";
+ description
+ "Querier's Robustness Variable allows tuning for the
+ expected packet loss on a network.";
+ }
+
+ list static-group {
+ key "group-addr source-addr";
+ description
+ "A static multicast route, (*,G) or (S,G).
+ The version of IGMP must be 3 to support (S,G).";
+
+ leaf group-addr {
+ type rt-types:ip-multicast-group-address;
+ description
+ "Multicast group address.";
+ }
+ leaf source-addr {
+ type inet:ip-address;
+ description
+ "Multicast source address.";
+ }
+ }
+ } // interface-config-attributes
+
+ /*
+ * Per-interface configuration data
+ */
+ augment "/frr-interface:lib/frr-interface:interface" {
+ container gmp {
+ list address-family {
+ key "address-family";
+ description
+ "Each list entry for one address family.";
+ uses frr-rt:address-family;
+ uses interface-config-attributes;
+ } //address-family
+ }
+ }
+}
+++ /dev/null
-module frr-igmp {
- yang-version "1.1";
- namespace "http://frrouting.org/yang/igmp";
-
- prefix frr-igmp;
-
- import frr-routing {
- prefix "frr-rt";
- }
-
- import ietf-routing-types {
- prefix "rt-types";
- }
-
- import ietf-inet-types {
- prefix "inet";
- }
-
- import frr-interface {
- prefix frr-interface;
- }
-
- organization
- "FRRouting";
-
- contact
- "FRR Users List: <mailto:frog@lists.frrouting.org>
- FRR Development List: <mailto:dev@lists.frrouting.org>";
-
- description
- "This module defines a model for managing FRR pimd daemon.
-
- Copyright 2020 FRRouting
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.";
-
- revision 2019-11-06 {
- description
- "Initial revision.";
- reference
- "RFC 2236: IGMP v2.
- RFC 3376: IGMP v3.";
- }
-
- grouping interface-config-attributes {
- description
- "Configuration attributes applied to the interface level.";
-
- leaf igmp-enable {
- type boolean;
- default "false";
- description
- "Enable IGMP flag on the interface.";
- }
-
- leaf version {
- type uint8 {
- range "2..3";
- }
- description
- "IGMP version.";
- }
-
- leaf query-interval {
- type uint16 {
- range "1..max";
- }
- units seconds;
- must ". * 10 >= ../query-max-response-time";
- default "125";
- description
- "The Query Interval is the interval between General Queries
- sent by the Querier.";
- }
-
- leaf query-max-response-time {
- type uint16 {
- range "1..max";
- }
- units deciseconds;
- must ". <= ../query-interval * 10";
- default "100";
- description
- "Query maximum response time specifies the maximum time
- allowed before sending a responding report.";
- }
-
- leaf last-member-query-interval {
- type uint16 {
- range "1..max";
- }
- units deciseconds;
- default "10";
- description
- "Last Member Query Interval, which may be tuned to modify
- the leave latency of the network.";
- }
-
- leaf robustness-variable {
- type uint8 {
- range "1..max";
- }
- default "2";
- description
- "Querier's Robustness Variable allows tuning for the
- expected packet loss on a network.";
- }
- }
-
- grouping per-af-interface-config-attributes {
- description
- "Configuration attributes applied to the interface level per address family.";
-
- list static-group {
- key "group-addr source-addr";
- description
- "A static multicast route, (*,G) or (S,G).
- The version of IGMP must be 3 to support (S,G).";
-
- leaf group-addr {
- type rt-types:ip-multicast-group-address;
- description
- "Multicast group address.";
- }
- leaf source-addr {
- type inet:ip-address;
- description
- "Multicast source address.";
- }
- }
-
- } // per-af-interface-config-attributes
-
- /*
- * Per-interface configuration data
- */
- augment "/frr-interface:lib/frr-interface:interface" {
- container igmp {
- presence
- "Configure IGMP on an interface.";
- uses interface-config-attributes;
- list address-family {
- key "address-family";
- description
- "Each list entry for one address family.";
- uses frr-rt:address-family;
- uses per-af-interface-config-attributes;
-
- } //address-family
- }
- }
-}
endif
if PIMD
-dist_yangmodels_DATA += yang/frr-igmp.yang
+dist_yangmodels_DATA += yang/frr-gmp.yang
dist_yangmodels_DATA += yang/frr-pim.yang
dist_yangmodels_DATA += yang/frr-pim-rp.yang
endif