OpenHIP 0.9svn1
|
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <time.h>
#include <ctype.h>
#include <asm/types.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <sys/types.h>
#include <openssl/crypto.h>
#include <openssl/bn.h>
#include <openssl/dsa.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_sadb.h>
Functions | |
void | hip_handle_packet (struct msghdr *msg, int length, __u16 family) |
int | hip_convert_lsi_to_peer (struct sockaddr *lsi, hip_hit *hitp, struct sockaddr *src, struct sockaddr *dst) |
int | multihoming_update (hip_assoc *hip_a, struct sockaddr *dst) |
__u32 | get_next_spi () |
int | check_last_used (hip_assoc *hip_a, int incoming, struct timeval *now) |
int | delete_associations (hip_assoc *hip_a, __u32 old_spi_in, __u32 old_spi_out) |
int | flush_hip_associations () |
void | hip_handle_esp (char *data, int length) |
void | start_base_exchange (struct sockaddr *dst) |
void | start_expire (__u32 spi) |
void | receive_udp_hip_packet (char *buff, int len) |
void | start_loss_multihoming (char *data, int len) |
int | handle_notify_loss (__u8 *data, int data_len) |
void | hip_handle_multihoming_timeouts (struct timeval *now) |
int check_last_used | ( | hip_assoc * | hip_a, |
int | incoming, | ||
struct timeval * | now | ||
) |
References hip_sadb_get_usage(), log_(), _hip_assoc::spi_in, _hip_assoc::spi_out, _hip_assoc::use_time, _hip_assoc::used_bytes_in, _hip_assoc::used_bytes_out, and WARN.
Referenced by hip_handle_state_timeouts().
References hip_sadb_delete(), log_(), _hip_assoc::spi_in, _hip_assoc::spi_out, and WARN.
Referenced by flush_hip_associations(), hip_handle_close(), hip_handle_I2(), and hip_handle_state_timeouts().
int flush_hip_associations | ( | ) |
References CLOSED, delete_associations(), ESTABLISHED, FALSE, hip_assoc_table, hip_send_close(), I2_SENT, log_hipa_fromto(), max_hip_assoc, QOUT, R2_SENT, set_state(), _hip_assoc::state, and TRUE.
Referenced by hip_exit().
__u32 get_next_spi | ( | ) |
References hip_sadb_lookup_spi(), log_(), NORM, SPI_RESERVED, and WARN.
Referenced by build_rekey(), hip_handle_I2(), and hip_handle_R1().
int handle_notify_loss | ( | __u8 * | data, |
int | data_len | ||
) |
References find_hip_association_by_spi(), get_other_addr_from_list(), hip_sadb_add_del_addr(), log_(), logaddr(), NORM, SA, SA2IP, SAIPLEN, and WARN.
Referenced by hip_handle_notify().
int hip_convert_lsi_to_peer | ( | struct sockaddr * | lsi, |
hip_hit * | hitp, | ||
struct sockaddr * | src, | ||
struct sockaddr * | dst | ||
) |
References add_addresses_from_dns(), add_peer_hit(), _sockaddr_list::addr, _hi_node::addrs, hip_opt::allow_any, FALSE, find_host_identity(), get_addr_from_list(), hip_dht_resolve_hi(), hipcfg_getLlipByEndbox(), _hi_node::hit, HIT2LSI, HIT_SIZE, hits_equal(), log_(), _hi_node::lsi, lsi_lookup(), my_addr_head, _hi_node::name, NORM, OPT, peer_hi_head, print_hex(), _hi_node::rvs_addrs, SA, SA2IP, SAIPLEN, SALEN, TRUE, VALID_FAM, WARN, and zero_hit.
Referenced by start_base_exchange().
void hip_handle_esp | ( | char * | data, |
int | length | ||
) |
References ESP_ACQUIRE_LSI, ESP_ADDR_LOSS, ESP_EXPIRE_SPI, ESP_UDP_CTL, log_(), _espmsg::message_data, _espmsg::message_type, hip_opt::mh, OPT, receive_udp_hip_packet(), SA, start_base_exchange(), start_expire(), start_loss_multihoming(), and WARN.
Referenced by main_loop().
void hip_handle_multihoming_timeouts | ( | struct timeval * | now | ) |
References _hi_node::addrs, build_spi_locator(), get_other_addr_from_list(), hip_assoc_table, hip_send_notify(), log_(), logaddr(), max_hip_assoc, _hip_assoc::mh, multihoming_info::mh_addr, multihoming_info::mh_last_loss, multihoming_info::mh_time, _sockaddr_list::next, NORM, NOTIFY_LOSS_DETECT, _hip_assoc::peer_hi, readdress_association(), SA, SA2IP, SAIPLEN, _hip_assoc::spi_in, _hip_assoc::state, TDIFF, and WARN.
Referenced by main_loop().
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().
int multihoming_update | ( | hip_assoc * | hip_a, |
struct sockaddr * | dst | ||
) |
References log_(), logaddr(), _hip_assoc::mh, multihoming_info::mh_addr, multihoming_info::mh_last_loss, multihoming_info::mh_time, NORM, SA, SA2IP, SAIPLEN, SALEN, and WARN.
Referenced by start_loss_multihoming().
void receive_udp_hip_packet | ( | char * | buff, |
int | len | ||
) |
References hip_handle_packet(), SA, and src.
Referenced by hip_handle_esp().
void start_base_exchange | ( | struct sockaddr * | dst | ) |
References add_other_addresses_to_hi(), _hi_node::addrs, CLOSED, CLOSING, hip_conf::disable_udp, FALSE, find_hip_association(), find_hip_association2(), free_hip_assoc(), get_preferred_hi(), HCNF, _hip_assoc::hi, hip_convert_lsi_to_peer(), hip_send_I1(), HIP_UDP_PORT, HIPA_DST, HIPA_SRC, _hi_node::hit, _hiphdr::hit_rcvr, HIT_SIZE, _hiphdr::hit_sndr, I1_SENT, _sockaddr_list::if_index, init_hip_assoc(), IS_LSI, is_my_address(), log_(), log_hipa_fromto(), logaddr(), make_address_active(), my_hi_head, NORM, NORMT, hip_opt::opportunistic, OPT, _hip_assoc::peer_hi, _hip_assoc::preserve_outbound_policy, print_hex(), QOUT, SA, SALEN, set_state(), src, _hip_assoc::state, TRUE, _hip_assoc::udp, UNASSOCIATED, WARN, and zero_hit.
Referenced by hip_handle_esp().
void start_expire | ( | __u32 | spi | ) |
References build_rekey(), find_hip_association_by_spi(), hip_send_update(), log_(), NORM, _hip_assoc::rekey, and WARN.
Referenced by hip_handle_esp().
void start_loss_multihoming | ( | char * | data, |
int | len | ||
) |
References _hi_node::addrs, build_spi_locator(), find_hip_association_by_spi(), get_other_addr_from_list(), _hip_assoc::hi, hip_send_notify(), multihoming_update(), NOTIFY_LOSS_DETECT, and SA.
Referenced by hip_handle_esp().