OpenHIP 0.9svn1
Classes | Defines | Functions | Variables
/home/tomh/svn/openhip/hip/trunk/src/protocol/hip_dht.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/time.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <pthread.h>
#include <openssl/evp.h>
#include <netinet/ip6.h>
#include <sys/types.h>
#include <errno.h>
#include <fcntl.h>
#include <libxml/tree.h>
#include <libxml/xmlwriter.h>
#include <openssl/sha.h>
#include <openssl/rand.h>
#include <hip/hip_version.h>
#include <hip/hip_types.h>
#include <hip/hip_globals.h>
#include <hip/hip_funcs.h>

Classes

struct  dht_val

Defines

#define XMLRPC_MODE_GET   0x0001
#define XMLRPC_MODE_PUT   0x0002
#define XMLRPC_MODE_RM   0x0003
#define XMLRPC_MODE_RETRY_OFF   0x0010
#define XMLRPC_MODE_RETRY_ON   0x0020
#define XMLRPC_APP_HIT   "hip-name-hit"
#define XMLRPC_APP_ADDR   "hip-addr"
#define DHT_KEY_SIZE   20
#define DHT_VAL_SIZE   1024
#define DHT_DEF_TTL   604800
#define RETNULL   NULL;
#define VOIDECL   void *

Functions

__u32 get_preferred_addr ()
int hip_dht_lookup_hit_by_name (char *name, hip_hit *hit, int retry)
int hip_dht_lookup_address (hip_hit *hit, struct sockaddr *addr, int retry)
int hip_dht_publish_addr (hi_node *hi, struct sockaddr *addr, int retry)
int hip_dht_publish_hit (hi_node *hi, char *name, int retry)
int hip_dht_select_server (struct sockaddr *addr)
VOIDECL hip_dht_resolve_hi_thread (void *void_hi)
VOIDECL publish_my_hits_thread (void *void_addr)
void hit2hit_key (hip_hit *hit, __u8 *hit_key)
int build_hdrr (__u8 *hdrr, int hdrr_size, hi_node *hi, struct sockaddr *addr)
int parse_hdrr (__u8 *hdrr, int len)
int hip_xmlrpc_getput (int mode, char *app, struct sockaddr *server, char *key, int key_len, char *value, int *value_len, char *secret, int secret_len, int ttl)
int hip_xmlrpc_parse_response (int mode, char *xmldata, int len, char *value, int *value_len)
char * hip_xmlrpc_resp_to_str (int code)
xmlNodePtr xml_new_param (xmlNodePtr node_parent, char *type, char *value)
int build_http_post_header (char *buff, int content_len, struct sockaddr *addr)
struct dht_vallookup_dht_val (char *key)
struct dht_valinsert_dht_val (char *key)
int hip_xmlrpc_rm (struct dht_val *v)
void hip_dht_update_my_entries (int flags)
int hip_dht_resolve_hi (hi_node *hi, int retry)

Variables

hip_mutex_t dht_vals_lock
static struct dht_valdht_vals = NULL

Define Documentation

#define DHT_DEF_TTL   604800
#define DHT_KEY_SIZE   20
#define DHT_VAL_SIZE   1024
#define RETNULL   NULL;
#define VOIDECL   void *
#define XMLRPC_APP_ADDR   "hip-addr"
#define XMLRPC_APP_HIT   "hip-name-hit"
#define XMLRPC_MODE_GET   0x0001
#define XMLRPC_MODE_PUT   0x0002
#define XMLRPC_MODE_RETRY_OFF   0x0010
#define XMLRPC_MODE_RETRY_ON   0x0020
#define XMLRPC_MODE_RM   0x0003

Function Documentation

int build_hdrr ( __u8 hdrr,
int  hdrr_size,
hi_node hi,
struct sockaddr *  addr 
)
int build_http_post_header ( char *  buff,
int  content_len,
struct sockaddr *  addr 
)

References addr_to_str(), HIP_NAME, and HIP_VERSION.

Referenced by hip_xmlrpc_getput().

__u32 get_preferred_addr ( )
int hip_dht_lookup_address ( hip_hit hit,
struct sockaddr *  addr,
int  retry 
)
int hip_dht_lookup_hit_by_name ( char *  name,
hip_hit hit,
int  retry 
)
int hip_dht_publish_addr ( hi_node hi,
struct sockaddr *  addr,
int  retry 
)
int hip_dht_publish_hit ( hi_node hi,
char *  name,
int  retry 
)
int hip_dht_resolve_hi ( hi_node hi,
int  retry 
)
VOIDECL hip_dht_resolve_hi_thread ( void *  void_hi)

References hip_dht_resolve_hi(), and RETNULL.

Referenced by hip_dht_resolve_hi().

int hip_dht_select_server ( struct sockaddr *  addr)
void hip_dht_update_my_entries ( int  flags)
int hip_xmlrpc_getput ( int  mode,
char *  app,
struct sockaddr *  server,
char *  key,
int  key_len,
char *  value,
int *  value_len,
char *  secret,
int  secret_len,
int  ttl 
)
int hip_xmlrpc_parse_response ( int  mode,
char *  xmldata,
int  len,
char *  value,
int *  value_len 
)
char * hip_xmlrpc_resp_to_str ( int  code)

Referenced by hip_xmlrpc_getput().

int hip_xmlrpc_rm ( struct dht_val v)
void hit2hit_key ( hip_hit hit,
__u8 hit_key 
)
struct dht_val * insert_dht_val ( char *  key) [read]

References dht_vals, dht_val::key, log_(), dht_val::next, and WARN.

Referenced by hip_xmlrpc_getput().

struct dht_val * lookup_dht_val ( char *  key) [read]

References dht_val::key, and dht_val::next.

Referenced by hip_xmlrpc_getput().

int parse_hdrr ( __u8 hdrr,
int  len 
)
VOIDECL publish_my_hits_thread ( void *  void_addr)
xmlNodePtr xml_new_param ( xmlNodePtr  node_parent,
char *  type,
char *  value 
)

Referenced by hip_xmlrpc_getput().


Variable Documentation

struct dht_val* dht_vals = NULL [static]