2016-12-13 23:02:51 +00:00
|
|
|
#include "ks_dht.h"
|
|
|
|
#include "ks_dht-int.h"
|
|
|
|
#include "sodium.h"
|
|
|
|
|
2016-12-15 05:27:54 +00:00
|
|
|
KS_DECLARE(ks_status_t) ks_dht_datagram_create(ks_dht_datagram_t **datagram,
|
|
|
|
ks_pool_t *pool,
|
|
|
|
ks_dht_t *dht,
|
|
|
|
ks_dht_endpoint_t *endpoint,
|
|
|
|
const ks_sockaddr_t *raddr)
|
2016-12-13 23:02:51 +00:00
|
|
|
{
|
|
|
|
ks_dht_datagram_t *dg;
|
2016-12-15 05:27:54 +00:00
|
|
|
ks_status_t ret = KS_STATUS_SUCCESS;
|
2016-12-13 23:02:51 +00:00
|
|
|
|
|
|
|
ks_assert(datagram);
|
|
|
|
ks_assert(pool);
|
2016-12-15 05:27:54 +00:00
|
|
|
ks_assert(dht);
|
|
|
|
ks_assert(endpoint);
|
|
|
|
ks_assert(raddr);
|
|
|
|
ks_assert(raddr->family == AF_INET || raddr->family == AF_INET6);
|
2016-12-16 01:58:21 +00:00
|
|
|
|
2016-12-13 23:02:51 +00:00
|
|
|
*datagram = dg = ks_pool_alloc(pool, sizeof(ks_dht_datagram_t));
|
2016-12-16 01:58:21 +00:00
|
|
|
ks_assert(dg);
|
2016-12-13 23:02:51 +00:00
|
|
|
|
2016-12-16 01:58:21 +00:00
|
|
|
dg->pool = pool;
|
2016-12-15 05:27:54 +00:00
|
|
|
dg->dht = dht;
|
|
|
|
dg->endpoint = endpoint;
|
|
|
|
dg->raddr = *raddr;
|
2016-12-13 23:02:51 +00:00
|
|
|
|
2016-12-15 05:27:54 +00:00
|
|
|
memcpy(dg->buffer, dht->recv_buffer, dht->recv_buffer_length);
|
|
|
|
dg->buffer_length = dht->recv_buffer_length;
|
2016-12-13 23:02:51 +00:00
|
|
|
|
2016-12-16 01:58:21 +00:00
|
|
|
// done:
|
2016-12-15 05:27:54 +00:00
|
|
|
if (ret != KS_STATUS_SUCCESS) {
|
2016-12-17 23:10:58 +00:00
|
|
|
ks_dht_datagram_destroy(datagram);
|
2016-12-15 05:27:54 +00:00
|
|
|
}
|
|
|
|
return ret;
|
2016-12-13 23:02:51 +00:00
|
|
|
}
|
|
|
|
|
2016-12-15 05:27:54 +00:00
|
|
|
KS_DECLARE(void) ks_dht_datagram_destroy(ks_dht_datagram_t **datagram)
|
2016-12-13 23:02:51 +00:00
|
|
|
{
|
2016-12-15 05:27:54 +00:00
|
|
|
ks_dht_datagram_t *dg;
|
2016-12-13 23:02:51 +00:00
|
|
|
|
|
|
|
ks_assert(datagram);
|
2016-12-15 05:27:54 +00:00
|
|
|
ks_assert(*datagram);
|
2016-12-13 23:02:51 +00:00
|
|
|
|
2016-12-15 05:27:54 +00:00
|
|
|
dg = *datagram;
|
2016-12-13 23:02:51 +00:00
|
|
|
|
2016-12-17 23:10:58 +00:00
|
|
|
ks_pool_free(dg->pool, datagram);
|
2016-12-13 23:02:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* For Emacs:
|
|
|
|
* Local Variables:
|
|
|
|
* mode:c
|
|
|
|
* indent-tabs-mode:t
|
|
|
|
* tab-width:4
|
|
|
|
* c-basic-offset:4
|
|
|
|
* End:
|
|
|
|
* For VIM:
|
|
|
|
* vim:set softtabstop=4 shiftwidth=4 tabstop=4 noet:
|
|
|
|
*/
|