+struct bgp_opt_param {
+ uint8_t type;
+ uint8_t len;
+#define BGP_MAX_OPT_PARAM_SIZE 256
+ char value[BGP_MAX_OPT_PARAM_SIZE];
+} __attribute__ ((packed));
+
+#define BGP_PARAM_TYPE_CAPABILITY 2
+struct bgp_capability {
+ uint8_t code;
+ uint8_t len;
+#define BGP_MAX_CAPABILITY_SIZE 256
+ char value[BGP_MAX_CAPABILITY_SIZE];
+} __attribute__ ((packed));
+
+/* RFC4760 Multiprotocol extension */
+#define BGP_CAP_CODE_MP 1
+
+struct bgp_mp_cap_param {
+ uint16_t afi; /* sa_family_t */
+ uint8_t reserved; /* SHOULD be 0 */
+ uint8_t safi;
+} __attribute__ ((packed));
+
+/* bgp_mp_cap_param.afi */
+#define BGP_MP_AFI_RESERVED 0
+#define BGP_MP_AFI_IPv4 1
+#define BGP_MP_AFI_IPv6 2
+/* bgp_mp_cap_param.safi */
+#define BGP_MP_SAFI_UNICAST 1
+#define BGP_MP_SAFI_MULTICAST 2
+
+struct bgp_ip6_prefix {
+ uint8_t len;
+ uint8_t prefix[16]; /* variable */
+} __attribute__ ((packed));
+
+/* end of RFC4760 specific definitions */
+