OpenHIP 0.9svn1
|
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <time.h>
#include <ctype.h>
#include <fcntl.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/uio.h>
#include <sys/wait.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <unistd.h>
#include <math.h>
#include <pthread.h>
#include <netdb.h>
#include <sys/types.h>
#include <signal.h>
#include <openssl/crypto.h>
#include <openssl/bn.h>
#include <openssl/dsa.h>
#include <openssl/asn1.h>
#include <openssl/dh.h>
#include <openssl/sha.h>
#include <openssl/rand.h>
#include <hip/hip_types.h>
#include <hip/hip_proto.h>
#include <hip/hip_globals.h>
#include <hip/hip_funcs.h>
#include <hip/hip_version.h>
Defines | |
#define | IPV6_HIP |
Functions | |
int | main (int argc, char *argv[]) |
void | hip_handle_packet (struct msghdr *msg, int length, __u16 family) |
void | hip_handle_state_timeouts (struct timeval *time1) |
void | hip_handle_locator_state_timeouts (hip_assoc *hip_a, struct timeval *time1) |
void | hip_handle_registrations (struct timeval *time1) |
void | hip_check_next_rvs (hip_assoc *hip_a) |
static void | hip_retransmit_waiting_packets (struct timeval *time1) |
int | hip_trigger (struct sockaddr *dst) |
int | hip_trigger_rvs (struct sockaddr *rvs, hip_hit *responder) |
void | post_init_tap () |
int | main_loop (int argc, char **argv) |
int | check_reg_info (struct reg_entry *regs, __u8 type, int state, struct timeval *now) |
#define IPV6_HIP |
References reg_info::lifetime, reg_info::next, reg_entry::reginfos, reg_info::state, reg_info::state_time, TDIFF, reg_info::type, and YLIFE.
Referenced by hip_handle_state_timeouts().
void hip_check_next_rvs | ( | hip_assoc * | hip_a | ) |
References _sockaddr_list::addr, _hiphdr::checksum, checksum_packet(), DEPRECATED, hip_packet_entry::dst, dst, HIPA_DST, HIPA_SRC, log_(), logaddr(), _sockaddr_list::next, NORMT, hip_packet_entry::packet, _hiphdr::packet_type, _hip_assoc::peer_hi, hip_packet_entry::retransmits, _hip_assoc::rexmt_cache, _hi_node::rvs_addrs, SA, SA2IP, SAIPLEN, SALEN, src, _sockaddr_list::status, _hip_assoc::udp, UNVERIFIED, and UPDATE.
Referenced by hip_retransmit_waiting_packets().
void hip_handle_locator_state_timeouts | ( | hip_assoc * | hip_a, |
struct timeval * | time1 | ||
) |
References ACTIVE, _sockaddr_list::addr, _hi_node::addrs, _sockaddr_list::creation_time, DEPRECATED, _hip_assoc::hi, hip_send_update(), _sockaddr_list::lifetime, log_(), logaddr(), rekey_info::need_ack, _sockaddr_list::next, _sockaddr_list::nonce, NORMT, _hip_assoc::peer_hi, _hip_assoc::rekey, rekey_info::rk_time, SA, _hi_node::skip_addrcheck, _sockaddr_list::status, TDIFF, TRUE, UNVERIFIED, _hi_node::update_id, and rekey_info::update_id.
Referenced by hip_handle_state_timeouts().
void hip_handle_packet | ( | struct msghdr * | msg, |
int | length, | ||
__u16 | family | ||
) |
References add_peer_hit(), BOS, CER, CLOSE, CLOSE_ACK, dst, E_FAILED, find_hip_association(), find_hip_association2(), hip_handle_BOS(), hip_handle_CER(), hip_handle_close(), hip_handle_I1(), hip_handle_I2(), hip_handle_notify(), hip_handle_R1(), hip_handle_R2(), hip_handle_update(), HIP_I1, HIP_I2, hip_packet_type(), hip_parse_hdr(), HIP_R1, HIP_R2, hip_send_notify(), _hi_node::hit, _hiphdr::hit_sndr, I1_SENT, log_(), logaddr(), NORM, NORMT, NOTIFY, NOTIFY_CHECKSUM_FAILED, NOTIFY_INVALID_SYNTAX, hip_opt::opportunistic, OPT, _hiphdr::packet_type, _hip_assoc::peer_hi, SA2IP, SAIPLEN, src, _hip_assoc::state, UPDATE, VALID_FAM, WARN, and zero_hit.
Referenced by main_loop(), and receive_udp_hip_packet().
void hip_handle_registrations | ( | struct timeval * | time1 | ) |
References ESTABLISHED, HCNF, hip_assoc_table, hip_send_update(), reg_info::lifetime, max_hip_assoc, reg_info::next, REG_GRANTED, REG_OFFERED, REG_REQUESTED, reg_entry::reginfos, _hip_assoc::regs, reg_info::state, _hip_assoc::state, reg_info::state_time, TDIFF, hip_conf::ual, and YLIFE.
Referenced by main_loop().
void hip_handle_state_timeouts | ( | struct timeval * | time1 | ) |
References check_last_used(), check_reg_info(), clear_retransmissions(), CLOSED, CLOSING, delete_associations(), E_FAILED, ESTABLISHED, hip_conf::failure_timeout, FALSE, free_hip_assoc(), HCNF, hip_assoc_table, hip_finish_rekey(), hip_handle_locator_state_timeouts(), hip_send_close(), hip_send_update_locators(), log_(), log_hipa_fromto(), max_hip_assoc, hip_opt::mh, hip_conf::msl, rekey_info::need_ack, rekey_info::new_spi, NORM, NORMT, OPT, hip_packet_entry::packet, _hip_assoc::peer_rekey, QOUT, R2_SENT, REG_GRANTED, _hip_assoc::regs, REGTYPE_MR, _hip_assoc::rekey, _hip_assoc::rexmt_cache, rekey_info::rk_time, set_state(), _hip_assoc::state, _hip_assoc::state_time, TDIFF, TRUE, hip_conf::ual, UNASSOCIATED, _hip_assoc::use_time, and WARN.
Referenced by main_loop().
void hip_retransmit_waiting_packets | ( | struct timeval * | time1 | ) | [static] |
References _sockaddr_list::addr, _hi_node::addrs, clear_retransmissions(), hip_packet_entry::dst, dst, E_FAILED, ESTABLISHED, FALSE, get_addr_from_list(), HCNF, _hip_assoc::hi, hip_assoc_table, hip_check_next_rvs(), hip_mr_retransmit(), hip_packet_type(), hip_retransmit(), _hi_node::hit, I1_SENT, I2_SENT, hip_packet_entry::len, log_(), logaddr(), max_hip_assoc, hip_conf::max_retries, hip_opt::mr, my_addr_head, hip_opt::no_retransmit, NORM, NORMT, OPT, hip_packet_entry::packet, hip_conf::packet_timeout, _hiphdr::packet_type, _hip_assoc::peer_hi, R2_SENT, hip_packet_entry::retransmits, _hip_assoc::rexmt_cache, SA, set_state(), src, _hip_assoc::state, TDIFF, _hip_assoc::udp, WARN, and hip_packet_entry::xmit_time.
Referenced by main_loop().
int hip_trigger | ( | struct sockaddr * | dst | ) |
References _sockaddr_list::addr, find_hip_association(), get_preferred_hi(), hip_send_I1(), HIPA_DST, HIPA_SRC, _hi_node::hit, hit_lookup(), _hiphdr::hit_rcvr, _hiphdr::hit_sndr, I1_SENT, init_hip_assoc(), log_(), logaddr(), make_address_active(), my_addr_head, my_hi_head, _sockaddr_list::next, NORM, NORMT, hip_opt::opportunistic, OPT, _sockaddr_list::preferred, SALEN, set_state(), src, hip_opt::trigger, UNASSOCIATED, WARN, and zero_hit.
Referenced by main_loop().
int hip_trigger_rvs | ( | struct sockaddr * | rvs, |
hip_hit * | responder | ||
) |
References _sockaddr_list::addr, _hi_node::addrs, find_hip_association2(), get_preferred_hi(), _hip_assoc::hi, hip_send_I1(), HIPA_DST, HIPA_SRC, _hi_node::hit, _hiphdr::hit_rcvr, HIT_SIZE, _hiphdr::hit_sndr, I1_SENT, init_hip_assoc(), log_(), logaddr(), make_address_active(), my_addr_head, my_hi_head, _sockaddr_list::next, NORM, NORMT, OPT, _sockaddr_list::preferred, print_hex(), SALEN, set_state(), _hip_assoc::state, hip_opt::trigger, UNASSOCIATED, and WARN.
int main | ( | int | argc, |
char * | argv[] | ||
) |
References _hi_options::anon, _hi_options::bitsize, _hiphdr::checksum, checksum_packet(), _hiphdr::control, D_DEFAULT, D_VERBOSE, hip_opt::debug, default_sizes, delete_unused_whitespace(), generate_conf_file(), generate_HI(), hex_to_bin(), HI_ALG_DSA, HI_ALG_RSA, HIP_CONF_FILENAME, HIP_I1, HIP_MYID_FILENAME, HIP_PUB_PREFIX, HIP_PUB_SUFFIX, HIP_UDP_PORT, HIP_VERSION, _hiphdr::hit_rcvr, HIT_RCVR, HIT_SIZE, _hiphdr::hit_sndr, HIT_SNDR, _hi_options::incoming, IPPROTO_NONE, IPV4_DST, IPV4_PSEUDO_SIZE, IPV4_SRC, IPV6_PSEUDO_SIZE, length, _hi_options::name, _hiphdr::next_hdr, OPT, _hiphdr::packet_type, _hiphdr::payload_len, print_hitgen_usage(), publish_hits(), _hi_options::r1count, _hiphdr::res, _hi_options::type, and _hiphdr::version.
int main_loop | ( | int | argc, |
char ** | argv | ||
) |
References hip_opt::allow_any, append_hi_node(), hip_conf::conf_filename, hip_conf::cookie_difficulty, hip_conf::cookie_lifetime, D_DEFAULT, D_QUIET, D_VERBOSE, hip_opt::daemon, hip_opt::debug, hip_opt::debug_R1, DEFAULT_DH_GROUP_ID, hip_conf::dh_group, hip_conf::dh_lifetime, hip_conf::disable_dns_lookups, hip_conf::disable_dns_thread, hip_conf::disable_notify, hip_conf::disable_udp, hip_conf::enable_bcast, endbox_init(), ERR, hip_conf::esp_transforms, espsp, expire_old_dh_entries(), hip_conf::failure_timeout, FALSE, fflush_log(), flags, g_state, get_my_addresses(), get_preferred_hi(), H_PROTO_HIP, HCNF, hip_assoc_table, HIP_CONF_FILENAME, hip_dht_update_my_entries(), hip_exit(), hip_handle_esp(), hip_handle_multihoming_timeouts(), hip_handle_netlink(), hip_handle_packet(), hip_handle_registrations(), hip_handle_state_timeouts(), hip_handle_status_request(), HIP_KNOWNID_FILENAME, HIP_LOCK_FILENAME, hip_mr_set_external_ifs(), HIP_MYID_FILENAME, hip_netlink_open(), hip_retransmit_waiting_packets(), hip_status_open(), hip_conf::hip_transforms, hip_trigger(), HIP_VERSION, hip_writelock(), hipcfg_getMyHostId(), hipcfg_init(), init_all_R1_caches(), init_dh_cache(), init_log(), hip_conf::known_hi_filename, length, hip_conf::loc_lifetime, locate_config_file(), log_(), hip_conf::log_filename, log_hipopts(), hip_conf::max_reg_lifetime, MAX_REGISTRATION_TYPES, hip_conf::max_retries, maxof(), hip_opt::mh, hip_conf::min_reg_lifetime, hip_opt::mr, hip_conf::msl, hip_conf::my_hi_filename, my_hi_head, hip_opt::no_retransmit, NORM, NORMT, hip_conf::num_reg_types, hip_opt::opportunistic, OPT, hip_conf::outbound_ifaces, hip_conf::packet_timeout, hip_conf::peer_certificate_required, peer_hi_head, hip_opt::permissive, post_init_tap(), hip_conf::preferred_hi, hip_conf::preferred_iface, print_usage(), QOUT, hip_conf::r1_lifetime, read_conf_file(), read_identities_file(), hip_conf::reg_types, REGTYPE_MR, REGTYPE_RVS, replace_next_R1(), hip_opt::rvs, s6_hip, s_hip, s_net, s_stat, SA, hip_conf::sa_lifetime, hip_conf::save_known_identities, hip_conf::save_my_identities, select_preferred_address(), hip_conf::send_hi_name, src, str_to_addr(), SUITE_ID_MAX, hip_opt::trigger, TRUE, hip_conf::ual, and WARN.
Referenced by hipd_main().
void post_init_tap | ( | ) |
References add_address_to_iface(), add_local_hip_nameserver(), devname_to_index(), g_tap_mac, get_preferred_lsi(), HIP_TAP_INTERFACE_MTU, is_dns_thread_disabled(), LSI4, NIPQUAD, SA, set_link_params(), and tap_dev_name.
Referenced by main_loop().