mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-08 12:49:18 +00:00
bgpd: backpressure - Add a typesafe list for Zebra Announcement
Modify the bgp master to hold a type safe list for bgp_dests that need to be passed to zebra. Future commits will use this. Ticket: #3390099 Signed-off-by: Donald Sharp <sharpd@nvidia.com> Signed-off-by: Rajasekar Raja <rajasekarr@nvidia.com>
This commit is contained in:
parent
ffab0d7fbc
commit
705fed7ca8
@ -207,6 +207,8 @@ static __attribute__((__noreturn__)) void bgp_exit(int status)
|
|||||||
bgp_evpn_mh_finish();
|
bgp_evpn_mh_finish();
|
||||||
bgp_nhg_finish();
|
bgp_nhg_finish();
|
||||||
|
|
||||||
|
zebra_announce_fini(&bm->zebra_announce_head);
|
||||||
|
|
||||||
/* reverse bgp_dump_init */
|
/* reverse bgp_dump_init */
|
||||||
bgp_dump_finish();
|
bgp_dump_finish();
|
||||||
|
|
||||||
|
@ -76,6 +76,8 @@ struct bgp_dest {
|
|||||||
|
|
||||||
STAILQ_ENTRY(bgp_dest) pq;
|
STAILQ_ENTRY(bgp_dest) pq;
|
||||||
|
|
||||||
|
struct zebra_announce_item zai;
|
||||||
|
|
||||||
uint64_t version;
|
uint64_t version;
|
||||||
|
|
||||||
mpls_label_t local_label;
|
mpls_label_t local_label;
|
||||||
@ -97,6 +99,8 @@ struct bgp_dest {
|
|||||||
enum bgp_path_selection_reason reason;
|
enum bgp_path_selection_reason reason;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
DECLARE_LIST(zebra_announce, struct bgp_dest, zai);
|
||||||
|
|
||||||
extern void bgp_delete_listnode(struct bgp_dest *dest);
|
extern void bgp_delete_listnode(struct bgp_dest *dest);
|
||||||
/*
|
/*
|
||||||
* bgp_table_iter_t
|
* bgp_table_iter_t
|
||||||
|
@ -8289,6 +8289,8 @@ void bgp_master_init(struct event_loop *master, const int buffer_size,
|
|||||||
memset(&bgp_master, 0, sizeof(bgp_master));
|
memset(&bgp_master, 0, sizeof(bgp_master));
|
||||||
|
|
||||||
bm = &bgp_master;
|
bm = &bgp_master;
|
||||||
|
|
||||||
|
zebra_announce_init(&bm->zebra_announce_head);
|
||||||
bm->bgp = list_new();
|
bm->bgp = list_new();
|
||||||
bm->listen_sockets = list_new();
|
bm->listen_sockets = list_new();
|
||||||
bm->port = BGP_PORT_DEFAULT;
|
bm->port = BGP_PORT_DEFAULT;
|
||||||
|
@ -18,6 +18,8 @@
|
|||||||
#include "iana_afi.h"
|
#include "iana_afi.h"
|
||||||
#include "asn.h"
|
#include "asn.h"
|
||||||
|
|
||||||
|
PREDECL_LIST(zebra_announce);
|
||||||
|
|
||||||
/* For union sockunion. */
|
/* For union sockunion. */
|
||||||
#include "queue.h"
|
#include "queue.h"
|
||||||
#include "sockunion.h"
|
#include "sockunion.h"
|
||||||
@ -175,6 +177,9 @@ struct bgp_master {
|
|||||||
|
|
||||||
bool v6_with_v4_nexthops;
|
bool v6_with_v4_nexthops;
|
||||||
|
|
||||||
|
/* To preserve ordering of installations into zebra across all Vrfs */
|
||||||
|
struct zebra_announce_head zebra_announce_head;
|
||||||
|
|
||||||
QOBJ_FIELDS;
|
QOBJ_FIELDS;
|
||||||
};
|
};
|
||||||
DECLARE_QOBJ_TYPE(bgp_master);
|
DECLARE_QOBJ_TYPE(bgp_master);
|
||||||
|
Loading…
Reference in New Issue
Block a user