0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-11-09 20:58:44 +00:00

Merge commit '1e47b9f203aaaad0fb658d40a1670f1d0437f1f8' into thread-next

This commit is contained in:
Maria Matejka 2023-01-21 23:49:52 +01:00
commit 21c4c8eafb
8 changed files with 58 additions and 12 deletions

37
NEWS
View File

@ -1,3 +1,40 @@
Version 2.0.11 (2022-11-12)
o BGP roles (RFC 9234)
o BGP: Keepalive time scaling
o BGP: New 'min hold time' and 'min keepalive time' options
o BGP: New 'next hop prefer global' option
o Filter: For loops and direct recursion
o Filter: Mixed declarations of local variables
o Filter: Improved static type checks
o Filter: Literal [] for empty set
o Linux: Netlink KRT improvements
o BSD: Experimental support for Netlink API
o Memory management improvements
o Many bugfixes
Notes:
In contrast to prior versions, configured keepalive time in BGP now scales
with negotiated hold time to maintain proportion between the keepalive time
and the hold time.
The Linux KRT was updated to use the recent API for IPv6 ECMP routes instead
of the legacy one. Consequently, the Linux versions older than 4.11 are no
longer supported, at least for IPv6 ECMP routes. Also, routing table scanning
now runs separately for each table to avoid congestion.
There is a minor change in recursive next hop processing. Previously,
recursive next hop must be resolved through a non-recursive route, now it must
be resolved through a prefix where both the best route and all routes with the
same preference (as the best route) are non-recursive. The old behavior might
lead in some corner cases to an infinite loop of recursive next hop resolution
due to a priority inversion.
There is a minor change in the 'configure undo' command, it is no longer
available after failed reconfiguration, as the old configuration is already
released.
Version 2.0.10 (2022-06-16)
o BGP performance improvements
o BFD: New 'strict bind' option

View File

@ -153,7 +153,7 @@ submit_init_command(char *cmd_raw)
if (!cmd)
{
cleanup();
exit(0);
exit(1);
}
submit_server_command(cmd);

View File

@ -1,6 +1,6 @@
Summary: BIRD Internet Routing Daemon
Name: bird
Version: 2.0.10
Version: 2.0.11
Release: 1
Copyright: GPL
Group: Networking/Daemons

View File

@ -29,7 +29,7 @@ typedef struct cli {
node n; /* Node in list of all log hooks */
pool *pool;
struct birdsock *sock; /* Underlying socket */
byte *rx_buf, *rx_pos, *rx_aux; /* sysdep */
byte *rx_buf, *rx_pos; /* sysdep */
struct cli_out *tx_buf, *tx_pos, *tx_write;
event *event;
void (*cont)(struct cli *c);

View File

@ -3145,8 +3145,8 @@ bgp_log_error(struct bgp_proto *p, u8 class, char *msg, uint code, uint subcode,
if (len)
{
/* Bad peer AS - we would like to print the AS */
if ((code == 2) && (subcode == 2) && ((len == 2) || (len == 4)))
/* Bad peer AS / unacceptable hold time - print the value as decimal number */
if ((code == 2) && ((subcode == 2) || (subcode == 6)) && ((len == 2) || (len == 4)))
{
t += bsprintf(t, ": %u", (len == 2) ? get_u16(data) : get_u32(data));
goto done;

View File

@ -193,6 +193,10 @@ static inline void
sockaddr_fill_dl(struct sockaddr_dl *sa, struct iface *ifa)
{
uint len = OFFSETOF(struct sockaddr_dl, sdl_data);
/* Workaround for FreeBSD 13.0 */
len = MAX(len, sizeof(struct sockaddr));
memset(sa, 0, len);
sa->sdl_len = len;
sa->sdl_family = AF_LINK;

View File

@ -13,7 +13,7 @@
#ifdef GIT_LABEL
#define BIRD_VERSION XSTR1(GIT_LABEL)
#else
#define BIRD_VERSION "2.0.10"
#define BIRD_VERSION "2.0.11"
#endif
/* Include parameters determined by configure script */

View File

@ -448,7 +448,7 @@ cli_get_command(cli *c)
{
sock *s = c->sock;
ASSERT_DIE(c->sock);
byte *t = c->rx_aux ? : s->rbuf;
byte *t = s->rbuf;
byte *tend = s->rpos;
byte *d = c->rx_pos;
byte *dend = c->rx_buf + CLI_RX_BUF_SIZE - 2;
@ -459,16 +459,22 @@ cli_get_command(cli *c)
t++;
else if (*t == '\n')
{
t++;
c->rx_pos = c->rx_buf;
c->rx_aux = t;
*d = 0;
t++;
/* Move remaining data and reset pointers */
uint rest = (t < tend) ? (tend - t) : 0;
memmove(s->rbuf, t, rest);
s->rpos = s->rbuf + rest;
c->rx_pos = c->rx_buf;
return (d < dend) ? 1 : -1;
}
else if (d < dend)
*d++ = *t++;
}
c->rx_aux = s->rpos = s->rbuf;
s->rpos = s->rbuf;
c->rx_pos = d;
return 0;
}
@ -516,7 +522,6 @@ cli_connect(sock *s, uint size UNUSED)
s->pool = c->pool; /* We need to have all the socket buffers allocated in the cli pool */
s->fast_rx = 1;
c->rx_pos = c->rx_buf;
c->rx_aux = NULL;
rmove(s, c->pool);
return 1;
}