Merge pull request #7005 from Orange-OpenSource/dev_ospf_sr

ospfd: Coverity corrections
This commit is contained in:
Donald Sharp 2020-08-27 07:15:38 -04:00 committed by GitHub
commit 2f826685a7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 45 additions and 30 deletions

View File

@ -563,9 +563,9 @@ static void ospf_ext_link_update_adj_sid(struct ext_itf *exti)
set_adj_sid(exti, true, bck_label, SID_LABEL);
set_adj_sid(exti, false, label, SID_LABEL);
} else {
set_lan_adj_sid(exti, true, bck_label, SID_LABEL,
set_lan_adj_sid(exti, true, bck_label, SID_LABEL,
exti->lan_sid[0].neighbor_id);
set_lan_adj_sid(exti, false, label, SID_LABEL,
set_lan_adj_sid(exti, false, label, SID_LABEL,
exti->lan_sid[1].neighbor_id);
}
@ -590,8 +590,8 @@ static void ospf_ext_link_delete_adj_sid(struct ext_itf *exti)
ospf_sr_local_block_release_label(exti->adj_sid[0].value);
ospf_sr_local_block_release_label(exti->adj_sid[1].value);
} else {
ospf_sr_local_block_release_label(exti->adj_sid[0].value);
ospf_sr_local_block_release_label(exti->adj_sid[1].value);
ospf_sr_local_block_release_label(exti->lan_sid[0].value);
ospf_sr_local_block_release_label(exti->lan_sid[1].value);
}
/* And reset corresponding TLV */
unset_adjacency_sid(exti);

View File

@ -573,20 +573,23 @@ static void initialize_params(struct ospf_router_info *ori)
return;
}
static int is_mandated_params_set(struct ospf_router_info ori)
static int is_mandated_params_set(struct ospf_router_info *ori)
{
int rc = 0;
if (ntohs(ori.router_cap.header.type) == 0)
if (ori == NULL)
return rc;
if ((ntohs(ori.pce_info.pce_header.header.type) == RI_TLV_PCE)
&& (ntohs(ori.pce_info.pce_address.header.type) == 0)
&& (ntohs(ori.pce_info.pce_cap_flag.header.type) == 0))
if (ntohs(ori->router_cap.header.type) == 0)
return rc;
if ((ori.sr_info.enabled) && (ntohs(TLV_TYPE(ori.sr_info.algo)) == 0)
&& (ntohs(TLV_TYPE(ori.sr_info.srgb)) == 0))
if ((ntohs(ori->pce_info.pce_header.header.type) == RI_TLV_PCE)
&& (ntohs(ori->pce_info.pce_address.header.type) == 0)
&& (ntohs(ori->pce_info.pce_cap_flag.header.type) == 0))
return rc;
if ((ori->sr_info.enabled) && (ntohs(TLV_TYPE(ori->sr_info.algo)) == 0)
&& (ntohs(TLV_TYPE(ori->sr_info.srgb)) == 0))
return rc;
rc = 1;
@ -626,6 +629,10 @@ void ospf_router_info_update_sr(bool enable, struct sr_node *srn)
initialize_params(&OspfRI);
}
/* Check that SR node is valid */
if (srn == NULL)
return;
if (IS_DEBUG_OSPF_SR)
zlog_debug("RI (%s): %s Routing Information for Segment Routing",
__func__, enable ? "Enable" : "Disable");
@ -986,7 +993,7 @@ static int ospf_router_info_lsa_originate(void *arg)
}
/* Router Information is not yet Engaged, check parameters */
if (!is_mandated_params_set(OspfRI))
if (!is_mandated_params_set(&OspfRI))
flog_warn(
EC_OSPF_LSA,
"RI (%s): lacks mandated ROUTER INFORMATION parameters",

View File

@ -2074,13 +2074,17 @@ static int update_srgb(uint32_t lower, uint32_t size)
osr_debug("SR(%s): Got new SRGB [%u/%u]", __func__, OspfSR.srgb.start,
OspfSR.srgb.start + OspfSR.srgb.size - 1);
/* SRGB is reserved, set Router Information parameters */
ospf_router_info_update_sr(true, OspfSR.self);
/* Update Self SR-Node */
if (OspfSR.self != NULL) {
/* SRGB is reserved, set Router Information parameters */
ospf_router_info_update_sr(true, OspfSR.self);
/* and update NHLFE entries */
hash_iterate(OspfSR.neighbors,
(void (*)(struct hash_bucket *, void *))update_in_nhlfe,
NULL);
/* and update NHLFE entries */
hash_iterate(
OspfSR.neighbors,
(void (*)(struct hash_bucket *, void *))update_in_nhlfe,
NULL);
}
return 0;
}
@ -2198,9 +2202,11 @@ DEFUN (sr_local_label_range,
}
/* SRLB is reserved, Update Self SR-Node and Router Information LSA */
OspfSR.self->srlb.lower_bound = lower;
OspfSR.self->srlb.range_size = upper - lower + 1;
ospf_router_info_update_sr(true, OspfSR.self);
if (OspfSR.self != NULL) {
OspfSR.self->srlb.lower_bound = lower;
OspfSR.self->srlb.range_size = upper - lower + 1;
ospf_router_info_update_sr(true, OspfSR.self);
}
/* and update (LAN)-Adjacency SID */
ospf_ext_link_srlb_update();
@ -2250,8 +2256,8 @@ DEFUN (no_sr_local_label_range,
if (OspfSR.self != NULL) {
OspfSR.self->srlb.lower_bound = DEFAULT_SRLB_LABEL;
OspfSR.self->srlb.range_size = DEFAULT_SRLB_SIZE;
ospf_router_info_update_sr(true, OspfSR.self);
}
ospf_router_info_update_sr(true, OspfSR.self);
/* and update (LAN)-Adjacency SID */
ospf_ext_link_srlb_update();
@ -2287,12 +2293,13 @@ DEFUN (sr_node_msd,
/* Set this router MSD */
OspfSR.msd = msd;
if (OspfSR.self != NULL)
if (OspfSR.self != NULL) {
OspfSR.self->msd = msd;
/* Set Router Information parameters if SR is UP */
if (OspfSR.status == SR_UP)
ospf_router_info_update_sr(true, OspfSR.self);
/* Set Router Information parameters if SR is UP */
if (OspfSR.status == SR_UP)
ospf_router_info_update_sr(true, OspfSR.self);
}
return CMD_SUCCESS;
}
@ -2311,12 +2318,13 @@ DEFUN (no_sr_node_msd,
/* unset this router MSD */
OspfSR.msd = 0;
if (OspfSR.self != NULL)
if (OspfSR.self != NULL) {
OspfSR.self->msd = 0;
/* Set Router Information parameters if SR is UP */
if (OspfSR.status == SR_UP)
ospf_router_info_update_sr(true, OspfSR.self);
/* Set Router Information parameters if SR is UP */
if (OspfSR.status == SR_UP)
ospf_router_info_update_sr(true, OspfSR.self);
}
return CMD_SUCCESS;
}