]> git.proxmox.com Git - mirror_frr.git/blobdiff - bgpd/bgpd.h
bgpd: Re-use TX Addpath IDs where possible
[mirror_frr.git] / bgpd / bgpd.h
index e14b0f39e027fe4426d7a16f8458a54f2170fac2..5ee54e3c706775a84bc08d475bd897faa7cb0e0f 100644 (file)
@@ -39,6 +39,7 @@
 #include "bitfield.h"
 #include "vxlan.h"
 #include "bgp_labelpool.h"
+#include "bgp_addpath_types.h"
 
 #define BGP_MAX_HOSTNAME 64    /* Linux max, is larger than most other sys */
 #define BGP_PEER_MAX_HASH_SIZE 16384
@@ -462,8 +463,7 @@ struct bgp {
        /* Auto-shutdown new peers */
        bool autoshutdown;
 
-       uint32_t addpath_tx_id;
-       int addpath_tx_used[AFI_MAX][SAFI_MAX];
+       struct bgp_addpath_bgp_data tx_addpath;
 
 #if ENABLE_BGP_VNC
        struct rfapi_cfg *rfapi_cfg;
@@ -938,12 +938,12 @@ struct peer {
 #define PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE (1 << 19) /* remove-private-as replace-as */
 #define PEER_FLAG_AS_OVERRIDE               (1 << 20) /* as-override */
 #define PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE (1 << 21) /* remove-private-as all replace-as */
-#define PEER_FLAG_ADDPATH_TX_ALL_PATHS      (1 << 22) /* addpath-tx-all-paths */
-#define PEER_FLAG_ADDPATH_TX_BESTPATH_PER_AS (1 << 23) /* addpath-tx-bestpath-per-AS */
 #define PEER_FLAG_WEIGHT                    (1 << 24) /* weight */
 #define PEER_FLAG_ALLOWAS_IN_ORIGIN         (1 << 25) /* allowas-in origin */
 #define PEER_FLAG_SEND_LARGE_COMMUNITY      (1 << 26) /* Send large Communities */
 
+       enum bgp_addpath_strat addpath_type[AFI_MAX][SAFI_MAX];
+
        /* MD5 password */
        char *password;
 
@@ -1466,6 +1466,14 @@ typedef enum {
        BGP_POLICY_DISTRIBUTE_LIST,
 } bgp_policy_type_e;
 
+/* peer_flag_change_type. */
+enum peer_change_type {
+       peer_change_none,
+       peer_change_reset,
+       peer_change_reset_in,
+       peer_change_reset_out,
+};
+
 extern struct bgp_master *bm;
 extern unsigned int multipath_num;
 
@@ -1597,6 +1605,8 @@ extern int peer_af_flag_unset(struct peer *, afi_t, safi_t, uint32_t);
 extern int peer_af_flag_check(struct peer *, afi_t, safi_t, uint32_t);
 extern void peer_af_flag_inherit(struct peer *peer, afi_t afi, safi_t safi,
                                 uint32_t flag);
+extern void peer_change_action(struct peer *peer, afi_t afi, safi_t safi,
+                              enum peer_change_type type);
 
 extern int peer_ebgp_multihop_set(struct peer *, int);
 extern int peer_ebgp_multihop_unset(struct peer *);