mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-09 01:57:26 +00:00
Fixes from Amir to merge apiserver with zebra.org changes
This commit is contained in:
parent
1cc8f7624c
commit
7d5e26814f
@ -85,12 +85,8 @@ ospf_apiserver_if_lookup_by_addr (struct in_addr address)
|
|||||||
{
|
{
|
||||||
listnode node;
|
listnode node;
|
||||||
struct ospf_interface *oi;
|
struct ospf_interface *oi;
|
||||||
struct ospf *ospf;
|
|
||||||
|
|
||||||
ospf = ospf_get ();
|
for (node = listhead (ospf_top->oiflist); node; nextnode (node))
|
||||||
assert (ospf);
|
|
||||||
|
|
||||||
for (node = listhead (ospf->oiflist); node; nextnode (node))
|
|
||||||
{
|
{
|
||||||
if ((oi = getdata (node)) != NULL
|
if ((oi = getdata (node)) != NULL
|
||||||
&& oi->type != OSPF_IFTYPE_VIRTUALLINK)
|
&& oi->type != OSPF_IFTYPE_VIRTUALLINK)
|
||||||
@ -107,12 +103,8 @@ ospf_apiserver_if_lookup_by_ifp (struct interface *ifp)
|
|||||||
{
|
{
|
||||||
listnode node;
|
listnode node;
|
||||||
struct ospf_interface *oi;
|
struct ospf_interface *oi;
|
||||||
struct ospf *ospf;
|
|
||||||
|
|
||||||
ospf = ospf_get ();
|
for (node = listhead (ospf_top->oiflist); node; nextnode (node))
|
||||||
assert (ospf);
|
|
||||||
|
|
||||||
for (node = listhead (ospf->oiflist); node; nextnode (node))
|
|
||||||
{
|
{
|
||||||
if ((oi = getdata (node)) && oi->ifp == ifp)
|
if ((oi = getdata (node)) && oi->ifp == ifp)
|
||||||
{
|
{
|
||||||
@ -1461,6 +1453,27 @@ ospf_apiserver_opaque_lsa_new (struct ospf_area *area,
|
|||||||
u_char options = 0x0;
|
u_char options = 0x0;
|
||||||
u_int16_t length;
|
u_int16_t length;
|
||||||
|
|
||||||
|
struct ospf *ospf = ospf_top;
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
struct ospf *ospf = NULL;
|
||||||
|
|
||||||
|
switch(protolsa->type)
|
||||||
|
{
|
||||||
|
case OSPF_OPAQUE_LINK_LSA:
|
||||||
|
ospf = oi_to_top (oi); /* ospf_opaque.c */
|
||||||
|
break;
|
||||||
|
case OSPF_OPAQUE_AREA_LSA:
|
||||||
|
ospf = area->ospf;
|
||||||
|
break;
|
||||||
|
case OSPF_OPAQUE_AS_LSA:
|
||||||
|
ospf = ospf_top; /* XXX */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
assert(ospf);
|
||||||
|
|
||||||
/* Create a stream for internal opaque LSA */
|
/* Create a stream for internal opaque LSA */
|
||||||
if ((s = stream_new (OSPF_MAX_LSA_SIZE)) == NULL)
|
if ((s = stream_new (OSPF_MAX_LSA_SIZE)) == NULL)
|
||||||
{
|
{
|
||||||
@ -1491,7 +1504,7 @@ ospf_apiserver_opaque_lsa_new (struct ospf_area *area,
|
|||||||
|
|
||||||
/* Set opaque-LSA header fields. */
|
/* Set opaque-LSA header fields. */
|
||||||
lsa_header_set (s, options, protolsa->type, protolsa->id,
|
lsa_header_set (s, options, protolsa->type, protolsa->id,
|
||||||
area->ospf->router_id);
|
ospf->router_id);
|
||||||
|
|
||||||
/* Set opaque-LSA body fields. */
|
/* Set opaque-LSA body fields. */
|
||||||
stream_put (s, ((u_char *) protolsa) + sizeof (struct lsa_header),
|
stream_put (s, ((u_char *) protolsa) + sizeof (struct lsa_header),
|
||||||
@ -1587,7 +1600,6 @@ ospf_apiserver_handle_originate_request (struct ospf_apiserver *apiserv,
|
|||||||
{
|
{
|
||||||
struct msg_originate_request *omsg;
|
struct msg_originate_request *omsg;
|
||||||
struct lsa_header *data;
|
struct lsa_header *data;
|
||||||
struct ospf *ospf;
|
|
||||||
struct ospf_lsa *new;
|
struct ospf_lsa *new;
|
||||||
struct ospf_lsa *old;
|
struct ospf_lsa *old;
|
||||||
struct ospf_area *area = NULL;
|
struct ospf_area *area = NULL;
|
||||||
@ -1597,9 +1609,6 @@ ospf_apiserver_handle_originate_request (struct ospf_apiserver *apiserv,
|
|||||||
int ready = 0;
|
int ready = 0;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
ospf = ospf_get ();
|
|
||||||
assert (ospf);
|
|
||||||
|
|
||||||
/* Extract opaque LSA data from message */
|
/* Extract opaque LSA data from message */
|
||||||
omsg = (struct msg_originate_request *) STREAM_DATA (msg->s);
|
omsg = (struct msg_originate_request *) STREAM_DATA (msg->s);
|
||||||
data = &omsg->data;
|
data = &omsg->data;
|
||||||
@ -1620,7 +1629,7 @@ ospf_apiserver_handle_originate_request (struct ospf_apiserver *apiserv,
|
|||||||
lsdb = area->lsdb;
|
lsdb = area->lsdb;
|
||||||
break;
|
break;
|
||||||
case OSPF_OPAQUE_AREA_LSA:
|
case OSPF_OPAQUE_AREA_LSA:
|
||||||
area = ospf_area_lookup_by_area_id (ospf, omsg->area_id);
|
area = ospf_area_lookup_by_area_id (ospf_top, omsg->area_id);
|
||||||
if (!area)
|
if (!area)
|
||||||
{
|
{
|
||||||
zlog_warn ("apiserver_originate: unknown area %s",
|
zlog_warn ("apiserver_originate: unknown area %s",
|
||||||
@ -1744,19 +1753,21 @@ ospf_apiserver_flood_opaque_lsa (struct ospf_lsa *lsa)
|
|||||||
ospf_flood_through_area (lsa->area, NULL /*nbr */ , lsa);
|
ospf_flood_through_area (lsa->area, NULL /*nbr */ , lsa);
|
||||||
break;
|
break;
|
||||||
case OSPF_OPAQUE_AS_LSA:
|
case OSPF_OPAQUE_AS_LSA:
|
||||||
|
{
|
||||||
/* Increment counters? XXX */
|
/* Increment counters? XXX */
|
||||||
|
|
||||||
/* Flood LSA through AS. */
|
/* Flood LSA through AS. */
|
||||||
ospf_flood_through_as (lsa->oi->ospf, NULL /*nbr */ , lsa);
|
ospf_flood_through_as (ospf_top, NULL /*nbr */ , lsa);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
ospf_apiserver_originate1 (struct ospf_lsa *lsa)
|
ospf_apiserver_originate1 (struct ospf_lsa *lsa)
|
||||||
{
|
{
|
||||||
/* Install this LSA into LSDB. */
|
/* Install this LSA into LSDB. */
|
||||||
if (ospf_lsa_install (lsa->oi->ospf, lsa->oi, lsa) == NULL)
|
if (ospf_lsa_install (ospf_top, lsa->oi, lsa) == NULL)
|
||||||
{
|
{
|
||||||
zlog_warn ("ospf_apiserver_originate1: ospf_lsa_install failed");
|
zlog_warn ("ospf_apiserver_originate1: ospf_lsa_install failed");
|
||||||
return -1;
|
return -1;
|
||||||
@ -1866,7 +1877,7 @@ ospf_apiserver_lsa_refresher (struct ospf_lsa *lsa)
|
|||||||
SET_FLAG (new->flags, OSPF_LSA_SELF);
|
SET_FLAG (new->flags, OSPF_LSA_SELF);
|
||||||
|
|
||||||
/* Install LSA into LSDB. */
|
/* Install LSA into LSDB. */
|
||||||
if (ospf_lsa_install (new->area->ospf, new->oi, new) == NULL)
|
if (ospf_lsa_install (ospf_top, new->oi, new) == NULL)
|
||||||
{
|
{
|
||||||
zlog_warn ("ospf_apiserver_lsa_refresher: ospf_lsa_install failed");
|
zlog_warn ("ospf_apiserver_lsa_refresher: ospf_lsa_install failed");
|
||||||
ospf_lsa_free (new);
|
ospf_lsa_free (new);
|
||||||
@ -1903,16 +1914,12 @@ ospf_apiserver_handle_delete_request (struct ospf_apiserver *apiserv,
|
|||||||
struct msg *msg)
|
struct msg *msg)
|
||||||
{
|
{
|
||||||
struct msg_delete_request *dmsg;
|
struct msg_delete_request *dmsg;
|
||||||
struct ospf *ospf;
|
|
||||||
struct ospf_lsa *old;
|
struct ospf_lsa *old;
|
||||||
struct ospf_area *area = NULL;
|
struct ospf_area *area = NULL;
|
||||||
struct in_addr id;
|
struct in_addr id;
|
||||||
int lsa_type, opaque_type;
|
int lsa_type, opaque_type;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
ospf = ospf_get ();
|
|
||||||
assert(ospf);
|
|
||||||
|
|
||||||
/* Extract opaque LSA from message */
|
/* Extract opaque LSA from message */
|
||||||
dmsg = (struct msg_delete_request *) STREAM_DATA (msg->s);
|
dmsg = (struct msg_delete_request *) STREAM_DATA (msg->s);
|
||||||
|
|
||||||
@ -1921,7 +1928,7 @@ ospf_apiserver_handle_delete_request (struct ospf_apiserver *apiserv,
|
|||||||
{
|
{
|
||||||
case OSPF_OPAQUE_LINK_LSA:
|
case OSPF_OPAQUE_LINK_LSA:
|
||||||
case OSPF_OPAQUE_AREA_LSA:
|
case OSPF_OPAQUE_AREA_LSA:
|
||||||
area = ospf_area_lookup_by_area_id (ospf, dmsg->area_id);
|
area = ospf_area_lookup_by_area_id (ospf_top, dmsg->area_id);
|
||||||
if (!area)
|
if (!area)
|
||||||
{
|
{
|
||||||
zlog_warn ("ospf_apiserver_lsa_delete: unknown area %s",
|
zlog_warn ("ospf_apiserver_lsa_delete: unknown area %s",
|
||||||
|
Loading…
Reference in New Issue
Block a user