Skip to content
Permalink
Browse files

Merge pull request #2876 from donaldsharp/lsa_new_and_data

ospfd: Add ospf_lsa_new_and_data function and abstract away
  • Loading branch information...
eqvinox committed Aug 21, 2018
2 parents f4c28c4 + 5b3d418 commit 9e32cce03ff1873c47c388881092ce11ce6d7b03
Showing with 23 additions and 85 deletions.
  1. +1 −13 ospfd/ospf_apiserver.c
  2. +2 −28 ospfd/ospf_ext.c
  3. +1 −2 ospfd/ospf_flood.c
  4. +15 −16 ospfd/ospf_lsa.c
  5. +1 −0 ospfd/ospf_lsa.h
  6. +1 −2 ospfd/ospf_packet.c
  7. +1 −12 ospfd/ospf_ri.c
  8. +1 −12 ospfd/ospf_te.c
@@ -1425,19 +1425,7 @@ struct ospf_lsa *ospf_apiserver_opaque_lsa_new(struct ospf_area *area,
newlsa->length = htons(length);

/* Create OSPF LSA. */
if ((new = ospf_lsa_new()) == NULL) {
zlog_warn("ospf_apiserver_opaque_lsa_new: ospf_lsa_new() ?");
stream_free(s);
return NULL;
}

if ((new->data = ospf_lsa_data_new(length)) == NULL) {
zlog_warn(
"ospf_apiserver_opaque_lsa_new: ospf_lsa_data_new() ?");
ospf_lsa_unlock(&new);
stream_free(s);
return NULL;
}
new = ospf_lsa_new_and_data(length);

new->area = area;
new->oi = oi;
@@ -977,20 +977,7 @@ static struct ospf_lsa *ospf_ext_pref_lsa_new(struct ospf_area *area,
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;
@@ -1056,20 +1043,7 @@ static struct ospf_lsa *ospf_ext_link_lsa_new(struct ospf_area *area,
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;
@@ -810,8 +810,7 @@ struct ospf_lsa *ospf_ls_request_new(struct lsa_header *lsah)
{
struct ospf_lsa *new;

new = ospf_lsa_new();
new->data = ospf_lsa_data_new(OSPF_LSA_HEADER_SIZE);
new = ospf_lsa_new_and_data(OSPF_LSA_HEADER_SIZE);
memcpy(new->data, lsah, OSPF_LSA_HEADER_SIZE);

return new;
@@ -167,6 +167,16 @@ struct ospf_lsa *ospf_lsa_new()
return new;
}

struct ospf_lsa *ospf_lsa_new_and_data(size_t size)
{
struct ospf_lsa *new;

new = ospf_lsa_new();
new->data = ospf_lsa_data_new(size);

return new;
}

/* Duplicate OSPF LSA. */
struct ospf_lsa *ospf_lsa_dup(struct ospf_lsa *lsa)
{
@@ -781,17 +791,13 @@ static struct ospf_lsa *ospf_router_lsa_new(struct ospf_area *area)
lsah->length = htons(length);

/* Now, create OSPF LSA instance. */
if ((new = ospf_lsa_new()) == NULL) {
zlog_err("%s: Unable to create new lsa", __func__);
return NULL;
}
new = ospf_lsa_new_and_data(length);

new->area = area;
SET_FLAG(new->flags, OSPF_LSA_SELF | OSPF_LSA_SELF_CHECKED);
new->vrf_id = area->ospf->vrf_id;

/* Copy LSA data to store, discard stream. */
new->data = ospf_lsa_data_new(length);
memcpy(new->data, lsah, length);
stream_free(s);

@@ -997,17 +1003,13 @@ static struct ospf_lsa *ospf_network_lsa_new(struct ospf_interface *oi)
lsah->length = htons(length);

/* Create OSPF LSA instance. */
if ((new = ospf_lsa_new()) == NULL) {
zlog_err("%s: ospf_lsa_new returned NULL", __func__);
return NULL;
}
new = ospf_lsa_new_and_data(length);

new->area = oi->area;
SET_FLAG(new->flags, OSPF_LSA_SELF | OSPF_LSA_SELF_CHECKED);
new->vrf_id = oi->ospf->vrf_id;

/* Copy LSA to store. */
new->data = ospf_lsa_data_new(length);
memcpy(new->data, lsah, length);
stream_free(s);

@@ -1181,13 +1183,12 @@ static struct ospf_lsa *ospf_summary_lsa_new(struct ospf_area *area,
lsah->length = htons(length);

/* Create OSPF LSA instance. */
new = ospf_lsa_new();
new = ospf_lsa_new_and_data(length);
new->area = area;
SET_FLAG(new->flags, OSPF_LSA_SELF | OSPF_LSA_SELF_CHECKED);
new->vrf_id = area->ospf->vrf_id;

/* Copy LSA to store. */
new->data = ospf_lsa_data_new(length);
memcpy(new->data, lsah, length);
stream_free(s);

@@ -1323,13 +1324,12 @@ static struct ospf_lsa *ospf_summary_asbr_lsa_new(struct ospf_area *area,
lsah->length = htons(length);

/* Create OSPF LSA instance. */
new = ospf_lsa_new();
new = ospf_lsa_new_and_data(length);
new->area = area;
SET_FLAG(new->flags, OSPF_LSA_SELF | OSPF_LSA_SELF_CHECKED);
new->vrf_id = area->ospf->vrf_id;

/* Copy LSA to store. */
new->data = ospf_lsa_data_new(length);
memcpy(new->data, lsah, length);
stream_free(s);

@@ -1629,14 +1629,13 @@ static struct ospf_lsa *ospf_external_lsa_new(struct ospf *ospf,
lsah->length = htons(length);

/* Now, create OSPF LSA instance. */
new = ospf_lsa_new();
new = ospf_lsa_new_and_data(length);
new->area = NULL;
SET_FLAG(new->flags,
OSPF_LSA_SELF | OSPF_LSA_APPROVED | OSPF_LSA_SELF_CHECKED);
new->vrf_id = ospf->vrf_id;

/* Copy LSA data to store, discard stream. */
new->data = ospf_lsa_data_new(length);
memcpy(new->data, lsah, length);
stream_free(s);

@@ -235,6 +235,7 @@ extern int ospf_check_nbr_status(struct ospf *);

/* Prototype for LSA primitive. */
extern struct ospf_lsa *ospf_lsa_new(void);
extern struct ospf_lsa *ospf_lsa_new_and_data(size_t size);
extern struct ospf_lsa *ospf_lsa_dup(struct ospf_lsa *);
extern void ospf_lsa_free(struct ospf_lsa *);
extern struct ospf_lsa *ospf_lsa_lock(struct ospf_lsa *);
@@ -1742,7 +1742,7 @@ static struct list *ospf_ls_upd_list_lsa(struct ospf_neighbor *nbr,
}

/* Create OSPF LSA instance. */
lsa = ospf_lsa_new();
lsa = ospf_lsa_new_and_data(length);

lsa->vrf_id = oi->ospf->vrf_id;
/* We may wish to put some error checking if type NSSA comes in
@@ -1761,7 +1761,6 @@ static struct list *ospf_ls_upd_list_lsa(struct ospf_neighbor *nbr,
break;
}

lsa->data = ospf_lsa_data_new(length);
memcpy(lsa->data, lsah, length);

if (IS_DEBUG_OSPF_EVENT)
@@ -775,18 +775,7 @@ static struct ospf_lsa *ospf_router_info_lsa_new()
lsah->length = htons(length);

/* Now, create an OSPF LSA instance. */
if ((new = ospf_lsa_new()) == NULL) {
zlog_warn("ospf_router_info_lsa_new: ospf_lsa_new() ?");
stream_free(s);
return NULL;
}
if ((new->data = ospf_lsa_data_new(length)) == NULL) {
zlog_warn("ospf_router_info_lsa_new: ospf_lsa_data_new() ?");
ospf_lsa_unlock(&new);
new = NULL;
stream_free(s);
return new;
}
new = ospf_lsa_new_and_data(length);

new->area = OspfRI.area; /* Area must be null if the Opaque type is AS
scope, fulfill otherwise */
@@ -1201,18 +1201,7 @@ static struct ospf_lsa *ospf_mpls_te_lsa_new(struct ospf *ospf,
lsah->length = htons(length);

/* Now, create an OSPF LSA instance. */
if ((new = ospf_lsa_new()) == NULL) {
zlog_warn("%s: ospf_lsa_new() ?", __func__);
stream_free(s);
return NULL;
}
if ((new->data = ospf_lsa_data_new(length)) == NULL) {
zlog_warn("%s: ospf_lsa_data_new() ?", __func__);
ospf_lsa_unlock(&new);
new = NULL;
stream_free(s);
return new;
}
new = ospf_lsa_new_and_data(length);

new->vrf_id = ospf->vrf_id;
if (area && area->ospf)

0 comments on commit 9e32cce

Please sign in to comment.
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.