/* Ignore RP's limited to PIM version 1 or with an unknown version */
if (rp->pimver == AUTORP_PIM_V1 || rp->pimver == AUTORP_PIM_VUNKNOWN) {
if (PIM_DEBUG_AUTORP)
- zlog_debug("%s: Ignoring unsupported PIM version (%u) in AutoRP Announcement for RP %pI4",
- __func__, rp->pimver, (in_addr_t *)&(rp->addr));
+ zlog_debug("%s: Ignoring unsupported PIM version (%u) in AutoRP Announcement for RP %pPA",
+ __func__, rp->pimver, &rp_addr);
/* Update the offset to skip past the groups advertised for this RP */
offset += (AUTORP_GRPLEN * rp->grpcnt);
continue;
if (rp->grpcnt == 0) {
/* No groups?? */
if (PIM_DEBUG_AUTORP)
- zlog_debug("%s: Announcement message has no groups for RP %pI4",
- __func__, (in_addr_t *)&(rp->addr));
+ zlog_debug("%s: Announcement message has no groups for RP %pPA",
+ __func__, &rp_addr);
continue;
}
if ((buf_size - offset) < AUTORP_GRPLEN) {
- zlog_warn("%s: Buffer underrun parsing groups for RP %pI4", __func__,
- (in_addr_t *)&(rp->addr));
+ zlog_warn("%s: Buffer underrun parsing groups for RP %pPA", __func__,
+ &rp_addr);
return false;
}
rp_addr.s_addr = rp->addr;
if (PIM_DEBUG_AUTORP)
- zlog_debug("%s: Parsing RP %pI4 (grpcnt=%u)", __func__,
- (in_addr_t *)&rp->addr, rp->grpcnt);
+ zlog_debug("%s: Parsing RP %pPA (grpcnt=%u)", __func__, &rp_addr,
+ rp->grpcnt);
/* Ignore RP's limited to PIM version 1 or with an unknown version */
if (rp->pimver == AUTORP_PIM_V1 || rp->pimver == AUTORP_PIM_VUNKNOWN) {
if (PIM_DEBUG_AUTORP)
zlog_debug("%s: Ignoring unsupported PIM version in AutoRP Discovery for RP %pI4",
- __func__, (in_addr_t *)&(rp->addr));
+ __func__, &rp_addr);
/* Update the offset to skip past the groups advertised for this RP */
offset += (AUTORP_GRPLEN * rp->grpcnt);
continue;
if (rp->grpcnt == 0) {
/* No groups?? */
if (PIM_DEBUG_AUTORP)
- zlog_debug("%s: Discovery message has no groups for RP %pI4",
- __func__, (in_addr_t *)&(rp->addr));
+ zlog_debug("%s: Discovery message has no groups for RP %pPA",
+ __func__, &rp_addr);
continue;
}
/* Make sure there is enough buffer to parse all the groups */
if ((buf_size - offset) < (AUTORP_GRPLEN * rp->grpcnt)) {
if (PIM_DEBUG_AUTORP)
- zlog_debug("%s: Buffer underrun parsing groups for RP %pI4 (%u < %u)",
- __func__, (in_addr_t *)&(rp->addr),
- (uint32_t)(buf_size - offset),
+ zlog_debug("%s: Buffer underrun parsing groups for RP %pPA (%u < %u)",
+ __func__, &rp_addr, (uint32_t)(buf_size - offset),
(uint32_t)(AUTORP_GRPLEN * rp->grpcnt));
return false;
}
if (PIM_DEBUG_AUTORP)
zlog_debug("%s: Parsing group %s%pFX for RP %pI4", __func__,
- (grp->negprefix ? "!" : ""), &grppfix,
- (in_addr_t *)&rp->addr);
+ (grp->negprefix ? "!" : ""), &grppfix, &rp_addr);
if (!pim_autorp_add_rp(autorp, rp_addr, grppfix, NULL, holdtime))
success = false;
prefix_list_entry_update_finish(ple);
if (PIM_DEBUG_AUTORP)
- zlog_debug("%s: Parsing group %s%pFX for RP %pI4", __func__,
+ zlog_debug("%s: Parsing group %s%pFX for RP %pPA", __func__,
(grp->negprefix ? "!" : ""), &ple->prefix,
- (in_addr_t *)&rp->addr);
+ &rp_addr);
}
if (!pim_autorp_add_rp(autorp, rp_addr, grppfix, plname, holdtime))
struct pim_interface *pim_ifp = NULL;
struct pim_instance *pim;
struct bsm_scope *scope;
+ size_t ngroups;
+ pim_addr rpaddr = {};
pim_ifp = ifp->info;
if (!pim_ifp) {
/* ignore trailing data */
(void)buf;
- size_t ngroups = crp_hdr->prefix_cnt;
+ ngroups = crp_hdr->prefix_cnt;
+ rpaddr = crp_hdr->rp_addr.addr;
if (remain < ngroups * sizeof(struct pim_encoded_group_ipv4)) {
if (PIM_DEBUG_BSM)
zlog_debug("truncated Candidate-RP advertisement for RP %pPA from %pPA (too short for %zu groups)",
- (pim_addr *)&crp_hdr->rp_addr.addr,
- &src_dst->src, ngroups);
+ &rpaddr, &src_dst->src, ngroups);
return -1;
}
if (PIM_DEBUG_BSM)
zlog_debug("Candidate-RP: %pPA, prio=%u (from %pPA, %zu groups)",
- (pim_addr *)&crp_hdr->rp_addr.addr, crp_hdr->rp_prio,
- &src_dst->src, ngroups);
+ (pim_addr *)&rpaddr, crp_hdr->rp_prio, &src_dst->src, ngroups);
struct bsr_crp_rp *rp, ref;
if (!rp) {
if (bsr_crp_rps_count(scope->ebsr_rps) >= bsr_max_rps) {
zlog_err("BSR: number of tracked Candidate RPs (%zu) exceeds DoS-protection limit (%zu), dropping advertisement for RP %pPA (packet source %pPA)",
- bsr_crp_rps_count(scope->ebsr_rps),
- bsr_max_rps, (pim_addr *)&crp_hdr->rp_addr.addr,
- &src_dst->src);
+ bsr_crp_rps_count(scope->ebsr_rps), bsr_max_rps,
+ (pim_addr *)&rpaddr, &src_dst->src);
return -1;
}
if (PIM_DEBUG_BSM)
zlog_debug("new Candidate-RP: %pPA (from %pPA)",
- (pim_addr *)&crp_hdr->rp_addr.addr,
- &src_dst->src);
+ (pim_addr *)&rpaddr, &src_dst->src);
rp = XCALLOC(MTYPE_PIM_BSR_CRP, sizeof(*rp));
rp->scope = scope;