The Netsukuku Project  0.0.9
An Alternative routing method
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
andna.c File Reference
#include "includes.h"
#include "inet.h"
#include "endianness.h"
#include "map.h"
#include "gmap.h"
#include "bmap.h"
#include "route.h"
#include "request.h"
#include "tracer.h"
#include "qspn.h"
#include "radar.h"
#include "netsukuku.h"
#include "daemon.h"
#include "crypto.h"
#include "snsd_cache.h"
#include "andna_cache.h"
#include "andna.h"
#include "andns.h"
#include "dns_wrapper.h"
#include "hash.h"
#include "common.h"
Include dependency graph for andna.c:

Functions

int andna_load_caches (void)
 
int andna_save_caches (void)
 
void andna_resolvconf_modify (void)
 
void andna_resolvconf_restore (void)
 
void andna_init (void)
 
void andna_close (void)
 
void andna_hash_by_family (int family, void *msg, u_int hash[4])
 
void andna_hash (int family, void *msg, int len, u_int hash[4], u_int ip_hash[4])
 
int is_hgnode_excluded (quadro_group *qg, u_int **excluded_hgnode, int tot_excluded_hgnodes, int lvl)
 
int is_hgnodeip_excluded (inet_prefix *hgnodeip, u_int **excluded_hgnode, int tot_excluded_hgnodes)
 
int random_gid_level_0 (quadro_group *qg, inet_prefix *to, int exclude_me)
 
int find_hash_gnode_recurse (quadro_group qg, int level, inet_prefix *to, u_int **excluded_hgnode, int tot_excluded_hgnodes, int exclude_me)
 
int find_hash_gnode (u_int hash[4], inet_prefix *to, u_int **excluded_hgnode, int tot_excluded_hgnodes, int exclude_me)
 
int andna_flood_pkt (PACKET *rpkt, int exclude_rfrom)
 
int andna_find_flood_pkt_id (int *ids_array, int pkt_id)
 
int andna_add_flood_pkt_id (int *ids_array, int pkt_id)
 
int andna_register_hname (lcl_cache *alcl, snsd_service *snsd_delete)
 
int andna_recv_reg_rq (PACKET rpkt)
 
int andna_check_counter (PACKET pkt)
 
int andna_recv_check_counter (PACKET rpkt)
 
snsd_serviceandna_resolve_hash_locally (u_int hname_hash[4], int service, u_char proto, int *records)
 
snsd_serviceandna_resolve_hash (u_int hname_hash[4], int service, u_char proto, int *records)
 
snsd_serviceandna_resolve_hname (char *hname, int service, u_char proto, int *records)
 
int andna_recv_resolve_rq (PACKET rpkt)
 
lcl_cacheandna_reverse_resolve (inet_prefix ip)
 
int andna_recv_rev_resolve_rq (PACKET rpkt)
 
andna_cacheget_single_andna_c (u_int hash[4], u_int hash_gnode[4])
 
int put_single_acache (PACKET rpkt)
 
int spread_single_acache (u_int hash[4])
 
int recv_spread_single_acache (PACKET rpkt)
 
andna_cacheget_andna_cache (map_node *dst_rnode, int *counter)
 
int put_andna_cache (PACKET rq_pkt)
 
counter_cget_counter_cache (map_node *dst_rnode, int *counter)
 
int put_counter_cache (PACKET rq_pkt)
 
void * andna_hook (void *null)
 
void * andna_min_update_retry (void *void_alcl)
 
void andna_update_hnames (int only_new_hname)
 
void * andna_maintain_hnames_active (void *null)
 
void * andna_main (void *null)
 

Function Documentation

int andna_add_flood_pkt_id ( int *  ids_array,
int  pkt_id 
)

Here is the call graph for this function:

Here is the caller graph for this function:

int andna_check_counter ( PACKET  pkt)

Here is the call graph for this function:

Here is the caller graph for this function:

void andna_close ( void  )

Here is the call graph for this function:

Here is the caller graph for this function:

int andna_find_flood_pkt_id ( int *  ids_array,
int  pkt_id 
)

Here is the caller graph for this function:

int andna_flood_pkt ( PACKET rpkt,
int  exclude_rfrom 
)

Here is the call graph for this function:

Here is the caller graph for this function:

void andna_hash ( int  family,
void *  msg,
int  len,
u_int  hash[4],
u_int  ip_hash[4] 
)

Here is the call graph for this function:

Here is the caller graph for this function:

void andna_hash_by_family ( int  family,
void *  msg,
u_int  hash[4] 
)

Here is the call graph for this function:

Here is the caller graph for this function:

void* andna_hook ( void *  null)

Here is the call graph for this function:

Here is the caller graph for this function:

void andna_init ( void  )

Here is the call graph for this function:

Here is the caller graph for this function:

int andna_load_caches ( void  )

Here is the call graph for this function:

Here is the caller graph for this function:

void* andna_main ( void *  null)

Here is the call graph for this function:

Here is the caller graph for this function:

void* andna_maintain_hnames_active ( void *  null)

If we don't have rnodes, it's useless to try anything

Here is the call graph for this function:

Here is the caller graph for this function:

void* andna_min_update_retry ( void *  void_alcl)

Here is the call graph for this function:

Here is the caller graph for this function:

int andna_recv_check_counter ( PACKET  rpkt)

Here is the call graph for this function:

Here is the caller graph for this function:

int andna_recv_reg_rq ( PACKET  rpkt)

Check if the counter of number of updates matches with the pkt

Has the registration request been sent too early ?

Set the mainip flag only to the real mainip record, in this way we're sure that there is only one.

Broadcast the request to the entire gnode of level 1 to let the other nodes register the hname.

Here is the call graph for this function:

Here is the caller graph for this function:

int andna_recv_resolve_rq ( PACKET  rpkt)

Here is the call graph for this function:

Here is the caller graph for this function:

int andna_recv_rev_resolve_rq ( PACKET  rpkt)

Here is the call graph for this function:

Here is the caller graph for this function:

int andna_register_hname ( lcl_cache alcl,
snsd_service snsd_delete 
)

Here is the call graph for this function:

Here is the caller graph for this function:

void andna_resolvconf_modify ( void  )

Here is the call graph for this function:

Here is the caller graph for this function:

void andna_resolvconf_restore ( void  )

Here is the call graph for this function:

Here is the caller graph for this function:

snsd_service* andna_resolve_hash ( u_int  hname_hash[4],
int  service,
u_char  proto,
int *  records 
)

Here is the call graph for this function:

Here is the caller graph for this function:

snsd_service* andna_resolve_hash_locally ( u_int  hname_hash[4],
int  service,
u_char  proto,
int *  records 
)

Here is the call graph for this function:

Here is the caller graph for this function:

snsd_service* andna_resolve_hname ( char *  hname,
int  service,
u_char  proto,
int *  records 
)

Here is the call graph for this function:

Here is the caller graph for this function:

lcl_cache* andna_reverse_resolve ( inet_prefix  ip)

Here is the call graph for this function:

Here is the caller graph for this function:

int andna_save_caches ( void  )

Here is the call graph for this function:

Here is the caller graph for this function:

void andna_update_hnames ( int  only_new_hname)

Here is the call graph for this function:

Here is the caller graph for this function:

int find_hash_gnode ( u_int  hash[4],
inet_prefix to,
u_int **  excluded_hgnode,
int  tot_excluded_hgnodes,
int  exclude_me 
)

Here is the call graph for this function:

Here is the caller graph for this function:

int find_hash_gnode_recurse ( quadro_group  qg,
int  level,
inet_prefix to,
u_int **  excluded_hgnode,
int  tot_excluded_hgnodes,
int  exclude_me 
)

Here is the call graph for this function:

Here is the caller graph for this function:

andna_cache* get_andna_cache ( map_node dst_rnode,
int *  counter 
)

Here is the call graph for this function:

Here is the caller graph for this function:

counter_c* get_counter_cache ( map_node dst_rnode,
int *  counter 
)

Here is the call graph for this function:

Here is the caller graph for this function:

andna_cache* get_single_andna_c ( u_int  hash[4],
u_int  hash_gnode[4] 
)

Here is the call graph for this function:

Here is the caller graph for this function:

int is_hgnode_excluded ( quadro_group qg,
u_int **  excluded_hgnode,
int  tot_excluded_hgnodes,
int  lvl 
)

Here is the call graph for this function:

Here is the caller graph for this function:

int is_hgnodeip_excluded ( inet_prefix hgnodeip,
u_int **  excluded_hgnode,
int  tot_excluded_hgnodes 
)

Here is the call graph for this function:

int put_andna_cache ( PACKET  rq_pkt)

Here is the call graph for this function:

Here is the caller graph for this function:

int put_counter_cache ( PACKET  rq_pkt)

Here is the call graph for this function:

Here is the caller graph for this function:

int put_single_acache ( PACKET  rpkt)

Here is the call graph for this function:

Here is the caller graph for this function:

int random_gid_level_0 ( quadro_group qg,
inet_prefix to,
int  exclude_me 
)

Here is the call graph for this function:

Here is the caller graph for this function:

int recv_spread_single_acache ( PACKET  rpkt)

Here is the call graph for this function:

Here is the caller graph for this function:

int spread_single_acache ( u_int  hash[4])

Here is the call graph for this function:

Here is the caller graph for this function: