typedef struct ks_dhtrt_bucket_entry_s {
ks_time_t tyme;
ks_time_t ping_tyme;
- uint8_t id[KS_DHT_NODEID_SIZE];
+// uint8_t id[KS_DHT_NODEID_SIZE];
ks_dht_node_t *gptr; /* ptr to peer */
uint8_t inuse;
uint8_t outstanding_pings;
tdiff >= KS_DHTRT_EXPIREDTIME && /* beyond expired time */
e->outstanding_pings >= KS_DHTRT_MAXPING ) { /* has been retried */
ks_log(KS_LOG_DEBUG,"process_table: expiring node %s\n",
- ks_dhtrt_printableid(e->id, buf));
+ ks_dhtrt_printableid(e->gptr->nodeid.id, buf));
e->flags = DHTPEER_EXPIRED;
++b->expired_count;
e->outstanding_pings = 0; /* extinguish all hope: do not retry again */
for (int ix=0; ix<KS_DHT_BUCKETSIZE; ++ix) {
memset(buffer, 0, 100);
if (b->entries[ix].inuse == 1) {
- ks_dhtrt_printableid(b->entries[ix].id, buffer);
+ ks_dhtrt_printableid(b->entries[ix].gptr->nodeid.id, buffer);
ks_dht_node_t *n = b->entries[ix].gptr;
ks_log(KS_LOG_DEBUG, " slot %d: flags:%d %d type:%d family:%d %s\n", ix,
b->entries[ix].flags,
for (int ix=0; ix<KS_DHT_BUCKETSIZE; ++ix) {
if ( bucket->entries[ix].inuse == 1 &&
- (!memcmp(nodeid, bucket->entries[ix].id, KS_DHT_NODEID_SIZE)) ) {
+ (!memcmp(nodeid, bucket->entries[ix].gptr->nodeid.id, KS_DHT_NODEID_SIZE)) ) {
return &(bucket->entries[ix]);
}
}
for ( ; rix<KS_DHT_BUCKETSIZE; ++rix) {
- if (ks_dhtrt_ismasked(source->entries[rix].id, left->mask)) {
+ if (ks_dhtrt_ismasked(source->entries[rix].gptr->nodeid.id, left->mask)) {
/* move it to the left */
memcpy(&dest->entries[lix], &source->entries[rix], sizeof(ks_dhtrt_bucket_entry_t));
expiredix = ix;
}
- else if (!memcmp(bucket->entries[ix].id, node->nodeid.id, KS_DHT_NODEID_SIZE)) {
+ else if (!memcmp(bucket->entries[ix].gptr->nodeid.id, node->nodeid.id, KS_DHT_NODEID_SIZE)) {
#ifdef KS_DHT_DEBUGPRINTF_
char buffer[100];
ks_log(KS_LOG_DEBUG, "duplicate peer %s found at %d\n", ks_dhtrt_printableid(node->nodeid.id, buffer), ix);
++bucket->count; /* yes: increment total count */
}
- memcpy(bucket->entries[free].id, node->nodeid.id, KS_DHT_NODEID_SIZE);
+ memcpy(bucket->entries[free].gptr->nodeid.id, node->nodeid.id, KS_DHT_NODEID_SIZE);
#ifdef KS_DHT_DEBUGPRINTF_
char buffer[100];
ks_log(KS_LOG_DEBUG, "Inserting node %s at %d\n", ks_dhtrt_printableid(node->nodeid.id, buffer), free);
#endif
if ( bucket->entries[ix].inuse == 1 &&
bucket->entries[ix].flags == DHTPEER_ACTIVE &&
- (!memcmp(id, bucket->entries[ix].id, KS_DHT_NODEID_SIZE)) ) {
+ (!memcmp(id, bucket->entries[ix].gptr->nodeid.id, KS_DHT_NODEID_SIZE)) ) {
return bucket->entries[ix].gptr;
}
}
#ifdef KS_DHT_DEBUGPRINTFX_
char bufferx[100];
ks_log(KS_LOG_DEBUG, "bucket->entries[%d].id = %s inuse=%c\n", ix,
- ks_dhtrt_printableid(bucket->entries[ix].id, bufferx),
+ ks_dhtrt_printableid(bucket->entries[ix].gptr->nodeid.id, bufferx),
bucket->entries[ix].inuse );
#endif
if ( bucket->entries[ix].inuse == 1 &&
- (!memcmp(id, bucket->entries[ix].id, KS_DHT_NODEID_SIZE)) ) {
+ (!memcmp(id, bucket->entries[ix].gptr->nodeid.id, KS_DHT_NODEID_SIZE)) ) {
bucket->entries[ix].inuse = 0;
bucket->entries[ix].gptr = 0;
bucket->entries[ix].flags = 0;
(bucket->entries[ix].gptr->type & type) ) { /* match type */
/* calculate xor value */
- ks_dhtrt_xor(bucket->entries[ix].id, id, xorvalue );
+ ks_dhtrt_xor(bucket->entries[ix].gptr->nodeid.id, id, xorvalue );
/* do we need to hold this one */
if ( count < max || /* yes: we have not filled the quota yet */
#ifdef KS_DHT_DEBUGPRINTF_
char buf[100];
ks_log(KS_LOG_DEBUG, "Ping queued for nodeid %s count %d\n",
- ks_dhtrt_printableid(entry->id,buf), entry->outstanding_pings);
+ ks_dhtrt_printableid(entry->gptr->nodeid.id,buf), entry->outstanding_pings);
/*printf("ping: %s\n", buf); fflush(stdout);*/
#endif
ks_dht_node_t* node = entry->gptr;