libwebsockets
Lightweight C library for HTML5 websockets
Loading...
Searching...
No Matches
lws-dht.h File Reference
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <libwebsockets/lws-genhash.h>
+ Include dependency graph for lws-dht.h:

Go to the source code of this file.

Data Structures

struct  lws_dht_hash
 
struct  lws_dht_msg
 
struct  lws_dht_stats
 
struct  lws_dht_verb_dispatch_args
 
struct  lws_dht_info
 

Macros

#define LWS_DHT_SHA1_HASH_LEN   20
 
#define LWS_DHT_STAT_BUCKETS   48
 
#define DHT_MAX_PEERS   2048
 
#define DHT_MAX_HASHES   16384
 
#define DHT_MAX_SEARCHES   1024
 
#define DHT_SEARCH_EXPIRE_TIME   (62 * 60)
 

Typedefs

typedef struct lws_dht_hash lws_dht_hash_t
 
typedef 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)
 
typedef int lws_dht_blacklist_cb_t(const struct sockaddr *sa, size_t salen)
 
typedef 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)
 
typedef void lws_dht_capture_announce_cb_t(struct lws_dht_ctx *ctx, lws_dht_hash_t *hash, const struct sockaddr *fromaddr, unsigned short prt)
 
typedef struct lws_dht_info lws_dht_info_t
 

Enumerations

enum  {
  LWS_DHT_HASH_TYPE_UNKNOWN = 0 , LWS_DHT_HASH_TYPE_SHA1 = 0x11 , LWS_DHT_HASH_TYPE_SHA256 = 0x12 , LWS_DHT_HASH_TYPE_SHA512 = 0x13 ,
  LWS_DHT_HASH_TYPE_BLAKE3 = 0x1e
}
 
enum  lws_dht_verb_result_t {
  LWS_DHT_VERB_RESULT_PROCEED = 0 , LWS_DHT_VERB_RESULT_DROP_OLDER = 1 , LWS_DHT_VERB_RESULT_REPLACE_OLDER = 2 , LWS_DHT_VERB_RESULT_PENDING_ASYNC = 3 ,
  LWS_DHT_VERB_RESULT_PASS = 4 , LWS_DHT_VERB_RESULT_ERROR = -1
}
 
enum  lws_dht_event_t {
  LWS_DHT_EVENT_NONE , LWS_DHT_EVENT_VALUES , LWS_DHT_EVENT_VALUES6 , LWS_DHT_EVENT_SEARCH_DONE ,
  LWS_DHT_EVENT_SEARCH_DONE6 , LWS_DHT_EVENT_EXTERNAL_ADDR , LWS_DHT_EVENT_EXTERNAL_ADDR6 , LWS_DHT_EVENT_DATA ,
  LWS_DHT_EVENT_WRITE_COMPLETED , LWS_DHT_EVENT_WRITE_FAILED , LWS_DHT_EVENT_NOTIFY , LWS_DHT_EVENT_TOKEN
}
 

Functions

LWS_VISIBLE LWS_EXTERN lws_dht_hash_tlws_dht_hash_create (int type, int len, const uint8_t *data)
 
LWS_VISIBLE LWS_EXTERN void lws_dht_hash_destroy (lws_dht_hash_t **p)
 
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 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)
 
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_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 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)
 
LWS_VISIBLE LWS_EXTERN int lws_dht_register_verbs (struct lws_dht_ctx *ctx, const char **verbs, int count, const struct lws_protocols *protocol)
 
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 struct lws_dht_ctx * lws_dht_create (const lws_dht_info_t *info)
 
LWS_VISIBLE LWS_EXTERN void * lws_dht_get_closure (struct lws_dht_ctx *ctx)
 
LWS_VISIBLE LWS_EXTERN const lws_dht_hash_tlws_dht_get_myid (struct lws_dht_ctx *ctx)
 
LWS_VISIBLE LWS_EXTERN void lws_dht_destroy (struct lws_dht_ctx **pctx)
 
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_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_ping_node (struct lws_dht_ctx *ctx, struct sockaddr *sa, size_t salen)
 
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_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 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_search (struct lws_dht_ctx *ctx, const lws_dht_hash_t *id, int port, int af, lws_dht_callback_t *callback, void *closure)
 
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 void lws_dht_dump_tables (struct lws_dht_ctx *ctx)
 
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 int lws_dht_get_external_addr (struct lws_dht_ctx *ctx, struct sockaddr_storage *ss, size_t *sslen)
 
LWS_VISIBLE LWS_EXTERN int lws_dht_get_fallback_node (struct lws_context *cx, const char *custom_path, char *result, size_t result_len)
 

Variables

const struct lws_protocols lws_dht_protocol