summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--alpine/APKBUILD.in2
-rw-r--r--bgpd/bgp_attr.c8
-rw-r--r--bgpd/bgp_rpki.c3
-rw-r--r--configure.ac2
-rw-r--r--debian/changelog6
-rwxr-xr-xdocker/alpine/libyang/APKBUILD1
-rw-r--r--isisd/isis_te.c2
-rw-r--r--ospfd/ospf_sr.c3
-rw-r--r--redhat/frr.spec.in12
-rw-r--r--tools/frrinit.sh.in2
-rw-r--r--zebra/dplane_fpm_nl.c2
-rw-r--r--zebra/zebra_snmp.c30
12 files changed, 51 insertions, 22 deletions
diff --git a/alpine/APKBUILD.in b/alpine/APKBUILD.in
index fef7a61ccc..8869a44b93 100644
--- a/alpine/APKBUILD.in
+++ b/alpine/APKBUILD.in
@@ -33,6 +33,8 @@ _localstatedir=/var/run/frr
_user=frr
build() {
+ export ABUILD_APK_INDEX_OPTS="--allow-untrusted"
+
cd "$builddir"
./configure \
diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c
index 006047bf87..e75d85b6cd 100644
--- a/bgpd/bgp_attr.c
+++ b/bgpd/bgp_attr.c
@@ -2725,6 +2725,14 @@ static int bgp_attr_encap(struct bgp_attr_parser_args *args)
args->total);
}
+ if (STREAM_READABLE(BGP_INPUT(peer)) < sublength) {
+ zlog_err("Tunnel Encap attribute sub-tlv length %d exceeds remaining stream length %zu",
+ sublength, STREAM_READABLE(BGP_INPUT(peer)));
+ return bgp_attr_malformed(args,
+ BGP_NOTIFY_UPDATE_OPT_ATTR_ERR,
+ args->total);
+ }
+
/* alloc and copy sub-tlv */
/* TBD make sure these are freed when attributes are released */
tlv = XCALLOC(MTYPE_ENCAP_TLV,
diff --git a/bgpd/bgp_rpki.c b/bgpd/bgp_rpki.c
index 73c6fe0c47..496f97004f 100644
--- a/bgpd/bgp_rpki.c
+++ b/bgpd/bgp_rpki.c
@@ -279,7 +279,8 @@ static void rpki_delete_all_cache_nodes(void)
struct cache *cache;
for (ALL_LIST_ELEMENTS(cache_list, cache_node, cache_next, cache)) {
- rtr_mgr_remove_group(rtr_config, cache->preference);
+ if (is_running())
+ rtr_mgr_remove_group(rtr_config, cache->preference);
listnode_delete(cache_list, cache);
}
}
diff --git a/configure.ac b/configure.ac
index 9b1815fc08..4d6798ca92 100644
--- a/configure.ac
+++ b/configure.ac
@@ -7,7 +7,7 @@
##
AC_PREREQ([2.69])
-AC_INIT([frr], [8.5.5], [https://github.com/frrouting/frr/issues])
+AC_INIT([frr], [8.5.6], [https://github.com/frrouting/frr/issues])
PACKAGE_URL="https://frrouting.org/"
AC_SUBST([PACKAGE_URL])
PACKAGE_FULLNAME="FRRouting"
diff --git a/debian/changelog b/debian/changelog
index abbd033722..f14a40ea66 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+frr (8.5.6-0) unstable; urgency=medium
+
+ * New upstream release FRR 8.5.6
+
+ -- Donatas Abraitis <donatas@opensourcerouting.org> Wed, 11 Sep 2024 10:40:00 +0300
+
frr (8.5.5-0) unstable; urgency=medium
* New upstream release FRR 8.5.5
diff --git a/docker/alpine/libyang/APKBUILD b/docker/alpine/libyang/APKBUILD
index aa792e7f0b..622b163f0d 100755
--- a/docker/alpine/libyang/APKBUILD
+++ b/docker/alpine/libyang/APKBUILD
@@ -21,6 +21,7 @@ source="$pkgname-$pkgver.tar.gz::https://github.com/CESNET/libyang/archive/v$pkg
# - CVE-2021-28906
build() {
+ export ABUILD_APK_INDEX_OPTS="--allow-untrusted"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
diff --git a/isisd/isis_te.c b/isisd/isis_te.c
index 155d1e6fed..a6cab03660 100644
--- a/isisd/isis_te.c
+++ b/isisd/isis_te.c
@@ -194,7 +194,7 @@ void isis_link_params_update(struct isis_circuit *circuit,
return;
/* Sanity Check */
- if ((ifp == NULL) || (circuit->state != C_STATE_UP))
+ if (ifp == NULL)
return;
te_debug("ISIS-TE(%s): Update circuit parameters for interface %s",
diff --git a/ospfd/ospf_sr.c b/ospfd/ospf_sr.c
index 3a71e55710..419702b794 100644
--- a/ospfd/ospf_sr.c
+++ b/ospfd/ospf_sr.c
@@ -1474,7 +1474,8 @@ void ospf_sr_ri_lsa_update(struct ospf_lsa *lsa)
/* Update Algorithm, SRLB and MSD if present */
if (algo != NULL) {
int i;
- for (i = 0; i < ntohs(algo->header.length); i++)
+ for (i = 0;
+ i < ntohs(algo->header.length) && i < ALGORITHM_COUNT; i++)
srn->algo[i] = algo->value[0];
for (; i < ALGORITHM_COUNT; i++)
srn->algo[i] = SR_ALGORITHM_UNSET;
diff --git a/redhat/frr.spec.in b/redhat/frr.spec.in
index d1e0288a5b..31c5551216 100644
--- a/redhat/frr.spec.in
+++ b/redhat/frr.spec.in
@@ -793,7 +793,17 @@ sed -i 's/ -M rpki//' %{_sysconfdir}/frr/daemons
%changelog
-* Thu Jun 06 2024 Martin Winter <mwinter@opensourcerouting.org> - %{version}
+* Wed Sep 11 2024 Martin Winter <mwinter@opensourcerouting.org> - %{version}
+
+* Wed Sep 11 2024 Donatas Abraitis <donatas@opensourcerouting.org> - 8.5.6
+- isisd
+- Fix update link params after circuit is up
+- bgpd
+- Fix crash at no rpki
+- Fix for CVE-2024-44070
+- Ignore RFC8212 for BGP Confederations
+- tools
+- Ignore errors for frr reload stuff
* Thu Jun 06 2024 Jafar Al-Gharaibeh <jafar@atcorp.com> - 8.5.5
- bgpd
diff --git a/tools/frrinit.sh.in b/tools/frrinit.sh.in
index 42adefb9ea..428d57c55b 100644
--- a/tools/frrinit.sh.in
+++ b/tools/frrinit.sh.in
@@ -123,7 +123,7 @@ reload)
NEW_CONFIG_FILE="${2:-$C_PATH/frr.conf}"
[ ! -r $NEW_CONFIG_FILE ] && log_failure_msg "Unable to read new configuration file $NEW_CONFIG_FILE" && exit 1
"$RELOAD_SCRIPT" --reload --bindir "$B_PATH" --confdir "$C_PATH" --rundir "$V_PATH" "$NEW_CONFIG_FILE" `echo $nsopt`
- exit $?
+ exit 0
;;
*)
diff --git a/zebra/dplane_fpm_nl.c b/zebra/dplane_fpm_nl.c
index d08887ab0f..68a9e18af8 100644
--- a/zebra/dplane_fpm_nl.c
+++ b/zebra/dplane_fpm_nl.c
@@ -1223,7 +1223,7 @@ static void fpm_enqueue_l3vni_table(struct hash_bucket *bucket, void *arg)
struct zebra_l3vni *zl3vni = bucket->data;
fra->zl3vni = zl3vni;
- hash_iterate(zl3vni->rmac_table, fpm_enqueue_rmac_table, zl3vni);
+ hash_iterate(zl3vni->rmac_table, fpm_enqueue_rmac_table, fra);
}
static void fpm_rmac_send(struct thread *t)
diff --git a/zebra/zebra_snmp.c b/zebra/zebra_snmp.c
index 6fe24dfa54..13409417c4 100644
--- a/zebra/zebra_snmp.c
+++ b/zebra/zebra_snmp.c
@@ -242,6 +242,8 @@ static int proto_trans(int type)
return 3; /* static route */
case ZEBRA_ROUTE_RIP:
return 8; /* rip */
+ case ZEBRA_ROUTE_ISIS:
+ return 9;
case ZEBRA_ROUTE_RIPNG:
return 1; /* shouldn't happen */
case ZEBRA_ROUTE_OSPF:
@@ -250,6 +252,8 @@ static int proto_trans(int type)
return 1; /* shouldn't happen */
case ZEBRA_ROUTE_BGP:
return 14; /* bgp */
+ case ZEBRA_ROUTE_EIGRP:
+ return 16;
default:
return 1; /* other */
}
@@ -266,9 +270,11 @@ static void check_replace(struct route_node *np2, struct route_entry *re2,
return;
}
- if (prefix_cmp(&(*np)->p, &np2->p) < 0)
+ if (in_addr_cmp((uint8_t *)&(*np)->p.u.prefix4,
+ (uint8_t *)&np2->p.u.prefix4) < 0)
return;
- if (prefix_cmp(&(*np)->p, &np2->p) > 0) {
+ if (in_addr_cmp((uint8_t *)&(*np)->p.u.prefix4,
+ (uint8_t *)&np2->p.u.prefix4) > 0) {
*np = np2;
*re = re2;
return;
@@ -311,14 +317,8 @@ static void get_fwtable_route_node(struct variable *v, oid objid[],
int i;
/* Init index variables */
-
- pnt = (uint8_t *)&dest;
- for (i = 0; i < 4; i++)
- *pnt++ = 0;
-
- pnt = (uint8_t *)&nexthop;
- for (i = 0; i < 4; i++)
- *pnt++ = 0;
+ memset(&dest, 0, sizeof(dest));
+ memset(&nexthop, 0, sizeof(nexthop));
proto = 0;
policy = 0;
@@ -509,23 +509,23 @@ static uint8_t *ipFwTable(struct variable *v, oid objid[], size_t *objid_len,
*val_len = sizeof(int);
return (uint8_t *)&result;
case IPFORWARDMETRIC1:
- result = 0;
+ result = re->metric;
*val_len = sizeof(int);
return (uint8_t *)&result;
case IPFORWARDMETRIC2:
- result = 0;
+ result = -1;
*val_len = sizeof(int);
return (uint8_t *)&result;
case IPFORWARDMETRIC3:
- result = 0;
+ result = -1;
*val_len = sizeof(int);
return (uint8_t *)&result;
case IPFORWARDMETRIC4:
- result = 0;
+ result = -1;
*val_len = sizeof(int);
return (uint8_t *)&result;
case IPFORWARDMETRIC5:
- result = 0;
+ result = -1;
*val_len = sizeof(int);
return (uint8_t *)&result;
default: