This will be used by an update to the netdb exchange format
to allow ipv4/ipv6 database exchanges.
http://code.google.com/p/lusca-cache/source/detail?r=14938
Modified:
/playpen/LUSCA_HEAD_ipv6/src/net_db.c
/playpen/LUSCA_HEAD_ipv6/src/structs.h
=======================================
--- /playpen/LUSCA_HEAD_ipv6/src/net_db.c Thu Jul 14 09:47:54 2011
+++ /playpen/LUSCA_HEAD_ipv6/src/net_db.c Fri Jul 22 20:53:26 2011
@@ -87,16 +87,14 @@
netdbHashInsert(netdbEntry * n, sqaddr_t *addr)
{
char sbuf[MAX_IPSTRLEN];
- sqaddr_t a;
-
- sqinet_init(&a);
- networkFromInaddr(&a, addr);
- (void) sqinet_ntoa(&a, sbuf, MAX_IPSTRLEN, SQADDR_NO_BRACKET_V6);
+
+ sqinet_init(&n->net);
+ networkFromInaddr(&n->net, addr);
+ (void) sqinet_ntoa(&n->net, sbuf, MAX_IPSTRLEN, SQADDR_NO_BRACKET_V6);
xstrncpy(n->network, sbuf, MAX_IPSTRLEN);
n->hash.key = n->network;
assert(hash_lookup(addr_table, n->network) == NULL);
hash_join(addr_table, &n->hash);
- sqinet_done(&a);
}
static void
@@ -166,6 +164,7 @@
n->n_peers_alloc = 0;
if (n->link_count == 0) {
netdbHashDelete(n->network);
+ sqinet_done(&n->net);
memPoolFree(pool_netdb_entry, n);
}
}
@@ -233,6 +232,7 @@
netdbPurgeLRU();
if ((n = netdbLookupAddr(addr)) == NULL) {
n = memPoolAlloc(pool_netdb_entry);
+ sqinet_init(&n->net);
netdbHashInsert(n, addr);
}
return n;
@@ -518,6 +518,11 @@
N.last_use_time = (time_t) atoi(q);
n = memPoolAlloc(pool_netdb_entry);
xmemcpy(n, &N, sizeof(netdbEntry));
+ /*
+ * XXX this is ugly, but setup the net variable -after-
+ * XXX the struct has been copied in-place. ew.
+ */
+ sqinet_init(&n->net);
netdbHashInsert(n, &addr);
while ((q = strtok(NULL, w_space)) != NULL) {
if (netdbLookupHost(q) != NULL) /* no dups! */
@@ -550,6 +555,7 @@
{
netdbEntry *n = data;
safe_free(n->peers);
+ sqinet_done(&n->net);
memPoolFree(pool_netdb_entry, n);
}
=======================================
--- /playpen/LUSCA_HEAD_ipv6/src/structs.h Thu Jul 14 09:47:54 2011
+++ /playpen/LUSCA_HEAD_ipv6/src/structs.h Fri Jul 22 20:53:26 2011
@@ -1320,6 +1320,7 @@
struct _netdbEntry {
hash_link hash; /* must be first */
+ sqaddr_t net;
char network[MAX_IPSTRLEN];
int pings_sent;
int pings_recv;