25#if !defined(__LWS_DHT_H__)
66#define LWS_DHT_SHA1_HASH_LEN 20
122#define LWS_DHT_STAT_BUCKETS 48
172 int want,
int confirm);
177 uint8_t *token,
size_t token_len,
const uint8_t *sha256,
int confirm);
181 const uint8_t *tid,
size_t tid_len);
211lws_dht_msg_gen(
char *out,
size_t len,
const char *verb,
const char *hash,
unsigned long long offset,
unsigned long long len_val);
263 const void *v1,
int len1,
264 const void *v2,
int len2,
265 const void *v3,
int len3);
281#define DHT_MAX_PEERS 2048
284#define DHT_MAX_HASHES 16384
287#define DHT_MAX_SEARCHES 1024
290#define DHT_SEARCH_EXPIRE_TIME (62 * 60)
469lws_dht_nodes(
struct lws_dht_ctx *ctx,
int af,
int *good_return,
int *dubious_return,
470 int *cached_return,
int *incoming_return);
uint32_t rx_announce_peer
lws_dht_hash_cb_t * hash_cb
const struct sockaddr * from
const char * fallback_nodes_path
char hash[LWS_GENHASH_LARGEST *2+1]
const lws_dht_hash_t * id
lws_dht_blacklist_cb_t * blacklist_cb
lws_dht_verb_result_t out_precedence
uint32_t tx_announce_peer
unsigned long long offset
const struct lws_dht_msg * msg
lws_dht_capture_announce_cb_t * capture_announce_cb
LWS_VISIBLE LWS_EXTERN void lws_dht_hash_destroy(lws_dht_hash_t **p)
LWS_VISIBLE LWS_EXTERN int lws_dht_get_fallback_node(struct lws_context *cx, const char *custom_path, char *result, size_t result_len)
int lws_dht_blacklist_cb_t(const struct sockaddr *sa, size_t salen)
LWS_VISIBLE LWS_EXTERN struct lws_transport_sequencer * lws_dht_get_ts(struct lws_dht_ctx *ctx, const struct sockaddr *dest, size_t salen, int create)
LWS_VISIBLE LWS_EXTERN int lws_dht_nodes(struct lws_dht_ctx *ctx, int af, int *good_return, int *dubious_return, int *cached_return, int *incoming_return)
LWS_VISIBLE LWS_EXTERN int lws_dht_msg_parse(const char *in, size_t len, struct lws_dht_msg *out)
LWS_VISIBLE LWS_EXTERN int lws_dht_msg_gen(char *out, size_t len, const char *verb, const char *hash, unsigned long long offset, unsigned long long len_val)
const struct lws_protocols lws_dht_protocol
struct lws_dht_info lws_dht_info_t
LWS_VISIBLE LWS_EXTERN int lws_dht_send_ack(struct lws_dht_ctx *ctx, const struct sockaddr *sa, size_t salen, const uint8_t *tid, size_t tid_len)
LWS_VISIBLE LWS_EXTERN void lws_dht_destroy(struct lws_dht_ctx **pctx)
void lws_dht_callback_t(void *closure, int event, const lws_dht_hash_t *info_hash, const void *data, size_t data_len, const struct sockaddr *from, size_t fromlen)
LWS_VISIBLE LWS_EXTERN const lws_dht_hash_t * lws_dht_get_myid(struct lws_dht_ctx *ctx)
LWS_VISIBLE LWS_EXTERN lws_dht_hash_t * lws_dht_hash_create(int type, int len, const uint8_t *data)
LWS_VISIBLE LWS_EXTERN int lws_dht_send_data(struct lws_dht_ctx *ctx, const struct sockaddr *dest, const void *data, size_t len)
LWS_VISIBLE LWS_EXTERN int lws_dht_ping_node(struct lws_dht_ctx *ctx, struct sockaddr *sa, size_t salen)
LWS_VISIBLE LWS_EXTERN int lws_dht_get_stats(struct lws_vhost *vh, struct lws_dht_stats *current, const struct lws_dht_stats **history, int *head)
LWS_VISIBLE LWS_EXTERN void * lws_dht_get_closure(struct lws_dht_ctx *ctx)
LWS_VISIBLE LWS_EXTERN int lws_dht_insert_node(struct lws_dht_ctx *ctx, const lws_dht_hash_t *id, struct sockaddr *sa, size_t salen)
LWS_VISIBLE LWS_EXTERN int lws_dht_register_verbs(struct lws_dht_ctx *ctx, const char **verbs, int count, const struct lws_protocols *protocol)
void lws_dht_capture_announce_cb_t(struct lws_dht_ctx *ctx, lws_dht_hash_t *hash, const struct sockaddr *fromaddr, unsigned short prt)
LWS_VISIBLE LWS_EXTERN struct lws_dht_ctx * lws_dht_create(const lws_dht_info_t *info)
LWS_VISIBLE LWS_EXTERN int lws_dht_notify_subscribers(struct lws_dht_ctx *ctx, const lws_dht_hash_t *hash, const uint8_t *sha256)
LWS_VISIBLE LWS_EXTERN int lws_dht_send_subscribe(struct lws_dht_ctx *ctx, const struct sockaddr *sa, size_t salen, uint8_t *tid, size_t tid_len, const lws_dht_hash_t *infohash, int want, int confirm)
void lws_dht_hash_cb_t(void *hash_return, int hash_size, const void *v1, int len1, const void *v2, int len2, const void *v3, int len3)
LWS_VISIBLE LWS_EXTERN int lws_dht_search(struct lws_dht_ctx *ctx, const lws_dht_hash_t *id, int port, int af, lws_dht_callback_t *callback, void *closure)
struct lws_dht_hash lws_dht_hash_t
LWS_VISIBLE LWS_EXTERN int lws_dht_get_nodes(struct lws_dht_ctx *ctx, struct sockaddr_in *sin, int *num, struct sockaddr_in6 *sin6, int *num6)
LWS_VISIBLE LWS_EXTERN void lws_dht_dump_tables(struct lws_dht_ctx *ctx)
LWS_VISIBLE LWS_EXTERN int lws_dht_get_external_addr(struct lws_dht_ctx *ctx, struct sockaddr_storage *ss, size_t *sslen)
LWS_VISIBLE LWS_EXTERN struct lws_dht_ctx * lws_dht_get_by_name(struct lws_vhost *vhost, const char *name)
LWS_VISIBLE LWS_EXTERN int lws_dht_send_data_at(struct lws_dht_ctx *ctx, const struct sockaddr *dest, uint64_t offset, const void *data, size_t len)
LWS_VISIBLE LWS_EXTERN int lws_dht_send_subscribe_confirm(struct lws_dht_ctx *ctx, const struct sockaddr *sa, size_t salen, uint8_t *tid, size_t tid_len, const lws_dht_hash_t *infohash, uint8_t *token, size_t token_len, const uint8_t *sha256, int confirm)
@ LWS_DHT_VERB_RESULT_DROP_OLDER
@ LWS_DHT_VERB_RESULT_PROCEED
@ LWS_DHT_VERB_RESULT_ERROR
@ LWS_DHT_VERB_RESULT_REPLACE_OLDER
@ LWS_DHT_VERB_RESULT_PASS
@ LWS_DHT_VERB_RESULT_PENDING_ASYNC
@ LWS_DHT_EVENT_SEARCH_DONE
@ LWS_DHT_EVENT_EXTERNAL_ADDR6
@ LWS_DHT_EVENT_EXTERNAL_ADDR
@ LWS_DHT_EVENT_SEARCH_DONE6
@ LWS_DHT_EVENT_WRITE_FAILED
@ LWS_DHT_EVENT_WRITE_COMPLETED
@ LWS_DHT_HASH_TYPE_SHA512
@ LWS_DHT_HASH_TYPE_SHA256
@ LWS_DHT_HASH_TYPE_BLAKE3
@ LWS_DHT_HASH_TYPE_UNKNOWN
#define LWS_GENHASH_LARGEST