X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=bgpd%2Fbgp_nexthop.h;h=af4c0bc0470595c6feee0af243d2516c623b3151;hb=f94ed830df98218447f00b97f856de811bfcc4a2;hp=b482778fdfd427bb7787f3e2f2f99dbb6188994f;hpb=8941a38520ca0c162015fd137311b2b9c6633cbc;p=mirror_frr.git diff --git a/bgpd/bgp_nexthop.h b/bgpd/bgp_nexthop.h index b482778fd..af4c0bc04 100644 --- a/bgpd/bgp_nexthop.h +++ b/bgpd/bgp_nexthop.h @@ -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))) @@ -38,13 +39,13 @@ /* BGP nexthop cache value structure. */ struct bgp_nexthop_cache { /* IGP route's metric. */ - u_int32_t metric; + uint32_t metric; /* Nexthop number and nexthop linked list.*/ - u_char nexthop_num; + uint8_t nexthop_num; struct nexthop *nexthop; time_t last_update; - u_int16_t flags; + uint16_t flags; #define BGP_NEXTHOP_VALID (1 << 0) #define BGP_NEXTHOP_REGISTERED (1 << 1) @@ -52,8 +53,9 @@ 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) - u_int16_t change_flags; + uint16_t change_flags; #define BGP_NEXTHOP_CHANGED (1 << 0) #define BGP_NEXTHOP_METRIC_CHANGED (1 << 1) @@ -61,30 +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_multiaccess_check_v4(struct in_addr, struct peer *); +extern int bgp_subgrp_multiaccess_check_v4(struct in_addr nexthop, + struct update_subgroup *subgrp); +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); @@ -99,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 */