From e309769ae7cad3eb2f8536839be804a886e815f4 Mon Sep 17 00:00:00 2001 From: sarita patra Date: Wed, 16 Feb 2022 03:43:07 -0800 Subject: [PATCH] pim6d: modify in_addr current_bsr to pim_addr current_bsr Signed-off-by: sarita patra --- pimd/pim_bsm.c | 13 ++++++------- pimd/pim_bsm.h | 2 +- pimd/pim_cmd.c | 34 ++++++++++++---------------------- 3 files changed, 19 insertions(+), 30 deletions(-) diff --git a/pimd/pim_bsm.c b/pimd/pim_bsm.c index e5e621de0d..a89939e491 100644 --- a/pimd/pim_bsm.c +++ b/pimd/pim_bsm.c @@ -177,7 +177,7 @@ static void pim_on_bs_timer(struct thread *t) /* Reset scope zone data */ scope->accept_nofwd_bsm = false; scope->state = ACCEPT_ANY; - scope->current_bsr.s_addr = INADDR_ANY; + scope->current_bsr = PIMADDR_ANY; scope->current_bsr_prio = 0; scope->current_bsr_first_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); } -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) { - if (bsr.s_addr == pim->global_scope.current_bsr.s_addr) + if (!pim_addr_cmp(bsr, pim->global_scope.current_bsr)) return true; if (bsr_prio > pim->global_scope.current_bsr_prio) return true; else if (bsr_prio == pim->global_scope.current_bsr_prio) { - if (ntohl(bsr.s_addr) - >= ntohl(pim->global_scope.current_bsr.s_addr)) + if (pim_addr_cmp(bsr, pim->global_scope.current_bsr) >= 0) return true; else return false; @@ -550,7 +549,7 @@ static bool is_preferred_bsr(struct pim_instance *pim, struct in_addr bsr, 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) { 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 */ pim->global_scope.accept_nofwd_bsm = false; 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_first_ts = 0; pim->global_scope.current_bsr_last_ts = 0; diff --git a/pimd/pim_bsm.h b/pimd/pim_bsm.h index 910067109e..d0f3634a3b 100644 --- a/pimd/pim_bsm.h +++ b/pimd/pim_bsm.h @@ -61,7 +61,7 @@ struct bsm_scope { int sz_id; /* scope zone id */ enum ncbsr_state state; /* non candidate BSR state */ 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 */ int64_t current_bsr_first_ts; /* current BSR elected time */ int64_t current_bsr_last_ts; /* Last BSM received from E-BSR */ diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c index 10ea472fb5..cffbb5baa7 100644 --- a/pimd/pim_cmd.c +++ b/pimd/pim_cmd.c @@ -884,9 +884,8 @@ static void pim_show_bsm_db(struct pim_instance *pim, struct vty *vty, bool uj) buf += sizeof(struct bsm_hdr); len -= sizeof(struct bsm_hdr); - pim_inet4_dump("", hdr->bsr_addr.addr, bsr_str, - sizeof(bsr_str)); - + snprintfrr(bsr_str, sizeof(bsr_str), "%pPAs", + &hdr->bsr_addr.addr); if (uj) { 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 bsm_rpinfo *bsm_rp; struct route_node *rn; - char bsr_str[INET_ADDRSTRLEN]; json_object *json = NULL; json_object *json_group = 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("", pim->global_scope.current_bsr, bsr_str, - sizeof(bsr_str)); - if (uj) { json = json_object_new_object(); - json_object_string_add(json, "BSR Address", bsr_str); - } else { - vty_out(vty, "BSR Address %s\n", bsr_str); - } + json_object_string_addf(json, "BSR Address", "%pPA", + &pim->global_scope.current_bsr); + } else + vty_out(vty, "BSR Address %pPA\n", &pim->global_scope.current_bsr); for (rn = route_top(pim->global_scope.bsrp_table); rn; rn = route_next(rn)) { @@ -1451,11 +1442,9 @@ static void pim_show_bsr(struct pim_instance *pim, char last_bsm_seen[10]; time_t now; char bsr_state[20]; - char bsr_str[PREFIX_STRLEN]; json_object *json = NULL; - if (pim->global_scope.current_bsr.s_addr == INADDR_ANY) { - strlcpy(bsr_str, "0.0.0.0", sizeof(bsr_str)); + if (pim_addr_is_any(pim->global_scope.current_bsr)) { pim_time_uptime(uptime, sizeof(uptime), pim->global_scope.current_bsr_first_ts); pim_time_uptime(last_bsm_seen, sizeof(last_bsm_seen), @@ -1463,8 +1452,6 @@ static void pim_show_bsr(struct pim_instance *pim, } else { - pim_inet4_dump("", pim->global_scope.current_bsr, - bsr_str, sizeof(bsr_str)); now = pim_time_monotonic_sec(); pim_time_uptime(uptime, sizeof(uptime), (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)); } + if (uj) { 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", pim->global_scope.current_bsr_prio); json_object_int_add(json, "fragmentTag", @@ -1500,7 +1489,8 @@ static void pim_show_bsr(struct pim_instance *pim, else { 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, "Priority Fragment-Tag State UpTime\n"); vty_out(vty, " %-12d %-12d %-13s %7s\n",