#include "ospfd/ospf_zebra.h"
#include "ospfd/ospf_sr.h"
#include "ospfd/ospf_ext.h"
+#include "ospfd/ospf_errors.h"
/* Following structure are internal use only. */
NULL); /* del_lsa_hook */
if (rc != 0) {
- zlog_warn("EXT (%s): Failed to register Extended Link LSA",
+ flog_warn(EC_OSPF_OPAQUE_REGISTRATION,
+ "EXT (%s): Failed to register Extended Link LSA",
__func__);
return rc;
}
ospf_ext_pref_lsa_update, /* new_lsa_hook */
NULL); /* del_lsa_hook */
if (rc != 0) {
- zlog_warn("EXT (%s): Failed to register Extended Prefix LSA",
+ flog_warn(EC_OSPF_OPAQUE_REGISTRATION,
+ "EXT (%s): Failed to register Extended Prefix LSA",
__func__);
return rc;
}
void ospf_ext_term(void)
{
- if ((OspfEXT.scope != OSPF_OPAQUE_AREA_LSA)
- && (OspfEXT.scope != OSPF_OPAQUE_AS_LSA))
- zlog_warn(
- "EXT: Unable to unregister Extended Prefix "
- "Opaque LSA functions: Wrong scope!");
- else
+ if ((OspfEXT.scope == OSPF_OPAQUE_AREA_LSA)
+ || (OspfEXT.scope == OSPF_OPAQUE_AS_LSA))
ospf_delete_opaque_functab(OspfEXT.scope,
OPAQUE_TYPE_EXTENDED_PREFIX_LSA);
ospf_delete_opaque_functab(OSPF_OPAQUE_AREA_LSA,
OPAQUE_TYPE_EXTENDED_LINK_LSA);
- list_delete_and_null(&OspfEXT.iflist);
+ list_delete(&OspfEXT.iflist);
OspfEXT.scope = 0;
OspfEXT.enabled = false;
if ((algorithm != SR_ALGORITHM_SPF)
&& (algorithm != SR_ALGORITHM_STRICT_SPF)) {
- zlog_warn("EXT (%s): unrecognized algorithm, not SPF or S-SPF",
- __func__);
+ flog_err(EC_OSPF_INVALID_ALGORITHM,
+ "EXT (%s): unrecognized algorithm, not SPF or S-SPF",
+ __func__);
return;
}
int rc = -1;
if (lookup_ext_by_ifp(ifp) != NULL) {
- zlog_warn("EXT (%s): interface %s is already in use", __func__,
- ifp ? ifp->name : "-");
rc = 0; /* Do nothing here. */
return rc;
}
new = XCALLOC(MTYPE_OSPF_EXT_PARAMS, sizeof(struct ext_itf));
- if (new == NULL) {
- zlog_warn("EXT (%s): XCALLOC: %s", __func__,
- safe_strerror(errno));
- return rc;
- }
/* initialize new information and link back the interface */
new->ifp = ifp;
rc = 0;
} else {
- zlog_warn("EXT (%s): interface %s is not found", __func__,
+ flog_warn(EC_OSPF_EXT_LSA_UNEXPECTED,
+ "EXT (%s): interface %s is not found", __func__,
ifp ? ifp->name : "-");
}
/* Get interface information for Segment Routing */
exti = lookup_ext_by_ifp(oi->ifp);
- if (exti == NULL) {
- zlog_warn("EXT (%s): Cannot get Extended info. from OI(%s)",
- __func__, IF_NAME(oi));
+ if (exti == NULL)
return;
- }
/* Determine if interface is related to Adjacency or LAN Adj. SID */
if (oi->type != OSPF_IFTYPE_LOOPBACK) {
/* Get interface information for Segment Routing */
exti = lookup_ext_by_ifp(oi->ifp);
if (exti == NULL) {
- zlog_warn("EXT (%s): Cannot get Extended info. from OI(%s)",
+ flog_warn(EC_OSPF_EXT_LSA_UNEXPECTED,
+ "EXT (%s): Cannot get Extended info. from OI(%s)",
__func__, IF_NAME(oi));
return;
}
/* Get interface information for Segment Routing */
exti = lookup_ext_by_ifp(oi->ifp);
if (exti == NULL) {
- zlog_warn("EXT (%s): Cannot get Extended info. from OI(%s)",
+ flog_warn(EC_OSPF_EXT_LSA_UNEXPECTED,
+ "EXT (%s): Cannot get Extended info. from OI(%s)",
__func__, IF_NAME(oi));
return;
}
if (oi->area == NULL || oi->area->ospf == NULL) {
- zlog_warn("EXT (%s): Cannot refer to OSPF from OI(%s)",
+ flog_warn(EC_OSPF_EXT_LSA_UNEXPECTED,
+ "EXT (%s): Cannot refer to OSPF from OI(%s)",
__func__, IF_NAME(oi));
return;
}
{
/* Sanity Check */
if (lsa == NULL) {
- zlog_warn("EXT (%s): Abort! LSA is NULL", __func__);
+ flog_warn(EC_OSPF_LSA_NULL, "EXT (%s): Abort! LSA is NULL",
+ __func__);
return -1;
}
/* Sanity Check */
if (lsa == NULL) {
- zlog_warn("EXT (%s): Abort! LSA is NULL", __func__);
+ flog_warn(EC_OSPF_LSA_NULL, "EXT (%s): Abort! LSA is NULL",
+ __func__);
return -1;
}
/* Create a stream for LSA. */
s = stream_new(OSPF_MAX_LSA_SIZE);
- if (s == NULL) {
- zlog_warn("EXT (%s): stream_new() error", __func__);
- return NULL;
- }
/* Prepare LSA Header */
lsah = (struct lsa_header *)STREAM_DATA(s);
lsah->length = htons(length);
/* Now, create an OSPF LSA instance. */
- new = ospf_lsa_new();
- if (new == NULL) {
- zlog_warn("EXT (%s): ospf_lsa_new() error", __func__);
- stream_free(s);
- return NULL;
- }
- new->data = ospf_lsa_data_new(length);
- if (new->data == NULL) {
- zlog_warn("EXT (%s): ospf_lsa_data_new() error", __func__);
- ospf_lsa_unlock(&new);
- new = NULL;
- stream_free(s);
- return NULL;
- }
+ new = ospf_lsa_new_and_data(length);
/* Segment Routing belongs only to default VRF */
new->vrf_id = VRF_DEFAULT;
/* Create a stream for LSA. */
s = stream_new(OSPF_MAX_LSA_SIZE);
- if (s == NULL) {
- zlog_warn("EXT (%s): stream_new() error", __func__);
- return NULL;
- }
lsah = (struct lsa_header *)STREAM_DATA(s);
options = OSPF_OPTION_O; /* Don't forget this :-) */
lsah->length = htons(length);
/* Now, create an OSPF LSA instance. */
- new = ospf_lsa_new();
- if (new == NULL) {
- zlog_warn("EXT (%s): ospf_lsa_new() error", __func__);
- stream_free(s);
- return NULL;
- }
- new->data = ospf_lsa_data_new(length);
- if (new->data == NULL) {
- zlog_warn("EXT (%s): ospf_lsa_data_new() error", __func__);
- ospf_lsa_unlock(&new);
- new = NULL;
- stream_free(s);
- return NULL;
- }
+ new = ospf_lsa_new_and_data(length);
/* Segment Routing belongs only to default VRF */
new->vrf_id = VRF_DEFAULT;
/* Create new Opaque-LSA/Extended Prefix Opaque LSA instance. */
new = ospf_ext_pref_lsa_new(area, exti);
if (new == NULL) {
- zlog_warn("EXT (%s): ospf_ext_pref_lsa_new() error", __func__);
+ flog_warn(EC_OSPF_EXT_LSA_UNEXPECTED,
+ "EXT (%s): ospf_ext_pref_lsa_new() error", __func__);
return rc;
}
/* Install this LSA into LSDB. */
if (ospf_lsa_install(area->ospf, NULL /*oi */, new) == NULL) {
- zlog_warn("EXT (%s): ospf_lsa_install() error", __func__);
+ flog_warn(EC_OSPF_LSA_INSTALL_FAILURE,
+ "EXT (%s): ospf_lsa_install() error", __func__);
ospf_lsa_unlock(&new);
return rc;
}
/* Create new Opaque-LSA/Extended Link Opaque LSA instance. */
new = ospf_ext_link_lsa_new(area, exti);
if (new == NULL) {
- zlog_warn("EXT (%s): ospf_ext_link_lsa_new() error", __func__);
+ flog_warn(EC_OSPF_EXT_LSA_UNEXPECTED,
+ "EXT (%s): ospf_ext_link_lsa_new() error", __func__);
return rc;
}
/* Install this LSA into LSDB. */
if (ospf_lsa_install(area->ospf, NULL /*oi */, new) == NULL) {
- zlog_warn("EXT (%s): ospf_lsa_install() error", __func__);
+ flog_warn(EC_OSPF_LSA_INSTALL_FAILURE,
+ "EXT (%s): ospf_lsa_install() error", __func__);
ospf_lsa_unlock(&new);
return rc;
}
if (CHECK_FLAG(exti->flags, EXT_LPFLG_LSA_ENGAGED)) {
if (CHECK_FLAG(exti->flags,
EXT_LPFLG_LSA_FORCED_REFRESH)) {
- zlog_warn(
- "EXT (%s): Refresh instead of "
- "Originate",
+ flog_warn(
+ EC_OSPF_EXT_LSA_UNEXPECTED,
+ "EXT (%s): Refresh instead of Originate",
__func__);
UNSET_FLAG(exti->flags,
EXT_LPFLG_LSA_FORCED_REFRESH);
if (CHECK_FLAG(exti->flags, EXT_LPFLG_LSA_ENGAGED)) {
if (CHECK_FLAG(exti->flags,
EXT_LPFLG_LSA_FORCED_REFRESH)) {
- zlog_warn(
- "EXT (%s): Refresh instead of "
- "Originate",
+ flog_warn(
+ EC_OSPF_EXT_LSA_UNEXPECTED,
+ "EXT (%s): Refresh instead of Originate",
__func__);
UNSET_FLAG(exti->flags,
EXT_LPFLG_LSA_FORCED_REFRESH);
/* Lookup this lsa corresponding Extended parameters */
exti = lookup_ext_by_instance(lsa);
if (exti == NULL) {
- zlog_warn("EXT (%s): Invalid parameter LSA ID", __func__);
+ flog_warn(EC_OSPF_EXT_LSA_UNEXPECTED,
+ "EXT (%s): Invalid parameter LSA ID", __func__);
/* Flush it anyway. */
lsa->data->ls_age = htons(OSPF_LSA_MAXAGE);
}
/* Check if Interface was not disable in the interval */
if ((exti != NULL) && !CHECK_FLAG(exti->flags, EXT_LPFLG_LSA_ACTIVE)) {
- zlog_warn("EXT (%s): Interface was Disabled: Flush it!",
+ flog_warn(EC_OSPF_EXT_LSA_UNEXPECTED,
+ "EXT (%s): Interface was Disabled: Flush it!",
__func__);
/* Flush it anyway. */
lsa->data->ls_age = htons(OSPF_LSA_MAXAGE);
new = ospf_ext_pref_lsa_new(area, exti);
if (new == NULL) {
- zlog_warn("EXT (%s): ospf_ext_pref_lsa_new() error", __func__);
+ flog_warn(EC_OSPF_EXT_LSA_UNEXPECTED,
+ "EXT (%s): ospf_ext_pref_lsa_new() error", __func__);
return NULL;
}
new->data->ls_seqnum = lsa_seqnum_increment(lsa);
top = ospf_lookup_by_vrf_id(VRF_DEFAULT);
if (ospf_lsa_install(top, NULL /*oi */, new) == NULL) {
- zlog_warn("EXT (%s): ospf_lsa_install() error", __func__);
+ flog_warn(EC_OSPF_LSA_INSTALL_FAILURE,
+ "EXT (%s): ospf_lsa_install() error", __func__);
ospf_lsa_unlock(&new);
return NULL;
}
/* Lookup this LSA corresponding Extended parameters */
exti = lookup_ext_by_instance(lsa);
if (exti == NULL) {
- zlog_warn("EXT (%s): Invalid parameter LSA ID", __func__);
+ flog_warn(EC_OSPF_EXT_LSA_UNEXPECTED,
+ "EXT (%s): Invalid parameter LSA ID", __func__);
/* Flush it anyway. */
lsa->data->ls_age = htons(OSPF_LSA_MAXAGE);
}
/* Check if Interface was not disable in the interval */
if ((exti != NULL) && !CHECK_FLAG(exti->flags, EXT_LPFLG_LSA_ACTIVE)) {
- zlog_warn("EXT (%s): Interface was Disabled: Flush it!",
+ flog_warn(EC_OSPF_EXT_LSA_UNEXPECTED,
+ "EXT (%s): Interface was Disabled: Flush it!",
__func__);
lsa->data->ls_age = htons(OSPF_LSA_MAXAGE);
}
/* Create new Opaque-LSA/Extended Link instance */
new = ospf_ext_link_lsa_new(area, exti);
if (new == NULL) {
- zlog_warn("EXT (%s): Error creating new LSA", __func__);
+ flog_warn(EC_OSPF_EXT_LSA_UNEXPECTED,
+ "EXT (%s): Error creating new LSA", __func__);
return NULL;
}
new->data->ls_seqnum = lsa_seqnum_increment(lsa);
/* Install this LSA into LSDB. */
/* Given "lsa" will be freed in the next function */
if (ospf_lsa_install(top, NULL /*oi */, new) == NULL) {
- zlog_warn("EXT (%s): Error installing new LSA", __func__);
+ flog_warn(EC_OSPF_LSA_INSTALL_FAILURE,
+ "EXT (%s): Error installing new LSA", __func__);
ospf_lsa_unlock(&new);
return NULL;
}
/* Set LSA header information */
if (exti->area == NULL) {
- zlog_warn(
- "EXT (%s): Flooding is Area scope but area is not yet "
- "set",
+ flog_warn(
+ EC_OSPF_EXT_LSA_UNEXPECTED,
+ "EXT (%s): Flooding is Area scope but area is not yet set",
__func__);
if (OspfEXT.area == NULL) {
top = ospf_lookup_by_vrf_id(VRF_DEFAULT);
UNSET_FLAG(exti->flags, EXT_LPFLG_LSA_ENGAGED);
ospf_opaque_lsa_flush_schedule(&lsa);
break;
- default:
- zlog_warn("EXT (%s): Unknown opcode", __func__);
- break;
}
}
/* Set LSA header information */
if (exti->area == NULL) {
- zlog_warn(
- "EXT (%s): Flooding is Area scope but area is not "
- "yet set",
+ flog_warn(
+ EC_OSPF_EXT_LSA_UNEXPECTED,
+ "EXT (%s): Flooding is Area scope but area is not yet set",
__func__);
if (OspfEXT.area == NULL) {
top = ospf_lookup_by_vrf_id(VRF_DEFAULT);
UNSET_FLAG(exti->flags, EXT_LPFLG_LSA_ENGAGED);
ospf_opaque_lsa_flush_schedule(&lsa);
break;
- default:
- zlog_warn("EXT (%s): Unknown opcode", __func__);
- break;
}
}