#include "sockunion.h"
#include "memory.h"
#include "log.h"
+#include "jhash.h"
DEFINE_MTYPE_STATIC(LIB, PREFIX, "Prefix")
(uint8_t)mac->octet[4], (uint8_t)mac->octet[5]);
return ptr;
}
+
+unsigned prefix_hash_key(void *pp)
+{
+ struct prefix copy;
+
+ /* make sure *all* unused bits are zero, particularly including
+ * alignment /
+ * padding and unused prefix bytes. */
+ memset(©, 0, sizeof(copy));
+ prefix_copy(©, (struct prefix *)pp);
+ return jhash(©, sizeof(copy), 0x55aa5a5a);
+}
extern int prefix_str2mac(const char *str, struct ethaddr *mac);
extern char *prefix_mac2str(const struct ethaddr *mac, char *buf, int size);
+extern unsigned prefix_hash_key(void *pp);
+
static inline int ipv6_martian(struct in6_addr *addr)
{
struct in6_addr localhost_addr;
#include "table.h"
#include "memory.h"
#include "sockunion.h"
-#include "jhash.h"
DEFINE_MTYPE(LIB, ROUTE_TABLE, "Route table")
DEFINE_MTYPE(LIB, ROUTE_NODE, "Route node")
static void route_node_delete(struct route_node *);
static void route_table_free(struct route_table *);
-static unsigned route_table_hash_key(void *pp)
-{
- struct prefix copy;
-
- /* make sure *all* unused bits are zero, particularly including
- * alignment /
- * padding and unused prefix bytes. */
- memset(©, 0, sizeof(copy));
- prefix_copy(©, (struct prefix *)pp);
- return jhash(©, sizeof(copy), 0x55aa5a5a);
-}
-
static int route_table_hash_cmp(const void *a, const void *b)
{
const struct prefix *pa = a, *pb = b;
rt = XCALLOC(MTYPE_ROUTE_TABLE, sizeof(struct route_table));
rt->delegate = delegate;
- rt->hash = hash_create(route_table_hash_key, route_table_hash_cmp,
+ rt->hash = hash_create(prefix_hash_key, route_table_hash_cmp,
"route table hash");
return rt;
}