mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-22 09:41:54 +00:00
Merge commit '913ec57f' into thread-next-iface
This commit is contained in:
commit
1106927213
@ -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>
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user