[packages] quagga: Revert community related memleak fixes until properly implemented
authoracinonyx <acinonyx@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Thu, 13 Jan 2011 00:14:03 +0000 (00:14 +0000)
committeracinonyx <acinonyx@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Thu, 13 Jan 2011 00:14:03 +0000 (00:14 +0000)
git-svn-id: svn+ssh://svn.openwrt.org/openwrt@24972 3c298f89-4303-0410-b956-a3cf2f4a3e73

Makefile
patches/999-PW-8083-Intern_communities_in_route_maps.patch [deleted file]
patches/999-PW-8261-memleak_del_community.patch [deleted file]

index 50eb7a03c95a4a15f6e3d7e2b50777d8c0b432cd..42ad5b467874caf0ff1ee4710488225530285d08 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -15,7 +15,7 @@ ifneq ($(CONFIG_QUAGGA_OLD),)
   PATCH_DIR:=./patches-old
 else
   PKG_VERSION:=0.99.17
-  PKG_RELEASE:=6
+  PKG_RELEASE:=7
   PKG_MD5SUM:=37b9022adca04b03863d2d79787e643f
 endif
 
diff --git a/patches/999-PW-8083-Intern_communities_in_route_maps.patch b/patches/999-PW-8083-Intern_communities_in_route_maps.patch
deleted file mode 100644 (file)
index dde6f2b..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-From patchwork Sat Jul 24 16:44:07 2010
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [quagga-dev,8083,3/3] bgpd: "Intern" communities in route maps
-Date: Sat, 24 Jul 2010 15:44:07 -0000
-From: Michael Lambert <lambert@psc.edu>
-X-Patchwork-Id: 253
-Message-Id: <201007241836.o6OIa8gR023592@tesla.psc.edu>
-To: quagga-dev@lists.quagga.net
-
-* bgp_community.[ch]: (community_lookup) New helper function to look
-  up a community list in the hash table.
-
-* bgp_routemap.c: A new community structure was being allocated for
-  every BGP update which matched a route map which set a community.
-  This behavior led to rapid growth in the memory consumed by bgpd.
-  Adding the communities to the hash table addresses the memory
-  growth, but may introduce a problem in modifying or deleting the
-  'set community' statement in the route map.
-
----
-bgpd/bgp_community.c |    7 +++++++
- bgpd/bgp_community.h |    1 +
- bgpd/bgp_routemap.c  |    8 +++++---
- 3 files changed, 13 insertions(+), 3 deletions(-)
-
---- a/bgpd/bgp_community.c
-+++ b/bgpd/bgp_community.c
-@@ -292,6 +292,13 @@ community_com2str  (struct community *co
-   return str;
- }
-+/* Find an 'intern'ed community structure */
-+struct community *
-+community_lookup (struct community *com)
-+{
-+   return (struct community *) hash_lookup (comhash, com);
-+}
-+
- /* Intern communities attribute.  */
- struct community *
- community_intern (struct community *com)
---- a/bgpd/bgp_community.h
-+++ b/bgpd/bgp_community.h
-@@ -70,5 +70,6 @@ extern int community_include (struct com
- extern void community_del_val (struct community *, u_int32_t *);
- extern unsigned long community_count (void);
- extern struct hash *community_hash (void);
-+extern struct community *community_lookup (struct community *);
- #endif /* _QUAGGA_BGP_COMMUNITY_H */
---- a/bgpd/bgp_routemap.c
-+++ b/bgpd/bgp_routemap.c
-@@ -1389,7 +1389,7 @@ route_set_community (void *rule, struct 
-       new = community_dup (rcs->com);
-       
-       /* will be interned by caller if required */
--      attr->community = new;
-+      attr->community = community_intern (new);
-       attr->flag |= ATTR_FLAG_BIT (BGP_ATTR_COMMUNITIES);
-     }
-@@ -1403,6 +1403,7 @@ route_set_community_compile (const char 
- {
-   struct rmap_com_set *rcs;
-   struct community *com = NULL;
-+  struct community *comint;
-   char *sp;
-   int additive = 0;
-   int none = 0;
-@@ -1429,8 +1430,9 @@ route_set_community_compile (const char 
-       return NULL;
-     }
-   
-+  comint = community_intern (com);
-   rcs = XCALLOC (MTYPE_ROUTE_MAP_COMPILED, sizeof (struct rmap_com_set));
--  rcs->com = com;
-+  rcs->com = comint;
-   rcs->additive = additive;
-   rcs->none = none;
-   
-@@ -1493,7 +1495,7 @@ route_set_community_delete (void *rule, 
-           }
-         else
-           {
--            binfo->attr->community = new;
-+            binfo->attr->community = community_intern (new);
-             binfo->attr->flag |= ATTR_FLAG_BIT (BGP_ATTR_COMMUNITIES);
-           }
-       }
diff --git a/patches/999-PW-8261-memleak_del_community.patch b/patches/999-PW-8261-memleak_del_community.patch
deleted file mode 100644 (file)
index 662fe8f..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-From patchwork Mon Sep 13 15:48:11 2010
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [quagga-dev,8261] bgpd: fix memory leak when deleting a community
-Date: Mon, 13 Sep 2010 14:48:11 -0000
-From: Michael Lambert <lambert@psc.edu>
-X-Patchwork-Id: 281
-Message-Id: <20100913171959.5276EAAAC32@ebola.psc.edu>
-To: quagga-dev@lists.quagga.net
-Cc: lambert@psc.edu
-
-* bgp_routemap.c: (route_set_community_delete) When deleting a
-  community in a route-map the old community was being orphaned.  Like
-  the description of the same code in route_set_community, this is a
-  hack, not a true fix.
-
----
-bgpd/bgp_routemap.c |    7 +++++++
- 1 files changed, 7 insertions(+), 0 deletions(-)
-
---- a/bgpd/bgp_routemap.c
-+++ b/bgpd/bgp_routemap.c
-@@ -1487,6 +1487,13 @@ route_set_community_delete (void *rule, 
-         new = community_uniq_sort (merge);
-         community_free (merge);
-+        /* HACK: if the old community is not intern'd,
-+         * we should free it here, or all reference to it may be lost.
-+         * Really need to cleanup attribute caching sometime.
-+         */
-+        if (old->refcnt == 0)
-+          community_free (old);
-+
-         if (new->size == 0)
-           {
-             binfo->attr->community = NULL;