bgpd: encap: add attribute handling
Signed-off-by: Lou Berger <lberger@labn.net>
Reviewed-by: David Lamparter <equinox@opensourcerouting.org>
diff --git a/bgpd/bgp_attr.h b/bgpd/bgp_attr.h
index 6fdf1c1..6a134de 100644
--- a/bgpd/bgp_attr.h
+++ b/bgpd/bgp_attr.h
@@ -47,6 +47,13 @@
#define BGP_ATTR_MIN_LEN 3 /* Attribute flag, type length. */
#define BGP_ATTR_DEFAULT_WEIGHT 32768
+struct bgp_attr_encap_subtlv {
+ struct bgp_attr_encap_subtlv *next; /* for chaining */
+ uint16_t type;
+ uint16_t length;
+ uint8_t value[1]; /* will be extended */
+};
+
/* Additional/uncommon BGP attributes.
* lazily allocated as and when a struct attr
* requires it.
@@ -85,6 +92,9 @@
/* MP Nexthop length */
u_char mp_nexthop_len;
+
+ uint16_t encap_tunneltype; /* grr */
+ struct bgp_attr_encap_subtlv *encap_subtlvs; /* rfc5512 */
};
/* BGP core attribute structure. */
@@ -194,6 +204,12 @@
extern int bgp_mp_unreach_parse (struct bgp_attr_parser_args *args,
struct bgp_nlri *);
+extern struct bgp_attr_encap_subtlv *
+encap_tlv_dup(struct bgp_attr_encap_subtlv *orig);
+
+extern void
+bgp_attr_flush_encap(struct attr *attr);
+
/**
* Set of functions to encode MP_REACH_NLRI and MP_UNREACH_NLRI attributes.
* Typical call sequence is to call _start(), followed by multiple _prefix(),