]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
MRT Dump: Support for draft-petrie-grow-mrt-add-paths
authorPavel Tvrdík <pawel.tvrdik@gmail.com>
Tue, 5 Jan 2016 16:53:58 +0000 (17:53 +0100)
committerPavel Tvrdík <pawel.tvrdik@gmail.com>
Wed, 6 Jan 2016 12:52:35 +0000 (13:52 +0100)
Thanks to Colin Petrie for patch.

nest/mrtdump.h
proto/bgp/packets.c

index d3b134932b0878c45658a124cb6273e57f08a025..9ca9ca4bd04f828850501c36d79340ef7bac1ad2 100644 (file)
@@ -41,7 +41,9 @@
 /* MRT BGP4MP Subtypes */
 #define MRT_BGP4MP_MESSAGE     1
 #define MRT_BGP4MP_MESSAGE_AS4 4
-#define MRT_BGP4MP_STATE_CHANGE_AS4 5
+#define MRT_BGP4MP_MESSAGE_ADDPATH     8       /* Experimental draft-petrie-grow-mrt-add-paths */
+#define MRT_BGP4MP_MESSAGE_AS4_ADDPATH         9       /* Experimental draft-petrie-grow-mrt-add-paths */
+#define MRT_BGP4MP_STATE_CHANGE_AS4    5
 
 struct mrt_buffer
 {
index a117895c9b40d7de0012a15e6025e5ce0c1429d4..f2169cdb4363e1eb2f235192d90701ff443ab9e6 100644 (file)
@@ -88,11 +88,19 @@ mrt_dump_bgp_packet(struct bgp_conn *conn, byte *pkt, unsigned len)
   byte *bp = buf + MRT_HDR_LENGTH;
 
   int as4 = conn->bgp->as4_session;
+  int addpath = conn->bgp->add_path_rx;
+
+  u16 subtype;
+  if (addpath)
+    subtype = as4 ? MRT_BGP4MP_MESSAGE_AS4_ADDPATH : MRT_BGP4MP_MESSAGE_ADDPATH;
+  else
+    subtype = as4 ? MRT_BGP4MP_MESSAGE_AS4 : MRT_BGP4MP_MESSAGE;
 
   bp = mrt_put_bgp4_hdr(bp, conn, as4);
   memcpy(bp, pkt, len);
   bp += len;
-  mrt_dump_message_proto(&conn->bgp->p, MRT_BGP4MP, as4 ? MRT_BGP4MP_MESSAGE_AS4 : MRT_BGP4MP_MESSAGE, buf, bp-buf);
+
+  mrt_dump_message(&conn->bgp->p, MRT_BGP4MP, subtype, buf, bp-buf);
 }
 
 static inline u16