]> git.proxmox.com Git - mirror_frr.git/blobdiff - bgpd/bgpd.h
Merge pull request #5793 from ton31337/fix/formatting_show_bgp_summary_failed
[mirror_frr.git] / bgpd / bgpd.h
index 04355450d7ab42f3d537e2fdcba94e0be9fba6c4..548dfe4683637fb609aca8f26733aaaa3261444f 100644 (file)
@@ -238,11 +238,11 @@ enum bgp_instance_type {
        BGP_INSTANCE_TYPE_VIEW
 };
 
-#define BGP_SEND_EOR(bgp, afi, safi)                           \
-       (!bgp_flag_check(bgp, BGP_FLAG_GR_DISABLE_EOR) &&       \
-       ((bgp->gr_info[afi][safi].t_select_deferral == NULL) || \
-        (bgp->gr_info[afi][safi].eor_required ==               \
-         bgp->gr_info[afi][safi].eor_received)))
+#define BGP_SEND_EOR(bgp, afi, safi)                                           \
+       (!CHECK_FLAG(bgp->flags, BGP_FLAG_GR_DISABLE_EOR)                      \
+        && ((bgp->gr_info[afi][safi].t_select_deferral == NULL)               \
+            || (bgp->gr_info[afi][safi].eor_required                          \
+                == bgp->gr_info[afi][safi].eor_received)))
 
 /* BGP GR Global ds */
 
@@ -426,7 +426,7 @@ struct bgp {
 #define BGP_FLAG_GR_DISABLE_EOR           (1 << 24)
 
        enum global_mode GLOBAL_GR_FSM[BGP_GLOBAL_GR_MODE]
-                               [BGP_GLOBAL_GR_EVENT_CMD];
+                                     [BGP_GLOBAL_GR_EVENT_CMD];
        enum global_mode global_gr_present_state;
 
        /* This variable stores the current Graceful Restart state of Zebra
@@ -659,12 +659,12 @@ DECLARE_HOOK(bgp_inst_config_write,
                (struct bgp *bgp, struct vty *vty),
                (bgp, vty))
 
-       /* Thread callback information */
-       struct afi_safi_info {
-               afi_t afi;
-               safi_t safi;
-               struct bgp *bgp;
-       };
+/* Thread callback information */
+struct afi_safi_info {
+       afi_t afi;
+       safi_t safi;
+       struct bgp *bgp;
+};
 
 #define BGP_ROUTE_ADV_HOLD(bgp) (bgp->main_peers_update_hold)
 
@@ -673,8 +673,8 @@ DECLARE_HOOK(bgp_inst_config_write,
         || (bgp->inst_type == BGP_INSTANCE_TYPE_VRF                           \
             && bgp->vrf_id != VRF_UNKNOWN))
 
-#define BGP_SELECT_DEFER_DISABLE(bgp)                 \
-       (bgp_flag_check(bgp, BGP_FLAG_SELECT_DEFER_DISABLE))
+#define BGP_SELECT_DEFER_DISABLE(bgp)                                          \
+       (CHECK_FLAG(bgp->flags, BGP_FLAG_SELECT_DEFER_DISABLE))
 
 /* BGP peer-group support. */
 struct peer_group {
@@ -723,7 +723,9 @@ struct bgp_nexthop {
 #define RMAP_OUT 1
 #define RMAP_MAX 2
 
-#define BGP_DEFAULT_TTL 1
+#define BGP_DEFAULT_TTL         1
+#define BGP_GTSM_HOPS_DISABLED  0
+#define BGP_GTSM_HOPS_CONNECTED 1
 
 #include "filter.h"
 
@@ -1321,10 +1323,10 @@ struct peer {
 #define PEER_DOWN_REMOTE_AS_CHANGE       2 /* neighbor remote-as command */
 #define PEER_DOWN_LOCAL_AS_CHANGE        3 /* neighbor local-as command */
 #define PEER_DOWN_CLID_CHANGE            4 /* bgp cluster-id command */
-#define PEER_DOWN_CONFED_ID_CHANGE       5 /* bgp confederation identifier command */
+#define PEER_DOWN_CONFED_ID_CHANGE       5 /* bgp confederation id command */
 #define PEER_DOWN_CONFED_PEER_CHANGE     6 /* bgp confederation peer command */
-#define PEER_DOWN_RR_CLIENT_CHANGE       7 /* neighbor route-reflector-client command */
-#define PEER_DOWN_RS_CLIENT_CHANGE       8 /* neighbor route-server-client command */
+#define PEER_DOWN_RR_CLIENT_CHANGE       7 /* neighbor rr-client command */
+#define PEER_DOWN_RS_CLIENT_CHANGE       8 /* neighbor rs-client command */
 #define PEER_DOWN_UPDATE_SOURCE_CHANGE   9 /* neighbor update-source command */
 #define PEER_DOWN_AF_ACTIVATE           10 /* neighbor activate command */
 #define PEER_DOWN_USER_SHUTDOWN         11 /* neighbor shutdown command */
@@ -1348,6 +1350,12 @@ struct peer {
 #define PEER_DOWN_VRF_UNINIT            29 /* Associated VRF is not init yet */
 #define PEER_DOWN_NOAFI_ACTIVATED       30 /* No AFI/SAFI activated for peer */
 #define PEER_DOWN_AS_SETS_REJECT        31 /* Reject routes with AS_SET */
+#define PEER_DOWN_WAITING_OPEN          32 /* Waiting for open to succeed */
+       /*
+        * Remember to update peer_down_str in bgp_fsm.c when you add
+        * a new value to the last_reset reason
+        */
+
        size_t last_reset_cause_size;
        uint8_t last_reset_cause[BGP_MAX_PACKET_SIZE];
 
@@ -1757,10 +1765,6 @@ extern int bgp_delete(struct bgp *);
 extern int bgp_handle_socket(struct bgp *bgp, struct vrf *vrf,
                             vrf_id_t old_vrf_id, bool create);
 
-extern int bgp_flag_set(struct bgp *, int);
-extern int bgp_flag_unset(struct bgp *, int);
-extern int bgp_flag_check(struct bgp *, int);
-
 extern void bgp_router_id_zebra_bump(vrf_id_t, const struct prefix *);
 extern int bgp_router_id_static_set(struct bgp *, struct in_addr);
 
@@ -1921,29 +1925,25 @@ int bgp_global_gr_init(struct bgp *bgp);
 int bgp_peer_gr_init(struct peer *peer);
 
 
-#define BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA( \
-               _bgp, _peer_list) \
-do { \
-       struct peer *peer_loop; \
-       bool gr_router_detected = false; \
-       struct listnode *node = {0}; \
-       struct listnode *nnode = {0}; \
-       for (ALL_LIST_ELEMENTS( \
-                               _peer_list, node, \
-                               nnode, peer_loop)) { \
-               if (CHECK_FLAG( \
-                               peer_loop->flags, \
-                               PEER_FLAG_GRACEFUL_RESTART)) \
-                       gr_router_detected = true; \
-       } \
-       if (gr_router_detected && \
-                       _bgp->present_zebra_gr_state == ZEBRA_GR_DISABLE) { \
-               bgp_zebra_send_capabilities(_bgp, false); \
-       } else if (!gr_router_detected && \
-                       _bgp->present_zebra_gr_state == ZEBRA_GR_ENABLE) { \
-               bgp_zebra_send_capabilities(_bgp, true); \
-       } \
-} while (0)
+#define BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA(_bgp, _peer_list)    \
+       do {                                                                   \
+               struct peer *peer_loop;                                        \
+               bool gr_router_detected = false;                               \
+               struct listnode *node = {0};                                   \
+               for (ALL_LIST_ELEMENTS_RO(_peer_list, node, peer_loop)) {      \
+                       if (CHECK_FLAG(peer_loop->flags,                       \
+                                      PEER_FLAG_GRACEFUL_RESTART))            \
+                               gr_router_detected = true;                     \
+               }                                                              \
+               if (gr_router_detected                                         \
+                   && _bgp->present_zebra_gr_state == ZEBRA_GR_DISABLE) {     \
+                       bgp_zebra_send_capabilities(_bgp, false);              \
+               } else if (!gr_router_detected                                 \
+                          && _bgp->present_zebra_gr_state                     \
+                                     == ZEBRA_GR_ENABLE) {                    \
+                       bgp_zebra_send_capabilities(_bgp, true);               \
+               }                                                              \
+       } while (0)
 
 static inline struct bgp *bgp_lock(struct bgp *bgp)
 {