pend = bsm_rpinfos_first(bsgrp_node->partial_bsrp_list);
- if (!pim_get_all_mcast_group(&group_all))
- return;
-
+ pim_get_all_mcast_group(&group_all);
rp_all = pim_rp_find_match_group(pim, &group_all);
rn = route_node_lookup(pim->rp_table, &bsgrp_node->group);
pim_delete_tracked_nexthop(pim, nht_p, NULL, rp_info);
- if (!pim_get_all_mcast_group(&g_all))
- return;
-
+ pim_get_all_mcast_group(&g_all);
rp_all = pim_rp_find_match_group(pim, &g_all);
if (rp_all == rp_info) {
else if (yang_dnode_get(args->dnode, "prefix-list")) {
plist = yang_dnode_get_string(args->dnode,
"./prefix-list");
- if (!pim_get_all_mcast_group(&group)) {
- flog_err(
- EC_LIB_DEVELOPMENT,
- "Unable to convert 224.0.0.0/4 to prefix");
- return NB_ERR_INCONSISTENCY;
- }
-
+ pim_get_all_mcast_group(&group);
result = pim_no_rp_cmd_worker(pim, rp_addr, group,
plist, args->errmsg,
args->errmsg_len);
pim = vrf->info;
plist = yang_dnode_get_string(args->dnode, NULL);
yang_dnode_get_pimaddr(&rp_addr, args->dnode, "../rp-address");
- if (!pim_get_all_mcast_group(&group)) {
- flog_err(EC_LIB_DEVELOPMENT,
- "Unable to convert 224.0.0.0/4 to prefix");
- return NB_ERR_INCONSISTENCY;
- }
+ pim_get_all_mcast_group(&group);
return pim_rp_cmd_worker(pim, rp_addr, group, plist,
args->errmsg, args->errmsg_len);
}
pim = vrf->info;
yang_dnode_get_pimaddr(&rp_addr, args->dnode, "../rp-address");
plist = yang_dnode_get_string(args->dnode, NULL);
- if (!pim_get_all_mcast_group(&group)) {
- flog_err(EC_LIB_DEVELOPMENT,
- "Unable to convert 224.0.0.0/4 to prefix");
- return NB_ERR_INCONSISTENCY;
- }
+ pim_get_all_mcast_group(&group);
return pim_no_rp_cmd_worker(pim, rp_addr, group, plist,
args->errmsg, args->errmsg_len);
break;
rp_info = XCALLOC(MTYPE_PIM_RP, sizeof(*rp_info));
- if (!pim_get_all_mcast_group(&rp_info->group)) {
- flog_err(EC_LIB_DEVELOPMENT,
- "Unable to convert all-multicast prefix");
- list_delete(&pim->rp_list);
- route_table_finish(pim->rp_table);
- XFREE(MTYPE_PIM_RP, rp_info);
- return;
- }
+ pim_get_all_mcast_group(&rp_info->group);
rp_info->rp.rpf_addr = PIMADDR_ANY;
listnode_add(pim->rp_list, rp_info);
rp_info->plist = XSTRDUP(MTYPE_PIM_FILTER_NAME, plist);
} else {
-
- if (!pim_get_all_mcast_group(&group_all)) {
- XFREE(MTYPE_PIM_RP, rp_info);
- return PIM_GROUP_BAD_ADDRESS;
- }
+ pim_get_all_mcast_group(&group_all);
rp_all = pim_rp_find_match_group(pim, &group_all);
/*
struct prefix group;
int result;
- if (group_range == NULL)
- result = pim_get_all_mcast_group(&group);
- else
+ if (group_range == NULL) {
+ result = 0;
+ pim_get_all_mcast_group(&group);
+ } else
result = str2prefix(group_range, &group);
if (!result) {
&nht_p);
pim_delete_tracked_nexthop(pim, nht_p, NULL, rp_info);
- if (!pim_get_all_mcast_group(&g_all))
- return PIM_RP_BAD_ADDRESS;
-
+ pim_get_all_mcast_group(&g_all);
rp_all = pim_rp_find_match_group(pim, &g_all);
if (rp_all == rp_info) {
/* This function returns all multicast group */
-int pim_get_all_mcast_group(struct prefix *prefix)
+void pim_get_all_mcast_group(struct prefix *prefix)
{
+ memset(prefix, 0, sizeof(*prefix));
+
#if PIM_IPV == 4
- if (!str2prefix("224.0.0.0/4", prefix))
- return 0;
+ /* Precomputed version of: `str2prefix("224.0.0.0/4", prefix);` */
+ prefix->family = AF_INET;
+ prefix->prefixlen = 4;
+ prefix->u.prefix4.s_addr = htonl(0xe0000000);
#else
- if (!str2prefix("FF00::0/8", prefix))
- return 0;
+ /* Precomputed version of: `str2prefix("FF00::0/8", prefix)` */
+ prefix->family = AF_INET6;
+ prefix->prefixlen = 8;
+ prefix->u.prefix6.s6_addr[0] = 0xff;
#endif
- return 1;
}
bool pim_addr_is_multicast(pim_addr addr)
enum filter_type pim_access_list_apply(struct access_list *access, const struct in_addr *source,
const struct in_addr *group);
bool pim_is_group_filtered(struct pim_interface *pim_ifp, pim_addr *grp, pim_addr *src);
-int pim_get_all_mcast_group(struct prefix *prefix);
+void pim_get_all_mcast_group(struct prefix *prefix);
bool pim_addr_is_multicast(pim_addr addr);
#endif /* PIM_UTIL_H */