pim6d: modify in_addr current_bsr to pim_addr current_bsr

Signed-off-by: sarita patra <saritap@vmware.com>
This commit is contained in:
sarita patra 2022-02-16 03:43:07 -08:00 committed by Sarita Patra
parent 0238d27f50
commit e309769ae7
3 changed files with 19 additions and 30 deletions

View File

@ -177,7 +177,7 @@ static void pim_on_bs_timer(struct thread *t)
/* Reset scope zone data */ /* Reset scope zone data */
scope->accept_nofwd_bsm = false; scope->accept_nofwd_bsm = false;
scope->state = ACCEPT_ANY; scope->state = ACCEPT_ANY;
scope->current_bsr.s_addr = INADDR_ANY; scope->current_bsr = PIMADDR_ANY;
scope->current_bsr_prio = 0; scope->current_bsr_prio = 0;
scope->current_bsr_first_ts = 0; scope->current_bsr_first_ts = 0;
scope->current_bsr_last_ts = 0; scope->current_bsr_last_ts = 0;
@ -531,18 +531,17 @@ static void pim_instate_pend_list(struct bsgrp_node *bsgrp_node)
pim_bsm_rpinfos_free(bsgrp_node->partial_bsrp_list); pim_bsm_rpinfos_free(bsgrp_node->partial_bsrp_list);
} }
static bool is_preferred_bsr(struct pim_instance *pim, struct in_addr bsr, static bool is_preferred_bsr(struct pim_instance *pim, pim_addr bsr,
uint32_t bsr_prio) uint32_t bsr_prio)
{ {
if (bsr.s_addr == pim->global_scope.current_bsr.s_addr) if (!pim_addr_cmp(bsr, pim->global_scope.current_bsr))
return true; return true;
if (bsr_prio > pim->global_scope.current_bsr_prio) if (bsr_prio > pim->global_scope.current_bsr_prio)
return true; return true;
else if (bsr_prio == pim->global_scope.current_bsr_prio) { else if (bsr_prio == pim->global_scope.current_bsr_prio) {
if (ntohl(bsr.s_addr) if (pim_addr_cmp(bsr, pim->global_scope.current_bsr) >= 0)
>= ntohl(pim->global_scope.current_bsr.s_addr))
return true; return true;
else else
return false; return false;
@ -550,7 +549,7 @@ static bool is_preferred_bsr(struct pim_instance *pim, struct in_addr bsr,
return false; return false;
} }
static void pim_bsm_update(struct pim_instance *pim, struct in_addr bsr, static void pim_bsm_update(struct pim_instance *pim, pim_addr bsr,
uint32_t bsr_prio) uint32_t bsr_prio)
{ {
if (bsr.s_addr != pim->global_scope.current_bsr.s_addr) { if (bsr.s_addr != pim->global_scope.current_bsr.s_addr) {
@ -583,7 +582,7 @@ void pim_bsm_clear(struct pim_instance *pim)
/* Reset scope zone data */ /* Reset scope zone data */
pim->global_scope.accept_nofwd_bsm = false; pim->global_scope.accept_nofwd_bsm = false;
pim->global_scope.state = ACCEPT_ANY; pim->global_scope.state = ACCEPT_ANY;
pim->global_scope.current_bsr.s_addr = INADDR_ANY; pim->global_scope.current_bsr = PIMADDR_ANY;
pim->global_scope.current_bsr_prio = 0; pim->global_scope.current_bsr_prio = 0;
pim->global_scope.current_bsr_first_ts = 0; pim->global_scope.current_bsr_first_ts = 0;
pim->global_scope.current_bsr_last_ts = 0; pim->global_scope.current_bsr_last_ts = 0;

View File

@ -61,7 +61,7 @@ struct bsm_scope {
int sz_id; /* scope zone id */ int sz_id; /* scope zone id */
enum ncbsr_state state; /* non candidate BSR state */ enum ncbsr_state state; /* non candidate BSR state */
bool accept_nofwd_bsm; /* no fwd bsm accepted for scope */ bool accept_nofwd_bsm; /* no fwd bsm accepted for scope */
struct in_addr current_bsr; /* current elected BSR for the sz */ pim_addr current_bsr; /* current elected BSR for the sz */
uint32_t current_bsr_prio; /* current BSR priority */ uint32_t current_bsr_prio; /* current BSR priority */
int64_t current_bsr_first_ts; /* current BSR elected time */ int64_t current_bsr_first_ts; /* current BSR elected time */
int64_t current_bsr_last_ts; /* Last BSM received from E-BSR */ int64_t current_bsr_last_ts; /* Last BSM received from E-BSR */

View File

@ -884,9 +884,8 @@ static void pim_show_bsm_db(struct pim_instance *pim, struct vty *vty, bool uj)
buf += sizeof(struct bsm_hdr); buf += sizeof(struct bsm_hdr);
len -= sizeof(struct bsm_hdr); len -= sizeof(struct bsm_hdr);
pim_inet4_dump("<BSR Address?>", hdr->bsr_addr.addr, bsr_str, snprintfrr(bsr_str, sizeof(bsr_str), "%pPAs",
sizeof(bsr_str)); &hdr->bsr_addr.addr);
if (uj) { if (uj) {
json_object_string_add(json, "BSR address", bsr_str); json_object_string_add(json, "BSR address", bsr_str);
@ -998,24 +997,16 @@ static void pim_show_group_rp_mappings_info(struct pim_instance *pim,
struct bsgrp_node *bsgrp; struct bsgrp_node *bsgrp;
struct bsm_rpinfo *bsm_rp; struct bsm_rpinfo *bsm_rp;
struct route_node *rn; struct route_node *rn;
char bsr_str[INET_ADDRSTRLEN];
json_object *json = NULL; json_object *json = NULL;
json_object *json_group = NULL; json_object *json_group = NULL;
json_object *json_row = NULL; json_object *json_row = NULL;
if (pim->global_scope.current_bsr.s_addr == INADDR_ANY)
strlcpy(bsr_str, "0.0.0.0", sizeof(bsr_str));
else
pim_inet4_dump("<bsr?>", pim->global_scope.current_bsr, bsr_str,
sizeof(bsr_str));
if (uj) { if (uj) {
json = json_object_new_object(); json = json_object_new_object();
json_object_string_add(json, "BSR Address", bsr_str); json_object_string_addf(json, "BSR Address", "%pPA",
} else { &pim->global_scope.current_bsr);
vty_out(vty, "BSR Address %s\n", bsr_str); } else
} vty_out(vty, "BSR Address %pPA\n", &pim->global_scope.current_bsr);
for (rn = route_top(pim->global_scope.bsrp_table); rn; for (rn = route_top(pim->global_scope.bsrp_table); rn;
rn = route_next(rn)) { rn = route_next(rn)) {
@ -1451,11 +1442,9 @@ static void pim_show_bsr(struct pim_instance *pim,
char last_bsm_seen[10]; char last_bsm_seen[10];
time_t now; time_t now;
char bsr_state[20]; char bsr_state[20];
char bsr_str[PREFIX_STRLEN];
json_object *json = NULL; json_object *json = NULL;
if (pim->global_scope.current_bsr.s_addr == INADDR_ANY) { if (pim_addr_is_any(pim->global_scope.current_bsr)) {
strlcpy(bsr_str, "0.0.0.0", sizeof(bsr_str));
pim_time_uptime(uptime, sizeof(uptime), pim_time_uptime(uptime, sizeof(uptime),
pim->global_scope.current_bsr_first_ts); pim->global_scope.current_bsr_first_ts);
pim_time_uptime(last_bsm_seen, sizeof(last_bsm_seen), pim_time_uptime(last_bsm_seen, sizeof(last_bsm_seen),
@ -1463,8 +1452,6 @@ static void pim_show_bsr(struct pim_instance *pim,
} }
else { else {
pim_inet4_dump("<bsr?>", pim->global_scope.current_bsr,
bsr_str, sizeof(bsr_str));
now = pim_time_monotonic_sec(); now = pim_time_monotonic_sec();
pim_time_uptime(uptime, sizeof(uptime), pim_time_uptime(uptime, sizeof(uptime),
(now - pim->global_scope.current_bsr_first_ts)); (now - pim->global_scope.current_bsr_first_ts));
@ -1486,9 +1473,11 @@ static void pim_show_bsr(struct pim_instance *pim,
strlcpy(bsr_state, "", sizeof(bsr_state)); strlcpy(bsr_state, "", sizeof(bsr_state));
} }
if (uj) { if (uj) {
json = json_object_new_object(); json = json_object_new_object();
json_object_string_add(json, "bsr", bsr_str); json_object_string_addf(json, "bsr", "%pPA",
&pim->global_scope.current_bsr);
json_object_int_add(json, "priority", json_object_int_add(json, "priority",
pim->global_scope.current_bsr_prio); pim->global_scope.current_bsr_prio);
json_object_int_add(json, "fragmentTag", json_object_int_add(json, "fragmentTag",
@ -1500,7 +1489,8 @@ static void pim_show_bsr(struct pim_instance *pim,
else { else {
vty_out(vty, "PIMv2 Bootstrap information\n"); vty_out(vty, "PIMv2 Bootstrap information\n");
vty_out(vty, "Current preferred BSR address: %s\n", bsr_str); vty_out(vty, "Current preferred BSR address: %pPA\n",
&pim->global_scope.current_bsr);
vty_out(vty, vty_out(vty,
"Priority Fragment-Tag State UpTime\n"); "Priority Fragment-Tag State UpTime\n");
vty_out(vty, " %-12d %-12d %-13s %7s\n", vty_out(vty, " %-12d %-12d %-13s %7s\n",