aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
Diffstat (limited to 'main')
-rw-r--r--main/quagga/0001-bgpd-fix-some-bgp_update_main-attribute-leaks.patch70
-rw-r--r--main/quagga/0002-bgpd-remove-duplicate-route-map-extcommunity-code.patch119
-rw-r--r--main/quagga/0003-bgpd-fix-double-free-after-extcommunity-set-BZ-799.patch58
-rw-r--r--main/quagga/0004-bgpd-fix-memory-leak-on-malformed-attribute.patch33
-rw-r--r--main/quagga/0005-bgpd-fix-IP-endianness-in-debug-message.patch28
-rw-r--r--main/quagga/0006-bgpd-don-t-send-NOTIFY-twice-for-malformed-attrs.patch155
-rw-r--r--main/quagga/APKBUILD26
7 files changed, 488 insertions, 1 deletions
diff --git a/main/quagga/0001-bgpd-fix-some-bgp_update_main-attribute-leaks.patch b/main/quagga/0001-bgpd-fix-some-bgp_update_main-attribute-leaks.patch
new file mode 100644
index 0000000000..4269a880a2
--- /dev/null
+++ b/main/quagga/0001-bgpd-fix-some-bgp_update_main-attribute-leaks.patch
@@ -0,0 +1,70 @@
+From c460e5720c1101a6da53e5b753b736ac2c7981af Mon Sep 17 00:00:00 2001
+From: David Lamparter <equinox@opensourcerouting.org>
+Date: Wed, 4 Jun 2014 00:54:58 +0200
+Subject: [PATCH] bgpd: fix some bgp_update_main() attribute leaks
+
+bgp_update_main() wasn't doing anything to release attribute values
+set from route maps for two of its error paths. To fix, pull up the
+appropriate cleanup from further down and apply it here.
+
+bgp_update_rsclient() doesn't have the issue since it immediately
+does bgp_attr_intern() on the results from bgp_{export,import}_modifier.
+
+Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
+---
+ bgpd/bgp_route.c | 15 +++++++++------
+ 1 file changed, 9 insertions(+), 6 deletions(-)
+
+diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
+index f421ca5..ed8464d 100644
+--- a/bgpd/bgp_route.c
++++ b/bgpd/bgp_route.c
+@@ -713,11 +713,8 @@ bgp_input_modifier (struct peer *peer, struct prefix *p, struct attr *attr,
+ peer->rmap_type = 0;
+
+ if (ret == RMAP_DENYMATCH)
+- {
+- /* Free newly generated AS path and community by route-map. */
+- bgp_attr_flush (attr);
+- return RMAP_DENY;
+- }
++ /* caller has multiple error paths with bgp_attr_flush() */
++ return RMAP_DENY;
+ }
+ return RMAP_PERMIT;
+ }
+@@ -2143,10 +2140,14 @@ bgp_update_main (struct peer *peer, struct prefix *p, struct attr *attr,
+ new_attr.extra = &new_extra;
+ bgp_attr_dup (&new_attr, attr);
+
+- /* Apply incoming route-map. */
++ /* Apply incoming route-map.
++ * NB: new_attr may now contain newly allocated values from route-map "set"
++ * commands, so we need bgp_attr_flush in the error paths, until we intern
++ * the attr (which takes over the memory references) */
+ if (bgp_input_modifier (peer, p, &new_attr, afi, safi) == RMAP_DENY)
+ {
+ reason = "route-map;";
++ bgp_attr_flush (&new_attr);
+ goto filtered;
+ }
+
+@@ -2160,6 +2161,7 @@ bgp_update_main (struct peer *peer, struct prefix *p, struct attr *attr,
+ && ! CHECK_FLAG (peer->flags, PEER_FLAG_DISABLE_CONNECTED_CHECK))
+ {
+ reason = "non-connected next-hop;";
++ bgp_attr_flush (&new_attr);
+ goto filtered;
+ }
+
+@@ -2170,6 +2172,7 @@ bgp_update_main (struct peer *peer, struct prefix *p, struct attr *attr,
+ || bgp_nexthop_self (&new_attr))
+ {
+ reason = "martian next-hop;";
++ bgp_attr_flush (&new_attr);
+ goto filtered;
+ }
+ }
+--
+2.0.1
+
diff --git a/main/quagga/0002-bgpd-remove-duplicate-route-map-extcommunity-code.patch b/main/quagga/0002-bgpd-remove-duplicate-route-map-extcommunity-code.patch
new file mode 100644
index 0000000000..81a38d60da
--- /dev/null
+++ b/main/quagga/0002-bgpd-remove-duplicate-route-map-extcommunity-code.patch
@@ -0,0 +1,119 @@
+From 73d78ea0153fd36a300be5fec2ef0fca34a67477 Mon Sep 17 00:00:00 2001
+From: David Lamparter <equinox@opensourcerouting.org>
+Date: Wed, 4 Jun 2014 00:58:47 +0200
+Subject: [PATCH] bgpd: remove duplicate route-map extcommunity code
+
+route_set_ecommunity_rt and _soo share almost all of their code.
+Let's remove one of the redundant copies.
+
+Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
+---
+ bgpd/bgp_routemap.c | 59 ++++++++---------------------------------------------
+ 1 file changed, 9 insertions(+), 50 deletions(-)
+
+diff --git a/bgpd/bgp_routemap.c b/bgpd/bgp_routemap.c
+index 6dc88b3..eb5e80f 100644
+--- a/bgpd/bgp_routemap.c
++++ b/bgpd/bgp_routemap.c
+@@ -1530,10 +1530,10 @@ struct route_map_rule_cmd route_set_community_delete_cmd =
+
+ /* `set extcommunity rt COMMUNITY' */
+
+-/* For community set mechanism. */
++/* For community set mechanism. Used by _rt and _soo. */
+ static route_map_result_t
+-route_set_ecommunity_rt (void *rule, struct prefix *prefix,
+- route_map_object_t type, void *object)
++route_set_ecommunity (void *rule, struct prefix *prefix,
++ route_map_object_t type, void *object)
+ {
+ struct ecommunity *ecom;
+ struct ecommunity *new_ecom;
+@@ -1578,9 +1578,9 @@ route_set_ecommunity_rt_compile (const char *arg)
+ return ecommunity_intern (ecom);
+ }
+
+-/* Free function for set community. */
++/* Free function for set community. Used by _rt and _soo */
+ static void
+-route_set_ecommunity_rt_free (void *rule)
++route_set_ecommunity_free (void *rule)
+ {
+ struct ecommunity *ecom = rule;
+ ecommunity_unintern (&ecom);
+@@ -1590,46 +1590,13 @@ route_set_ecommunity_rt_free (void *rule)
+ struct route_map_rule_cmd route_set_ecommunity_rt_cmd =
+ {
+ "extcommunity rt",
+- route_set_ecommunity_rt,
++ route_set_ecommunity,
+ route_set_ecommunity_rt_compile,
+- route_set_ecommunity_rt_free,
++ route_set_ecommunity_free,
+ };
+
+ /* `set extcommunity soo COMMUNITY' */
+
+-/* For community set mechanism. */
+-static route_map_result_t
+-route_set_ecommunity_soo (void *rule, struct prefix *prefix,
+- route_map_object_t type, void *object)
+-{
+- struct ecommunity *ecom, *old_ecom, *new_ecom;
+- struct bgp_info *bgp_info;
+-
+- if (type == RMAP_BGP)
+- {
+- ecom = rule;
+- bgp_info = object;
+-
+- if (! ecom)
+- return RMAP_OKAY;
+-
+- old_ecom = (bgp_attr_extra_get (bgp_info->attr))->ecommunity;
+-
+- if (old_ecom)
+- new_ecom = ecommunity_merge (ecommunity_dup (old_ecom), ecom);
+- else
+- new_ecom = ecommunity_dup (ecom);
+-
+- bgp_info->attr->extra->ecommunity = ecommunity_intern (new_ecom);
+-
+- if (old_ecom)
+- ecommunity_unintern (&old_ecom);
+-
+- bgp_info->attr->flag |= ATTR_FLAG_BIT (BGP_ATTR_EXT_COMMUNITIES);
+- }
+- return RMAP_OKAY;
+-}
+-
+ /* Compile function for set community. */
+ static void *
+ route_set_ecommunity_soo_compile (const char *arg)
+@@ -1643,21 +1610,13 @@ route_set_ecommunity_soo_compile (const char *arg)
+ return ecommunity_intern (ecom);
+ }
+
+-/* Free function for set community. */
+-static void
+-route_set_ecommunity_soo_free (void *rule)
+-{
+- struct ecommunity *ecom = rule;
+- ecommunity_unintern (&ecom);
+-}
+-
+ /* Set community rule structure. */
+ struct route_map_rule_cmd route_set_ecommunity_soo_cmd =
+ {
+ "extcommunity soo",
+- route_set_ecommunity_soo,
++ route_set_ecommunity,
+ route_set_ecommunity_soo_compile,
+- route_set_ecommunity_soo_free,
++ route_set_ecommunity_free,
+ };
+
+ /* `set origin ORIGIN' */
+--
+2.0.1
+
diff --git a/main/quagga/0003-bgpd-fix-double-free-after-extcommunity-set-BZ-799.patch b/main/quagga/0003-bgpd-fix-double-free-after-extcommunity-set-BZ-799.patch
new file mode 100644
index 0000000000..fbd226822f
--- /dev/null
+++ b/main/quagga/0003-bgpd-fix-double-free-after-extcommunity-set-BZ-799.patch
@@ -0,0 +1,58 @@
+From 27bf90a14670283a899b96c56dd23f8413e0973e Mon Sep 17 00:00:00 2001
+From: David Lamparter <equinox@opensourcerouting.org>
+Date: Wed, 4 Jun 2014 00:59:01 +0200
+Subject: [PATCH] bgpd: fix double free after extcommunity set (BZ#799)
+
+The route-map extcommunity set code was incorrectly assuming that it
+owns the intern'd struct ecommunity reference. In reality, the intern'd
+reference belongs to bgp_update_receive() and we're not supposed to
+touch it in the route-map code.
+
+Instead, like all the other set commands, we use a on-heap but
+non-intern'd ecommunity to set the new value. This is then either
+intern'd in bgp_update_main/_rsclient() through bgp_attr_intern(), or
+free'd through bgp_attr_flush().
+
+This fixes Bugzilla #799, which is that bgpd otherwise crashes with a
+double free. The ecommunity got unintern'd first in the route-map set
+command, then in bgp_update_receive().
+
+Debugged-by: Milan Kocian <milon@wq.cz>
+Reported-by: Florian S <florian@herrenlohe.de>
+Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
+---
+ bgpd/bgp_routemap.c | 15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
+
+diff --git a/bgpd/bgp_routemap.c b/bgpd/bgp_routemap.c
+index eb5e80f..36d177d 100644
+--- a/bgpd/bgp_routemap.c
++++ b/bgpd/bgp_routemap.c
+@@ -1552,14 +1552,19 @@ route_set_ecommunity (void *rule, struct prefix *prefix,
+ old_ecom = (bgp_attr_extra_get (bgp_info->attr))->ecommunity;
+
+ if (old_ecom)
+- new_ecom = ecommunity_merge (ecommunity_dup (old_ecom), ecom);
++ {
++ new_ecom = ecommunity_merge (ecommunity_dup (old_ecom), ecom);
++
++ /* old_ecom->refcnt = 1 => owned elsewhere, e.g. bgp_update_receive()
++ * ->refcnt = 0 => set by a previous route-map statement */
++ if (!old_ecom->refcnt)
++ ecommunity_free (&old_ecom);
++ }
+ else
+ new_ecom = ecommunity_dup (ecom);
+
+- bgp_info->attr->extra->ecommunity = ecommunity_intern (new_ecom);
+-
+- if (old_ecom)
+- ecommunity_unintern (&old_ecom);
++ /* will be intern()'d or attr_flush()'d by bgp_update_main() */
++ bgp_info->attr->extra->ecommunity = new_ecom;
+
+ bgp_info->attr->flag |= ATTR_FLAG_BIT (BGP_ATTR_EXT_COMMUNITIES);
+ }
+--
+2.0.1
+
diff --git a/main/quagga/0004-bgpd-fix-memory-leak-on-malformed-attribute.patch b/main/quagga/0004-bgpd-fix-memory-leak-on-malformed-attribute.patch
new file mode 100644
index 0000000000..2288d9fbef
--- /dev/null
+++ b/main/quagga/0004-bgpd-fix-memory-leak-on-malformed-attribute.patch
@@ -0,0 +1,33 @@
+From f80f838b2f54738937ef1281b237710132195c44 Mon Sep 17 00:00:00 2001
+From: David Lamparter <equinox@opensourcerouting.org>
+Date: Wed, 4 Jun 2014 01:00:51 +0200
+Subject: [PATCH] bgpd: fix memory leak on malformed attribute
+
+When bgp_attr_parse returns BGP_ATTR_PARSE_ERROR, it may already have
+parsed and allocated some attributes before hitting that error. Free
+the attr's data before returning.
+
+Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
+---
+ bgpd/bgp_packet.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c
+index 80651f1..65c6cac 100644
+--- a/bgpd/bgp_packet.c
++++ b/bgpd/bgp_packet.c
+@@ -1720,7 +1720,10 @@ bgp_update_receive (struct peer *peer, bgp_size_t size)
+ attr_parse_ret = bgp_attr_parse (peer, &attr, attribute_len,
+ &mp_update, &mp_withdraw);
+ if (attr_parse_ret == BGP_ATTR_PARSE_ERROR)
+- return -1;
++ {
++ bgp_attr_unintern_sub (&attr);
++ return -1;
++ }
+ }
+
+ /* Logging the attribute. */
+--
+2.0.1
+
diff --git a/main/quagga/0005-bgpd-fix-IP-endianness-in-debug-message.patch b/main/quagga/0005-bgpd-fix-IP-endianness-in-debug-message.patch
new file mode 100644
index 0000000000..edbe60e6fb
--- /dev/null
+++ b/main/quagga/0005-bgpd-fix-IP-endianness-in-debug-message.patch
@@ -0,0 +1,28 @@
+From bb02b82354a80f74706efc5e4c914b3f89fb033e Mon Sep 17 00:00:00 2001
+From: David Lamparter <equinox@opensourcerouting.org>
+Date: Wed, 4 Jun 2014 01:01:00 +0200
+Subject: [PATCH] bgpd: fix IP endianness in debug message
+
+inet_ntop expects network byte order.
+
+Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
+---
+ bgpd/bgp_attr.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c
+index a1fd165..f9fde9f 100644
+--- a/bgpd/bgp_attr.c
++++ b/bgpd/bgp_attr.c
+@@ -1110,7 +1110,7 @@ bgp_attr_nexthop (struct bgp_attr_parser_args *args)
+ if (IPV4_NET0 (nexthop_h) || IPV4_NET127 (nexthop_h) || IPV4_CLASS_DE (nexthop_h))
+ {
+ char buf[INET_ADDRSTRLEN];
+- inet_ntop (AF_INET, &nexthop_h, buf, INET_ADDRSTRLEN);
++ inet_ntop (AF_INET, &nexthop_n, buf, INET_ADDRSTRLEN);
+ zlog (peer->log, LOG_ERR, "Martian nexthop %s", buf);
+ return bgp_attr_malformed (args,
+ BGP_NOTIFY_UPDATE_INVAL_NEXT_HOP,
+--
+2.0.1
+
diff --git a/main/quagga/0006-bgpd-don-t-send-NOTIFY-twice-for-malformed-attrs.patch b/main/quagga/0006-bgpd-don-t-send-NOTIFY-twice-for-malformed-attrs.patch
new file mode 100644
index 0000000000..85a24e4fe2
--- /dev/null
+++ b/main/quagga/0006-bgpd-don-t-send-NOTIFY-twice-for-malformed-attrs.patch
@@ -0,0 +1,155 @@
+From f57000c0dbdd0e30e71b6651022392f284201e19 Mon Sep 17 00:00:00 2001
+From: David Lamparter <equinox@opensourcerouting.org>
+Date: Wed, 4 Jun 2014 01:01:10 +0200
+Subject: [PATCH] bgpd: don't send NOTIFY twice for malformed attrs
+
+Most of the attribute parsing functions were already sending a notify,
+let's clean up the code to make it happen only once.
+
+Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
+---
+ bgpd/bgp_attr.c | 34 ++++++++++++++++++++++------------
+ bgpd/bgp_attr.h | 3 +++
+ 2 files changed, 25 insertions(+), 12 deletions(-)
+
+diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c
+index f9fde9f..fcf8255 100644
+--- a/bgpd/bgp_attr.c
++++ b/bgpd/bgp_attr.c
+@@ -794,7 +794,7 @@ bgp_attr_malformed (struct bgp_attr_parser_args *args, u_char subcode,
+ return BGP_ATTR_PARSE_WITHDRAW;
+
+ /* default to reset */
+- return BGP_ATTR_PARSE_ERROR;
++ return BGP_ATTR_PARSE_ERROR_NOTIFYPLS;
+ }
+
+ /* Find out what is wrong with the path attribute flag bits and log the error.
+@@ -1483,7 +1483,7 @@ bgp_mp_reach_parse (struct bgp_attr_parser_args *args,
+ {
+ zlog_info ("%s: %s sent invalid length, %lu",
+ __func__, peer->host, (unsigned long)length);
+- return BGP_ATTR_PARSE_ERROR;
++ return BGP_ATTR_PARSE_ERROR_NOTIFYPLS;
+ }
+
+ /* Load AFI, SAFI. */
+@@ -1497,7 +1497,7 @@ bgp_mp_reach_parse (struct bgp_attr_parser_args *args,
+ {
+ zlog_info ("%s: %s, MP nexthop length, %u, goes past end of attribute",
+ __func__, peer->host, attre->mp_nexthop_len);
+- return BGP_ATTR_PARSE_ERROR;
++ return BGP_ATTR_PARSE_ERROR_NOTIFYPLS;
+ }
+
+ /* Nexthop length check. */
+@@ -1540,14 +1540,14 @@ bgp_mp_reach_parse (struct bgp_attr_parser_args *args,
+ default:
+ zlog_info ("%s: (%s) Wrong multiprotocol next hop length: %d",
+ __func__, peer->host, attre->mp_nexthop_len);
+- return BGP_ATTR_PARSE_ERROR;
++ return BGP_ATTR_PARSE_ERROR_NOTIFYPLS;
+ }
+
+ if (!LEN_LEFT)
+ {
+ zlog_info ("%s: (%s) Failed to read SNPA and NLRI(s)",
+ __func__, peer->host);
+- return BGP_ATTR_PARSE_ERROR;
++ return BGP_ATTR_PARSE_ERROR_NOTIFYPLS;
+ }
+
+ {
+@@ -1563,7 +1563,7 @@ bgp_mp_reach_parse (struct bgp_attr_parser_args *args,
+ {
+ zlog_info ("%s: (%s) Failed to read NLRI",
+ __func__, peer->host);
+- return BGP_ATTR_PARSE_ERROR;
++ return BGP_ATTR_PARSE_ERROR_NOTIFYPLS;
+ }
+
+ if (safi != SAFI_MPLS_LABELED_VPN)
+@@ -1573,7 +1573,7 @@ bgp_mp_reach_parse (struct bgp_attr_parser_args *args,
+ {
+ zlog_info ("%s: (%s) NLRI doesn't pass sanity check",
+ __func__, peer->host);
+- return BGP_ATTR_PARSE_ERROR;
++ return BGP_ATTR_PARSE_ERROR_NOTIFYPLS;
+ }
+ }
+
+@@ -1605,7 +1605,7 @@ bgp_mp_unreach_parse (struct bgp_attr_parser_args *args,
+
+ #define BGP_MP_UNREACH_MIN_SIZE 3
+ if ((length > STREAM_READABLE(s)) || (length < BGP_MP_UNREACH_MIN_SIZE))
+- return BGP_ATTR_PARSE_ERROR;
++ return BGP_ATTR_PARSE_ERROR_NOTIFYPLS;
+
+ afi = stream_getw (s);
+ safi = stream_getc (s);
+@@ -1616,7 +1616,7 @@ bgp_mp_unreach_parse (struct bgp_attr_parser_args *args,
+ {
+ ret = bgp_nlri_sanity_check (peer, afi, stream_pnt (s), withdraw_len);
+ if (ret < 0)
+- return BGP_ATTR_PARSE_ERROR;
++ return BGP_ATTR_PARSE_ERROR_NOTIFYPLS;
+ }
+
+ mp_withdraw->afi = afi;
+@@ -1913,6 +1913,14 @@ bgp_attr_parse (struct peer *peer, struct attr *attr, bgp_size_t size,
+ break;
+ }
+
++ if (ret == BGP_ATTR_PARSE_ERROR_NOTIFYPLS)
++ {
++ bgp_notify_send (peer,
++ BGP_NOTIFY_UPDATE_ERR,
++ BGP_NOTIFY_UPDATE_MAL_ATTR);
++ ret = BGP_ATTR_PARSE_ERROR;
++ }
++
+ /* If hard error occured immediately return to the caller. */
+ if (ret == BGP_ATTR_PARSE_ERROR)
+ {
+@@ -1920,9 +1928,6 @@ bgp_attr_parse (struct peer *peer, struct attr *attr, bgp_size_t size,
+ "%s: Attribute %s, parse error",
+ peer->host,
+ LOOKUP (attr_str, type));
+- bgp_notify_send (peer,
+- BGP_NOTIFY_UPDATE_ERR,
+- BGP_NOTIFY_UPDATE_MAL_ATTR);
+ if (as4_path)
+ aspath_unintern (&as4_path);
+ return ret;
+@@ -1979,9 +1984,14 @@ bgp_attr_parse (struct peer *peer, struct attr *attr, bgp_size_t size,
+ * all attributes first, including these 32bit ones, and now,
+ * afterwards, we look what and if something is to be done for as4.
+ */
++ /* actually... this doesn't ever return failure currently, but
++ * better safe than sorry */
+ if (bgp_attr_munge_as4_attrs (peer, attr, as4_path,
+ as4_aggregator, &as4_aggregator_addr))
+ {
++ bgp_notify_send (peer,
++ BGP_NOTIFY_UPDATE_ERR,
++ BGP_NOTIFY_UPDATE_MAL_ATTR);
+ if (as4_path)
+ aspath_unintern (&as4_path);
+ return BGP_ATTR_PARSE_ERROR;
+diff --git a/bgpd/bgp_attr.h b/bgpd/bgp_attr.h
+index cdd5467..cb401e7 100644
+--- a/bgpd/bgp_attr.h
++++ b/bgpd/bgp_attr.h
+@@ -136,6 +136,9 @@ typedef enum {
+ BGP_ATTR_PARSE_PROCEED = 0,
+ BGP_ATTR_PARSE_ERROR = -1,
+ BGP_ATTR_PARSE_WITHDRAW = -2,
++
++ /* only used internally, send notify + convert to BGP_ATTR_PARSE_ERROR */
++ BGP_ATTR_PARSE_ERROR_NOTIFYPLS = -3,
+ } bgp_attr_parse_ret_t;
+
+ /* Prototypes. */
+--
+2.0.1
+
diff --git a/main/quagga/APKBUILD b/main/quagga/APKBUILD
index f8fbca12ac..fcc16249ed 100644
--- a/main/quagga/APKBUILD
+++ b/main/quagga/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=quagga
pkgver=0.99.23
-pkgrel=0
+pkgrel=1
pkgdesc="A free routing daemon replacing Zebra supporting RIP, OSPF and BGP."
url="http://quagga.net/"
arch="all"
@@ -13,6 +13,12 @@ subpackages="$pkgname-dev $pkgname-doc"
pkgusers="quagga"
pkggroups="quagga"
source="http://download.savannah.gnu.org/releases/quagga/quagga-$pkgver.tar.xz
+ 0001-bgpd-fix-some-bgp_update_main-attribute-leaks.patch
+ 0002-bgpd-remove-duplicate-route-map-extcommunity-code.patch
+ 0003-bgpd-fix-double-free-after-extcommunity-set-BZ-799.patch
+ 0004-bgpd-fix-memory-leak-on-malformed-attribute.patch
+ 0005-bgpd-fix-IP-endianness-in-debug-message.patch
+ 0006-bgpd-don-t-send-NOTIFY-twice-for-malformed-attrs.patch
1001-bgpd-implement-next-hop-self-all.patch
musl-fix-headers.patch
bgpd.initd
@@ -72,18 +78,36 @@ package() {
install -o quagga -g quagga -d -m755 "$pkgdir"/etc/quagga
}
md5sums="92dff03272aa9127ac13c6bea9c66187 quagga-0.99.23.tar.xz
+af552fbb454cfde2559d4cfa34bf9af3 0001-bgpd-fix-some-bgp_update_main-attribute-leaks.patch
+d1441d208e8ecd676494b24dc45729d7 0002-bgpd-remove-duplicate-route-map-extcommunity-code.patch
+d2870b0ce97796503b2c284fc9668129 0003-bgpd-fix-double-free-after-extcommunity-set-BZ-799.patch
+2be17285dba25b2d07e546f95745c4a1 0004-bgpd-fix-memory-leak-on-malformed-attribute.patch
+d114d29e5463f910588b8a696af950bd 0005-bgpd-fix-IP-endianness-in-debug-message.patch
+265489d300fb6be9eb871fc3a29532ee 0006-bgpd-don-t-send-NOTIFY-twice-for-malformed-attrs.patch
2e78b3ea20041f94ff99798d37e1456e 1001-bgpd-implement-next-hop-self-all.patch
df62890cccdb7d9c7cc9b96167b9da8c musl-fix-headers.patch
e80a3df594eba8b09e19aa28d9283698 bgpd.initd
33d0e34f11460881161ab930d3d3b987 zebra.initd
34e06a1d2bc602ce691abc9ed169dd15 zebra.confd"
sha256sums="7f374da7bab275b9dd2be864ac6fb4e0552d455d6b15a7f1d7128f5208eadeee quagga-0.99.23.tar.xz
+afbf34bf84ed43d4a9ad9669adb5b3ffa7f8cd0a5993484032c5e7ddd50f474c 0001-bgpd-fix-some-bgp_update_main-attribute-leaks.patch
+64c956e8a57bc8137b88ec373a03afd09dd37b463f6a9817db74f730227dea64 0002-bgpd-remove-duplicate-route-map-extcommunity-code.patch
+82e1aa8c89ad542fb97c5d296151aa855c491d5df9bb7c0c858e9674ec57b313 0003-bgpd-fix-double-free-after-extcommunity-set-BZ-799.patch
+f9d6bb23ca06ad024c75d0dbd7b1c73faa6fbc649ab11d27be16245342a1bae5 0004-bgpd-fix-memory-leak-on-malformed-attribute.patch
+3c8fb410e589d679b98715bb3fce95dba408393a6a8f62a15def20e57d882e37 0005-bgpd-fix-IP-endianness-in-debug-message.patch
+3b54a7af83a7bc2750930e9810a89709221067261b2d4326cadc7cd069beb334 0006-bgpd-don-t-send-NOTIFY-twice-for-malformed-attrs.patch
979ed4f7a3e3b604a2cd3c717df467e253a4b75160f870343e6d96af0c9687ec 1001-bgpd-implement-next-hop-self-all.patch
f59f1f654e80ae9c80e6ea150e210d82aa799d44624fa361348fc242849d0ebc musl-fix-headers.patch
41471bfda120cb57bc0f40e87ec23a4f150d2b97c97ececdda6c408eab7cf9a3 bgpd.initd
d6cc9280df63859ba711ad2071b38b9ce317d718c34840a2b101debef3fa7b56 zebra.initd
f7a52d383f60270a5a8fee5d4ac522c5c0ec2b7c4b5252cff54e260f32d9b323 zebra.confd"
sha512sums="c8072da8cec96e023ba8a53da7b2bbe6d709d13a7d03204245f6a15b70be81f88106be4864ecd552d84660cd40e89cf52260bc850f948352a3068fb08fd918e0 quagga-0.99.23.tar.xz
+6c4dd606f879098ee1d56149899e9ef213b7527cbb3a5236c6229dcd892a0da4975d3edfaf831b1d9acc884e677f76286d06041af169d5e09adf6bf600765478 0001-bgpd-fix-some-bgp_update_main-attribute-leaks.patch
+86e363f8425630fc52fa9b88f949bde14fc1937a292ff44036b4661c23d004932788c62eaf324417b1296cc78a662a6355f122df78ad7f75b1aba6e141fb1260 0002-bgpd-remove-duplicate-route-map-extcommunity-code.patch
+7fb65225698f3a3730f0fd6714e3390c8dbad0bd5ba8c045812e07dcecc3ab967b2ff28c12de612a0c35b5eaa2058d05e31d77f574a932b97d4e422176be4d83 0003-bgpd-fix-double-free-after-extcommunity-set-BZ-799.patch
+9133dfa4ff092303c5fb1f8d49d3180c4f29bfffceede8034a1bfd22449c78fb41fb23349749523b4357e5b5613d24d6740220aeabb3d6590029704b4b5678a4 0004-bgpd-fix-memory-leak-on-malformed-attribute.patch
+bd99facfd6d4371d9982a8d56c36b924f6b4a8d0f4f61867ae26a07ca741bc0beb5c6522f138e4993b44e5a46f193e4f7ee7524861cbee6c823685190f73b1b9 0005-bgpd-fix-IP-endianness-in-debug-message.patch
+6bfcec805233c52a8c7b042eb501c78b861386e0645cba726e4d4bd02a300219541ae0b63ff78e7fd239c2c332560ac9b4f4efcb2a50682c1df95572dd3c45af 0006-bgpd-don-t-send-NOTIFY-twice-for-malformed-attrs.patch
44677f3852b31f2f2776507b0da004431d12253b5897336d49525114a87945283a21d6dfe6162a73ff1f006fc235e31a753ac591aa70e6b8f4fbb3adb75e00f9 1001-bgpd-implement-next-hop-self-all.patch
b0cbef2d1544efa8a194aa4f05bd17225073dff7526bfa84a6068d7ae5806ff045c62c914999e1ecae04c4b251713aed5d5b0a6a98db6c3176ddf122d76894c7 musl-fix-headers.patch
d2bf7e8f2da49d0b039e72e76a77860b5b49d41a80550d6dc84791bbdec1d52e579393c5d42b45aa615991742421fef53ec1b92a5e740779b6060e20f5dd0413 bgpd.initd