]> git.proxmox.com Git - mirror_frr.git/blobdiff - bgpd/bgp_attr.h
bgpd: IPv6 session flapping with MP_REACH_NLRI and 0.0.0.0 in NEXT_HOP attribute
[mirror_frr.git] / bgpd / bgp_attr.h
index f17c2a68e4533780614a99586205adfb62667412..f6b23a36bd6e054d912a74726d7c71c0edd26a03 100644 (file)
@@ -92,12 +92,6 @@ struct bgp_tea_options {
 
 #endif
 
-/* Overlay Index Info */
-struct overlay_index {
-       struct eth_segment_id eth_s_id;
-       union gw_addr gw_ip;
-};
-
 enum pta_type {
        PMSI_TNLTYPE_NO_INFO = 0,
        PMSI_TNLTYPE_RSVP_TE_P2MP,
@@ -185,6 +179,9 @@ struct attr {
        /* Flag for default gateway extended community in EVPN */
        uint8_t default_gw;
 
+       /* NA router flag (R-bit) support in EVPN */
+       uint8_t router_flag;
+
        /* route tag */
        route_tag_t tag;
 
@@ -201,7 +198,7 @@ struct attr {
        struct bgp_attr_encap_subtlv *vnc_subtlvs; /* VNC-specific */
 #endif
        /* EVPN */
-       struct overlay_index evpn_overlay;
+       struct bgp_route_evpn evpn_overlay;
 
        /* EVPN MAC Mobility sequence number, if any. */
        uint32_t mm_seqnum;
@@ -269,10 +266,13 @@ extern void bgp_attr_unintern_sub(struct attr *);
 extern void bgp_attr_unintern(struct attr **);
 extern void bgp_attr_flush(struct attr *);
 extern struct attr *bgp_attr_default_set(struct attr *attr, uint8_t);
-extern struct attr *bgp_attr_aggregate_intern(struct bgp *, uint8_t,
-                                             struct aspath *,
-                                             struct community *, int as_set,
-                                             uint8_t);
+extern struct attr *bgp_attr_aggregate_intern(struct bgp *bgp, uint8_t origin,
+                                             struct aspath *aspath,
+                                             struct community *community,
+                                             struct ecommunity *ecommunity,
+                                             struct lcommunity *lcommunity,
+                                             int as_set,
+                                             uint8_t atomic_aggregate);
 extern bgp_size_t bgp_packet_attribute(struct bgp *bgp, struct peer *,
                                       struct stream *, struct attr *,
                                       struct bpacket_attr_vec_arr *vecarr,
@@ -281,7 +281,7 @@ extern bgp_size_t bgp_packet_attribute(struct bgp *bgp, struct peer *,
                                       mpls_label_t *, uint32_t, int, uint32_t);
 extern void bgp_dump_routes_attr(struct stream *, struct attr *,
                                 struct prefix *);
-extern int attrhash_cmp(const void *, const void *);
+extern bool attrhash_cmp(const void *arg1, const void *arg2);
 extern unsigned int attrhash_key_make(void *);
 extern void attr_show_all(struct vty *);
 extern unsigned long int attr_count(void);
@@ -344,6 +344,9 @@ extern void bgp_packet_mpunreach_prefix(struct stream *s, struct prefix *p,
                                        uint32_t, int, uint32_t, struct attr *);
 extern void bgp_packet_mpunreach_end(struct stream *s, size_t attrlen_pnt);
 
+extern bgp_attr_parse_ret_t bgp_attr_nexthop_valid(struct peer *peer,
+                                                  struct attr *attr);
+
 static inline int bgp_rmap_nhop_changed(uint32_t out_rmap_flags,
                                        uint32_t in_rmap_flags)
 {