[PATCH v2 0/6] Add hash support to libnl caches

roopa at cumulusnetworks.com roopa at cumulusnetworks.com
Fri Nov 9 17:41:30 EST 2012


From: roopa <roopa at cumulusnetworks.com>

This patch series adds hash lookup functionality for libnl caches.
In our tests we have found that the current linear search for libnl
cache objects does not scale well.

The current list representation continues to exist.
Hash support requires each object type to define a keygen operation
to generate the hash key. The hash is allocated at cache creation time.
If the cache object type does not support the keygen op, hash table is
not created for that cache.

This series adds keygen functions to link, neigh and route objects.

Note: Could not really verify if the documentation built correctly.
Can fix if there are problems.

Changelog v2:
- Addressed comments from thomas about keygen function and hashtable size

Signed-off-by: Shrijeet Mukherjee <shm at cumulusnetworks.com>
Signed-off-by: Nolan Leake <nolan at cumulusnetworks.com>
Signed-off-by: Roopa Prabhu <roopa at cumulusnetworks.com>
Reviewed-by: Wilson Kok <wkok at cumulusnetworks.com>

roopa (6):
  Add hash function
  Add nl hashtable structures and access functions
  Add hash support in cache mngr
  Add hash support to link cache
  Add hash support to neigh cache
  Add hash support to route cache

 include/netlink-types.h      |    2 +
 include/netlink/cache-api.h  |    3 +
 include/netlink/cache.h      |    2 +
 include/netlink/hash.h       |   69 ++++++
 include/netlink/hashtable.h  |   53 +++++
 include/netlink/object-api.h |    9 +
 include/netlink/object.h     |    2 +
 include/netlink/route/link.h |    2 +
 lib/Makefile.am              |    2 +-
 lib/cache.c                  |   86 +++++++-
 lib/hash.c                   |  482 ++++++++++++++++++++++++++++++++++++++++++
 lib/hashtable.c              |  141 ++++++++++++
 lib/object.c                 |   21 ++
 lib/route/link.c             |   34 +++
 lib/route/neigh.c            |   50 +++++
 lib/route/route_obj.c        |   55 +++++
 16 files changed, 1009 insertions(+), 4 deletions(-)
 create mode 100644 include/netlink/hash.h
 create mode 100644 include/netlink/hashtable.h
 create mode 100644 lib/hash.c
 create mode 100644 lib/hashtable.c

-- 
1.7.2.5




More information about the libnl mailing list