]> git.proxmox.com Git - mirror_frr.git/blobdiff - bgpd/bgp_nexthop.h
Merge pull request #5793 from ton31337/fix/formatting_show_bgp_summary_failed
[mirror_frr.git] / bgpd / bgp_nexthop.h
index ed772868eb00d3ecaa1012b4f97b1912e77f5d5c..af4c0bc0470595c6feee0af243d2516c623b3151 100644 (file)
@@ -29,6 +29,7 @@
        (((nexthop_len) == 4 || (nexthop_len) == 12                            \
                  ? AF_INET                                                    \
                  : ((nexthop_len) == 16 || (nexthop_len) == 24                \
+                                    || (nexthop_len) == 32                    \
                                     || (nexthop_len) == 48                    \
                             ? AF_INET6                                        \
                             : AF_UNSPEC)))
@@ -52,6 +53,7 @@ struct bgp_nexthop_cache {
 #define BGP_NEXTHOP_PEER_NOTIFIED     (1 << 3)
 #define BGP_STATIC_ROUTE              (1 << 4)
 #define BGP_STATIC_ROUTE_EXACT_MATCH  (1 << 5)
+#define BGP_NEXTHOP_LABELED_VALID     (1 << 6)
 
        uint16_t change_flags;
 
@@ -61,32 +63,34 @@ struct bgp_nexthop_cache {
 
        struct bgp_node *node;
        void *nht_info; /* In BGP, peer session */
-       LIST_HEAD(path_list, bgp_info) paths;
+       LIST_HEAD(path_list, bgp_path_info) paths;
        unsigned int path_count;
        struct bgp *bgp;
 };
 
-/* BGP own address structure */
-struct bgp_addr {
-       struct in_addr addr;
-       int refcnt;
-};
-
 /* Own tunnel-ip address structure */
 struct tip_addr {
        struct in_addr addr;
        int refcnt;
 };
 
-extern int bgp_nexthop_lookup(afi_t, struct peer *peer, struct bgp_info *,
-                             int *, int *);
+struct bgp_addrv6 {
+       struct in6_addr addrv6;
+       struct list *ifp_name_list;
+};
+
 extern void bgp_connected_add(struct bgp *bgp, struct connected *c);
 extern void bgp_connected_delete(struct bgp *bgp, struct connected *c);
 extern int bgp_subgrp_multiaccess_check_v4(struct in_addr nexthop,
                                           struct update_subgroup *subgrp);
-extern int bgp_multiaccess_check_v4(struct in_addr, struct peer *);
+extern int bgp_subgrp_multiaccess_check_v6(struct in6_addr nexthop,
+                                          struct update_subgroup *subgrp);
+extern int bgp_multiaccess_check_v4(struct in_addr nexthop, struct peer *peer);
+extern int bgp_multiaccess_check_v6(struct in6_addr nexthop, struct peer *peer);
 extern int bgp_config_write_scan_time(struct vty *);
-extern int bgp_nexthop_self(struct bgp *, struct in_addr);
+extern int bgp_nexthop_self(struct bgp *bgp, afi_t afi, uint8_t type,
+                               uint8_t sub_type, struct attr *attr,
+                               struct bgp_node *rn);
 extern struct bgp_nexthop_cache *bnc_new(void);
 extern void bnc_free(struct bgp_nexthop_cache *bnc);
 extern void bnc_nexthop_free(struct bgp_nexthop_cache *bnc);
@@ -101,4 +105,5 @@ extern void bgp_tip_del(struct bgp *bgp, struct in_addr *tip);
 extern void bgp_tip_hash_init(struct bgp *bgp);
 extern void bgp_tip_hash_destroy(struct bgp *bgp);
 
+extern void bgp_nexthop_show_address_hash(struct vty *vty, struct bgp *bgp);
 #endif /* _QUAGGA_BGP_NEXTHOP_H */