summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaria Matejka <mq@ucw.cz>2023-04-14 13:43:24 +0200
committerMaria Matejka <mq@ucw.cz>2023-04-14 13:43:24 +0200
commit11069272133a6818e4b24d6f2c2ef33338ac499a (patch)
tree88b3da294585f23da8b223c4dbf4c1db468a0d4a
parentea30d596d3732b3d2c4b1f55ebdc7cc018dd20bb (diff)
parent913ec57f27b06845e3698e8ea08821d39b9575cf (diff)
Merge commit '913ec57f' into thread-next-iface
-rw-r--r--doc/bird.sgml4
-rw-r--r--proto/babel/babel.c21
-rw-r--r--proto/bgp/bgp.c2
-rw-r--r--proto/bgp/bgp.h4
-rw-r--r--proto/bgp/packets.c6
5 files changed, 22 insertions, 15 deletions
diff --git a/doc/bird.sgml b/doc/bird.sgml
index 9a3cb996..c0c90adf 100644
--- a/doc/bird.sgml
+++ b/doc/bird.sgml
@@ -1910,7 +1910,7 @@ protocol sections.
<label id="babel-intro">
<p>The Babel protocol
-(<rfc id="6126">) is a loop-avoiding distance-vector routing protocol that is
+(<rfc id="8966">) is a loop-avoiding distance-vector routing protocol that is
robust and efficient both in ordinary wired networks and in wireless mesh
networks. Babel is conceptually very simple in its operation and "just works"
in its default configuration, though some configuration is possible and in some
@@ -2425,6 +2425,8 @@ avoid routing loops.
<item> <rfc id="8092"> - BGP Large Communities Attribute
<item> <rfc id="8203"> - BGP Administrative Shutdown Communication
<item> <rfc id="8212"> - Default EBGP Route Propagation Behavior without Policies
+<item> <rfc id="8654"> - Extended Message Support for BGP
+<item> <rfc id="9072"> - Extended Optional Parameters Length for BGP OPEN Message
<item> <rfc id="9117"> - Revised Validation Procedure for BGP Flow Specifications
<item> <rfc id="9234"> - Route Leak Prevention and Detection Using Roles
</itemize>
diff --git a/proto/babel/babel.c b/proto/babel/babel.c
index cf625819..d398da8e 100644
--- a/proto/babel/babel.c
+++ b/proto/babel/babel.c
@@ -14,9 +14,8 @@
/**
* DOC: The Babel protocol
*
- * Babel (RFC6126) is a loop-avoiding distance-vector routing protocol that is
- * robust and efficient both in ordinary wired networks and in wireless mesh
- * networks.
+ * The Babel is a loop-avoiding distance-vector routing protocol that is robust
+ * and efficient both in ordinary wired networks and in wireless mesh networks.
*
* The Babel protocol keeps state for each neighbour in a &babel_neighbor
* struct, tracking received Hello and I Heard You (IHU) messages. A
@@ -33,6 +32,12 @@
* an entry is updated by receiving updates from the network or when modified by
* internal timers. The function selects from feasible and reachable routes the
* one with the lowest metric to be announced to the core.
+ *
+ * Supported standards:
+ * RFC 8966 - The Babel Routing Protocol
+ * RFC 8967 - MAC Authentication for Babel
+ * RFC 9079 - Source Specific Routing for Babel
+ * RFC 9229 - IPv4 Routes with IPv6 Next Hop for Babel
*/
#include <stdlib.h>
@@ -297,7 +302,7 @@ babel_expire_routes(struct babel_proto *p)
}
/*
- * Add seqno request to the table of pending requests (RFC 6216 3.2.6) and send
+ * Add seqno request to the table of pending requests (RFC 8966 3.2.6) and send
* it to network. Do nothing if it is already in the table.
*/
@@ -1021,7 +1026,7 @@ babel_send_update_(struct babel_iface *ifa, btime changed, struct fib *rtable)
babel_enqueue(&msg, ifa);
- /* RFC 6126 3.7.3 - update feasibility distance for redistributed routes */
+ /* RFC 8966 3.7.3 - update feasibility distance for redistributed routes */
if (e->router_id != p->router_id)
{
struct babel_source *s = babel_get_source(p, e, e->router_id, msg.update.seqno);
@@ -1324,7 +1329,7 @@ babel_handle_update(union babel_msg *m, struct babel_iface *ifa)
best = e->selected;
/*
- * RFC section 3.8.2.2 - Dealing with unfeasible updates. Generate a one-off
+ * RFC 8966 3.8.2.2 - dealing with unfeasible updates. Generate a one-off
* (not retransmitted) unicast seqno request to the originator of this update.
* Note: !feasible -> s exists, check for 's' is just for clarity / safety.
*/
@@ -1369,7 +1374,7 @@ babel_handle_route_request(union babel_msg *m, struct babel_iface *ifa)
struct babel_proto *p = ifa->proto;
struct babel_msg_route_request *msg = &m->route_request;
- /* RFC 6126 3.8.1.1 */
+ /* RFC 8966 3.8.1.1 */
/* Wildcard request - full update on the interface */
if (msg->full)
@@ -1427,7 +1432,7 @@ babel_handle_seqno_request(union babel_msg *m, struct babel_iface *ifa)
struct babel_proto *p = ifa->proto;
struct babel_msg_seqno_request *msg = &m->seqno_request;
- /* RFC 6126 3.8.1.2 */
+ /* RFC 8966 3.8.1.2 */
TRACE(D_PACKETS, "Handling seqno request for %N router-id %lR seqno %d hop count %d",
&msg->net, msg->router_id, msg->seqno, msg->hop_count);
diff --git a/proto/bgp/bgp.c b/proto/bgp/bgp.c
index fffa8cec..cda0eb8d 100644
--- a/proto/bgp/bgp.c
+++ b/proto/bgp/bgp.c
@@ -101,9 +101,9 @@
* RFC 8203 - BGP Administrative Shutdown Communication
* RFC 8212 - Default EBGP Route Propagation Behavior without Policies
* RFC 8654 - Extended Message Support for BGP
+ * RFC 9072 - Extended Optional Parameters Length for BGP OPEN Message
* RFC 9117 - Revised Validation Procedure for BGP Flow Specifications
* RFC 9234 - Route Leak Prevention and Detection Using Roles
- * draft-ietf-idr-ext-opt-param-07
* draft-uttaro-idr-bgp-persistence-04
* draft-walton-bgp-hostname-capability-02
*/
diff --git a/proto/bgp/bgp.h b/proto/bgp/bgp.h
index 621e1bc5..c98582dd 100644
--- a/proto/bgp/bgp.h
+++ b/proto/bgp/bgp.h
@@ -97,7 +97,7 @@ struct bgp_config {
int capabilities; /* Enable capability handshake [RFC 5492] */
int enable_refresh; /* Enable local support for route refresh [RFC 2918] */
int enable_as4; /* Enable local support for 4B AS numbers [RFC 6793] */
- int enable_extended_messages; /* Enable local support for extended messages [draft] */
+ int enable_extended_messages; /* Enable local support for extended messages [RFC 8654] */
int enable_hostname; /* Enable local support for hostname [draft] */
u32 rr_cluster_id; /* Route reflector cluster ID, if different from local ID */
int rr_client; /* Whether neighbor is RR client of me */
@@ -237,7 +237,7 @@ struct bgp_caps {
u32 as4_number; /* Announced ASN */
u8 as4_support; /* Four-octet AS capability, RFC 6793 */
- u8 ext_messages; /* Extended message length, RFC draft */
+ u8 ext_messages; /* Extended message length, RFC 8654 */
u8 route_refresh; /* Route refresh capability, RFC 2918 */
u8 enhanced_refresh; /* Enhanced route refresh, RFC 7313 */
u8 role; /* BGP role capability, RFC 9234 */
diff --git a/proto/bgp/packets.c b/proto/bgp/packets.c
index 546f0809..978a1891 100644
--- a/proto/bgp/packets.c
+++ b/proto/bgp/packets.c
@@ -518,7 +518,7 @@ bgp_read_capabilities(struct bgp_conn *conn, byte *pos, int len)
}
break;
- case 6: /* Extended message length capability, RFC draft */
+ case 6: /* Extended message length capability, RFC 8654 */
if (cl != 0)
goto err;
@@ -711,7 +711,7 @@ bgp_read_options(struct bgp_conn *conn, byte *pos, uint len, uint rest)
struct bgp_proto *p = conn->bgp;
int ext = 0;
- /* Handle extended length (draft-ietf-idr-ext-opt-param-07) */
+ /* Handle extended length, RFC 9072 */
if ((len > 0) && (rest > 0) && (pos[0] == 255))
{
if (rest < 3)
@@ -796,7 +796,7 @@ bgp_create_open(struct bgp_conn *conn, byte *buf)
buf[10] = 2; /* Option 2: Capability list */
buf[11] = len; /* Option data length */
}
- else /* draft-ietf-idr-ext-opt-param-07 */
+ else /* Extended length, RFC 9072 */
{
/* Move capabilities 4 B forward */
memmove(buf + 16, pos, len);