summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--proto/bgp/attrs.c3
-rw-r--r--proto/bgp/config.Y2
-rw-r--r--proto/bgp/packets.c2
3 files changed, 5 insertions, 2 deletions
diff --git a/proto/bgp/attrs.c b/proto/bgp/attrs.c
index f008b35..fa2649c 100644
--- a/proto/bgp/attrs.c
+++ b/proto/bgp/attrs.c
@@ -6,6 +6,9 @@
* Can be freely distributed and used under the terms of the GNU GPL.
*/
+/* FIXME: Latest draft says that LOCAL_PREF is mandatory for iBGP */
+/* FIXME: Mandatory attributes may be missing in messages that don't contain NLRI */
+
#define LOCAL_DEBUG
#include <stdlib.h>
diff --git a/proto/bgp/config.Y b/proto/bgp/config.Y
index 548f5d0..37f90aa 100644
--- a/proto/bgp/config.Y
+++ b/proto/bgp/config.Y
@@ -29,7 +29,7 @@ bgp_proto_start: proto_start BGP {
BGP_CFG->hold_time = 240;
BGP_CFG->connect_retry_time = 120;
BGP_CFG->initial_hold_time = 240;
- BGP_CFG->default_med = ~0;
+ BGP_CFG->default_med = ~0; /* RFC 1771 doesn't specify this, draft-09 says ~0 */
BGP_CFG->compare_path_lengths = 1;
}
;
diff --git a/proto/bgp/packets.c b/proto/bgp/packets.c
index 91d0508..bec2e50 100644
--- a/proto/bgp/packets.c
+++ b/proto/bgp/packets.c
@@ -216,7 +216,7 @@ bgp_rx_open(struct bgp_conn *conn, byte *pkt, int len)
if (len < 29 || len != 29 + pkt[28])
{ bgp_error(conn, 1, 2, len, 2); return; }
if (pkt[19] != BGP_VERSION)
- { bgp_error(conn, 2, 1, pkt[19], 2); return; }
+ { bgp_error(conn, 2, 1, pkt[19], 1); return; } /* RFC 1771 says 16 bits, draft-09 tells to use 8 */
as = get_u16(pkt+20);
hold = get_u16(pkt+22);
id = get_u32(pkt+24);