Signed-off-by: Timo Teräs <timo.teras@iki.fi>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
#include "memory.h"
#include "str.h"
#include "log.h"
+#include "jhash.h"
#ifndef HAVE_INET_ATON
int
return 0;
}
+unsigned int
+sockunion_hash (const union sockunion *su)
+{
+ switch (sockunion_family(su))
+ {
+ case AF_INET:
+ return jhash_1word(su->sin.sin_addr.s_addr, 0);
+#ifdef HAVE_IPV6
+ case AF_INET6:
+ return jhash2(su->sin6.sin6_addr.s6_addr32, ZEBRA_NUM_OF(su->sin6.sin6_addr.s6_addr32), 0);
+#endif /* HAVE_IPV6 */
+ }
+ return 0;
+}
+
/* After TCP connection is established. Get local address and port. */
union sockunion *
sockunion_getsockname (int fd)
extern const char *sockunion2str (union sockunion *, char *, size_t);
extern int sockunion_cmp (union sockunion *, union sockunion *);
extern int sockunion_same (const union sockunion *, const union sockunion *);
+extern unsigned int sockunion_hash (const union sockunion *);
extern union sockunion *sockunion_str2su (const char *str);
extern int sockunion_accept (int sock, union sockunion *);