summaryrefslogtreecommitdiffstats
path: root/lib/hash.h
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2015-05-20 03:03:47 +0200
committerDonald Sharp <sharpd@cumulusnetworks.com>2015-05-20 03:03:47 +0200
commit3f9c7369f7112d87007b87a5faaa61cdd5e24c39 (patch)
tree2a9f7a8368ea0468932fbb2fd755f8aa92f7a3d9 /lib/hash.h
parentIf the .conf file for a process is missing have /etc/init.d/quagga touch it s... (diff)
downloadfrr-3f9c7369f7112d87007b87a5faaa61cdd5e24c39.tar.xz
frr-3f9c7369f7112d87007b87a5faaa61cdd5e24c39.zip
BGP: Add dynamic update group support
This patch implements the 'update-groups' functionality in BGP. This is a function that can significantly improve BGP performance for Update generation and resultant network convergence. BGP Updates are formed for "groups" of peers and then replicated and sent out to each peer rather than being formed for each peer. Thus major BGP operations related to outbound policy application, adj-out maintenance and actual Update packet formation are optimized. BGP update-groups dynamically groups peers together based on configuration as well as run-time criteria. Thus, it is more flexible than update-formation based on peer-groups, which relies on operator configuration. [Note that peer-group based update formation has been introduced into BGP by Cumulus but is currently intended only for specific releases.] From 11098af65b2b8f9535484703e7f40330a71cbae4 Mon Sep 17 00:00:00 2001 Subject: [PATCH] updgrp commits
Diffstat (limited to 'lib/hash.h')
-rw-r--r--lib/hash.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/hash.h b/lib/hash.h
index 920c6685f..9707dbd1b 100644
--- a/lib/hash.h
+++ b/lib/hash.h
@@ -25,6 +25,9 @@ Boston, MA 02111-1307, USA. */
#define HASH_INITIAL_SIZE 256 /* initial number of backets. */
#define HASH_THRESHOLD 10 /* expand when backet. */
+#define HASHWALK_CONTINUE 0
+#define HASHWALK_ABORT -1
+
struct hash_backet
{
/* Linked list. */
@@ -71,6 +74,9 @@ extern void *hash_release (struct hash *, void *);
extern void hash_iterate (struct hash *,
void (*) (struct hash_backet *, void *), void *);
+extern void hash_walk (struct hash *,
+ int (*) (struct hash_backet *, void *), void *);
+
extern void hash_clean (struct hash *, void (*) (void *));
extern void hash_free (struct hash *);