/home/tomh/openhip/hip-0.5/src/util/hip_util.c File Reference

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/wait.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <netinet/ip6.h>
#include <netdb.h>
#include <sys/ioctl.h>
#include <net/if.h>
#include <pthread.h>
#include <ctype.h>
#include <openssl/sha.h>
#include <openssl/dsa.h>
#include <openssl/asn1.h>
#include <openssl/rand.h>
#include <sys/types.h>
#include <errno.h>
#include <fcntl.h>
#include <signal.h>
#include <hip/hip_version.h>
#include <hip/hip_types.h>
#include <hip/hip_proto.h>
#include <hip/hip_globals.h>
#include <hip/hip_funcs.h>
#include <libxml/tree.h>

Defines

#define IN_LOOP(a)   (htonl(((struct sockaddr_in*)a)->sin_addr.s_addr) == INADDR_LOOPBACK)
#define IN6_LOOP(a)   IN6_IS_ADDR_LOOPBACK( &((struct sockaddr_in6*)a)->sin6_addr )
#define ntoh64__(k)

Functions

int add_addresses_from_dns (char *name, hi_node *hi)
__u16 conf_transforms_to_mask ()
hi_nodecreate_new_hi_node ()
void append_hi_node (hi_node **head, hi_node *append)
int add_peer_hit (hip_hit peer_hit, struct sockaddr *peer_addr)
int key_data_to_hi (const __u8 *data, __u8 alg, int hi_length, __u8 di_type, int di_length, hi_node **hi_p, int max_length)
hi_nodeget_preferred_hi (hi_node *node)
int get_preferred_lsi (struct sockaddr *lsi)
__u32 get_preferred_addr ()
int get_addr_from_list (sockaddr_list *list, int family, struct sockaddr *addr)
hi_nodefind_host_identity (hi_node *hi_head, hip_hit *hitr)
hip_associnit_hip_assoc (hi_node *my_host_id, hip_hit *peer_hit)
int free_hip_assoc (hip_assoc *hip_a)
void free_hi_node (hi_node *hi)
void replace_hip_assoc (hip_assoc *a_old, hip_assoc *a_new)
void clear_retransmissions (hip_assoc *hip_a)
void set_state (hip_assoc *hip_a, int state)
hip_hithit_lookup (struct sockaddr *addr)
int compare_hits2 (void const *s1, void const *s2)
void * binsert (const void *ky, const void *bs, size_t nel, size_t width, int(*compar)(const void *, const void *))
void log_registration (hip_reg *hip_r, int k)
void print_reg_table (hip_reg *hip_r)
int delete_reg_table (hip_reg key, hip_reg *hip_r)
int insert_reg_table (hip_reg key, hip_reg *hip_r)
returnedsearch_reg_table (hip_reg key, hip_reg *hip_r, returned *ret2)
hi_nodelsi_lookup (struct sockaddr *lsi)
__u32 lsi_name_lookup (char *name, int name_len)
sockaddr * get_hip_dns_server ()
hi_nodehi_lookup (const hip_hit hit, hi_node *node)
int hits_equal (const hip_hit hit1, const hip_hit hit2)
void hit_to_sockaddr (struct sockaddr_in6 *addr, hip_hit hit)
void cb (int p, int n, void *arg)
void print_cookie (hipcookie *cookie)
int str_to_addr (__u8 *data, struct sockaddr *addr)
int addr_to_str (struct sockaddr *addr, __u8 *data, int len)
int hex_to_bin (char *src, char *dst, int dst_len)
int solve_puzzle (hipcookie *cookie, __u64 *solution, hip_hit *hit_i, hip_hit *hit_r)
int validate_solution (const hipcookie *cookie_r, const hipcookie *cookie_i, hip_hit *hit_i, hip_hit *hit_r, __u64 solution)
int khi_encode_n (__u8 *in, int len, __u8 *out, int n)
int khi_hi_input (hi_node *hi, __u8 *out)
int hi_to_hit (hi_node *hi, hip_hit hit)
int validate_hit (hip_hit hit, hi_node *hi)
int compare_bits (const char *s1, int s1_len, const char *s2, int s2_len, int numbits)
int compare_hits (hip_hit a, hip_hit b)
int maxof (int num_args,...)
void hip_packet_type (int type, char *r)
void print_usage ()
__u16 checksum_packet (__u8 *data, struct sockaddr *src, struct sockaddr *dst)
__u16 checksum_udp_packet (__u8 *data, struct sockaddr *src, struct sockaddr *dst)
__u16 checksum_magic (const hip_hit *i, const hip_hit *r)
int hip_header_offset (const __u8 *data)
int udp_header_offset (const __u8 *data)
int tlv_length_to_parameter_length (int length)
int eight_byte_align (int location)
hip_assocfind_hip_association (struct sockaddr *src, struct sockaddr *dst, hiphdr *hiph)
hip_assocfind_hip_association2 (hiphdr *hiph)
hip_assocfind_hip_association3 (struct sockaddr *src, struct sockaddr *dst)
int init_log ()
void close_log ()
void fflush_log ()
void log_ (int level, char *fmt,...)
char * logaddr (struct sockaddr *addr)
void logdsa (DSA *dsa)
void logrsa (RSA *rsa)
void logdh (DH *dh)
void logbn (BIGNUM *bn)
int bn2bin_safe (const BIGNUM *a, unsigned char *to, int len)
void print_hex (void *data, int len)
void print_binary (void *data, int len)
void log_hipa_fromto (int level, char *msg, hip_assoc *hip_a, __u8 from, __u8 to)
void log_hipopts ()
void hip_sleep (int seconds)
void hip_writelock ()
void delete_local_hip_nameserver (__u32 ip)
void hip_exit (int signal)

Variables

static FILE * logfp

Define Documentation

#define IN6_LOOP (  )     IN6_IS_ADDR_LOOPBACK( &((struct sockaddr_in6*)a)->sin6_addr )

#define IN_LOOP (  )     (htonl(((struct sockaddr_in*)a)->sin_addr.s_addr) == INADDR_LOOPBACK)

#define ntoh64__ (  ) 

Value:

( (((uint64_t) ntohl( (k) >> 32) ) & 0x00000000ffffffffll) |\
                    (((uint64_t) ntohl( (k) ) << 32) & 0x00000000ffffffffll) )


Function Documentation

int add_addresses_from_dns ( char *  name,
hi_node hi 
)

int add_peer_hit ( hip_hit  peer_hit,
struct sockaddr *  peer_addr 
)

int addr_to_str ( struct sockaddr *  addr,
__u8 data,
int  len 
)

void append_hi_node ( hi_node **  head,
hi_node append 
)

void* binsert ( const void *  ky,
const void *  bs,
size_t  nel,
size_t  width,
int(*)(const void *, const void *)  compar 
)

int bn2bin_safe ( const BIGNUM *  a,
unsigned char *  to,
int  len 
)

void cb ( int  p,
int  n,
void *  arg 
)

__u16 checksum_magic ( const hip_hit i,
const hip_hit r 
)

__u16 checksum_packet ( __u8 data,
struct sockaddr *  src,
struct sockaddr *  dst 
)

__u16 checksum_udp_packet ( __u8 data,
struct sockaddr *  src,
struct sockaddr *  dst 
)

void clear_retransmissions ( hip_assoc hip_a  ) 

void close_log (  ) 

int compare_bits ( const char *  s1,
int  s1_len,
const char *  s2,
int  s2_len,
int  numbits 
)

int compare_hits ( hip_hit  a,
hip_hit  b 
)

int compare_hits2 ( void const *  s1,
void const *  s2 
)

__u16 conf_transforms_to_mask (  ) 

hi_node* create_new_hi_node (  ) 

void delete_local_hip_nameserver ( __u32  ip  ) 

int delete_reg_table ( hip_reg  key,
hip_reg hip_r 
)

int eight_byte_align ( int  location  ) 

void fflush_log (  ) 

hip_assoc* find_hip_association ( struct sockaddr *  src,
struct sockaddr *  dst,
hiphdr hiph 
)

hip_assoc* find_hip_association2 ( hiphdr hiph  ) 

hip_assoc* find_hip_association3 ( struct sockaddr *  src,
struct sockaddr *  dst 
)

hi_node* find_host_identity ( hi_node hi_head,
hip_hit hitr 
)

void free_hi_node ( hi_node hi  ) 

int free_hip_assoc ( hip_assoc hip_a  ) 

int get_addr_from_list ( sockaddr_list list,
int  family,
struct sockaddr *  addr 
)

struct sockaddr* get_hip_dns_server (  ) 

__u32 get_preferred_addr (  ) 

hi_node* get_preferred_hi ( hi_node node  ) 

int get_preferred_lsi ( struct sockaddr *  lsi  ) 

int hex_to_bin ( char *  src,
char *  dst,
int  dst_len 
)

hi_node* hi_lookup ( const hip_hit  hit,
hi_node node 
)

int hi_to_hit ( hi_node hi,
hip_hit  hit 
)

void hip_exit ( int  signal  ) 

int hip_header_offset ( const __u8 data  ) 

void hip_packet_type ( int  type,
char *  r 
)

void hip_sleep ( int  seconds  ) 

void hip_writelock (  ) 

hip_hit* hit_lookup ( struct sockaddr *  addr  ) 

void hit_to_sockaddr ( struct sockaddr_in6 *  addr,
hip_hit  hit 
)

int hits_equal ( const hip_hit  hit1,
const hip_hit  hit2 
)

hip_assoc* init_hip_assoc ( hi_node my_host_id,
hip_hit peer_hit 
)

int init_log (  ) 

int insert_reg_table ( hip_reg  key,
hip_reg hip_r 
)

int key_data_to_hi ( const __u8 data,
__u8  alg,
int  hi_length,
__u8  di_type,
int  di_length,
hi_node **  hi_p,
int  max_length 
)

int khi_encode_n ( __u8 in,
int  len,
__u8 out,
int  n 
)

int khi_hi_input ( hi_node hi,
__u8 out 
)

void log_ ( int  level,
char *  fmt,
  ... 
)

void log_hipa_fromto ( int  level,
char *  msg,
hip_assoc hip_a,
__u8  from,
__u8  to 
)

void log_hipopts (  ) 

void log_registration ( hip_reg hip_r,
int  k 
)

char* logaddr ( struct sockaddr *  addr  ) 

void logbn ( BIGNUM *  bn  ) 

void logdh ( DH *  dh  ) 

void logdsa ( DSA *  dsa  ) 

void logrsa ( RSA *  rsa  ) 

hi_node* lsi_lookup ( struct sockaddr *  lsi  ) 

__u32 lsi_name_lookup ( char *  name,
int  name_len 
)

int maxof ( int  num_args,
  ... 
)

void print_binary ( void *  data,
int  len 
)

void print_cookie ( hipcookie cookie  ) 

void print_hex ( void *  data,
int  len 
)

void print_reg_table ( hip_reg hip_r  ) 

void print_usage ( void   ) 

void replace_hip_assoc ( hip_assoc a_old,
hip_assoc a_new 
)

returned* search_reg_table ( hip_reg  key,
hip_reg hip_r,
returned ret2 
)

void set_state ( hip_assoc hip_a,
int  state 
)

int solve_puzzle ( hipcookie cookie,
__u64 solution,
hip_hit hit_i,
hip_hit hit_r 
)

int str_to_addr ( __u8 data,
struct sockaddr *  addr 
)

int tlv_length_to_parameter_length ( int  length  ) 

int udp_header_offset ( const __u8 data  ) 

int validate_hit ( hip_hit  hit,
hi_node hi 
)

int validate_solution ( const hipcookie cookie_r,
const hipcookie cookie_i,
hip_hit hit_i,
hip_hit hit_r,
__u64  solution 
)


Variable Documentation

FILE* logfp [static]


Generated on Mon Oct 22 11:43:44 2007 for OpenHIP by  doxygen 1.5.1