FreeBSD kernel IPv4 code
|
#include <sys/cdefs.h>
#include <netinet/sctp_os.h>
#include <netinet/sctp_var.h>
#include <netinet/sctp_sysctl.h>
#include <netinet/sctp_pcb.h>
#include <netinet/sctp_header.h>
#include <netinet/sctputil.h>
#include <netinet/sctp_output.h>
#include <netinet/sctp_asconf.h>
#include <netinet/sctp_timer.h>
Go to the source code of this file.
Functions | |
__FBSDID ("$FreeBSD$") | |
static struct mbuf * | sctp_asconf_success_response (uint32_t id) |
static struct mbuf * | sctp_asconf_error_response (uint32_t id, uint16_t cause, uint8_t *error_tlv, uint16_t tlv_length) |
static struct mbuf * | sctp_process_asconf_add_ip (struct sockaddr *src, struct sctp_asconf_paramhdr *aph, struct sctp_tcb *stcb, int send_hb, int response_required) |
static int | sctp_asconf_del_remote_addrs_except (struct sctp_tcb *stcb, struct sockaddr *src) |
static struct mbuf * | sctp_process_asconf_delete_ip (struct sockaddr *src, struct sctp_asconf_paramhdr *aph, struct sctp_tcb *stcb, int response_required) |
static struct mbuf * | sctp_process_asconf_set_primary (struct sockaddr *src, struct sctp_asconf_paramhdr *aph, struct sctp_tcb *stcb, int response_required) |
void | sctp_handle_asconf (struct mbuf *m, unsigned int offset, struct sockaddr *src, struct sctp_asconf_chunk *cp, struct sctp_tcb *stcb, int first) |
static uint32_t | sctp_asconf_addr_match (struct sctp_asconf_addr *aa, struct sockaddr *sa) |
static uint32_t | sctp_addr_match (struct sctp_paramhdr *ph, struct sockaddr *sa) |
void | sctp_asconf_cleanup (struct sctp_tcb *stcb) |
static void | sctp_asconf_nets_cleanup (struct sctp_tcb *stcb, struct sctp_ifn *ifn) |
void | sctp_assoc_immediate_retrans (struct sctp_tcb *stcb, struct sctp_nets *dstnet) |
static int | sctp_asconf_queue_mgmt (struct sctp_tcb *, struct sctp_ifa *, uint16_t) |
void | sctp_net_immediate_retrans (struct sctp_tcb *stcb, struct sctp_nets *net) |
static void | sctp_path_check_and_react (struct sctp_tcb *stcb, struct sctp_ifa *newifa) |
static void | sctp_asconf_addr_mgmt_ack (struct sctp_tcb *stcb, struct sctp_ifa *addr, uint32_t flag) |
static int | sctp_asconf_queue_add (struct sctp_tcb *stcb, struct sctp_ifa *ifa, uint16_t type) |
static int | sctp_asconf_queue_sa_delete (struct sctp_tcb *stcb, struct sockaddr *sa) |
static struct sctp_asconf_addr * | sctp_asconf_find_param (struct sctp_tcb *stcb, uint32_t correlation_id) |
static void | sctp_asconf_process_error (struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_asconf_paramhdr *aph) |
static void | sctp_asconf_process_param_ack (struct sctp_tcb *stcb, struct sctp_asconf_addr *aparam, uint32_t flag) |
static void | sctp_asconf_ack_clear (struct sctp_tcb *stcb SCTP_UNUSED) |
void | sctp_handle_asconf_ack (struct mbuf *m, int offset, struct sctp_asconf_ack_chunk *cp, struct sctp_tcb *stcb, struct sctp_nets *net, int *abort_no_unlock) |
static void | sctp_addr_mgmt_assoc (struct sctp_inpcb *inp, struct sctp_tcb *stcb, struct sctp_ifa *ifa, uint16_t type, int addr_locked) |
int | sctp_asconf_iterator_ep (struct sctp_inpcb *inp, void *ptr, uint32_t val SCTP_UNUSED) |
static int | sctp_asconf_iterator_ep_end (struct sctp_inpcb *inp, void *ptr, uint32_t val SCTP_UNUSED) |
void | sctp_asconf_iterator_stcb (struct sctp_inpcb *inp, struct sctp_tcb *stcb, void *ptr, uint32_t val SCTP_UNUSED) |
void | sctp_asconf_iterator_end (void *ptr, uint32_t val SCTP_UNUSED) |
int32_t | sctp_set_primary_ip_address_sa (struct sctp_tcb *stcb, struct sockaddr *sa) |
int | sctp_is_addr_pending (struct sctp_tcb *stcb, struct sctp_ifa *sctp_ifa) |
static struct sockaddr * | sctp_find_valid_localaddr (struct sctp_tcb *stcb, int addr_locked) |
static struct sockaddr * | sctp_find_valid_localaddr_ep (struct sctp_tcb *stcb) |
struct mbuf * | sctp_compose_asconf (struct sctp_tcb *stcb, int *retlen, int addr_locked) |
static void | sctp_process_initack_addresses (struct sctp_tcb *stcb, struct mbuf *m, unsigned int offset, unsigned int length) |
static uint32_t | sctp_addr_in_initack (struct mbuf *m, uint32_t offset, uint32_t length, struct sockaddr *sa) |
static void | sctp_check_address_list_ep (struct sctp_tcb *stcb, struct mbuf *m, int offset, int length, struct sockaddr *init_addr) |
static void | sctp_check_address_list_all (struct sctp_tcb *stcb, struct mbuf *m, int offset, int length, struct sockaddr *init_addr, uint16_t local_scope, uint16_t site_scope, uint16_t ipv4_scope, uint16_t loopback_scope) |
void | sctp_check_address_list (struct sctp_tcb *stcb, struct mbuf *m, int offset, int length, struct sockaddr *init_addr, uint16_t local_scope, uint16_t site_scope, uint16_t ipv4_scope, uint16_t loopback_scope) |
uint32_t | sctp_addr_mgmt_ep_sa (struct sctp_inpcb *inp, struct sockaddr *sa, uint32_t type, uint32_t vrf_id) |
void | sctp_asconf_send_nat_state_update (struct sctp_tcb *stcb, struct sctp_nets *net) |
__FBSDID | ( | "$FreeBSD$" | ) |
|
static |
Definition at line 2885 of file sctp_asconf.c.
References sctp_ipv4addr_param::addr, sctp_ipv6addr_param::addr, sctp_paramhdr::param_length, sctp_paramhdr::param_type, in_addr::s_addr, SCTP_DEBUG_ASCONF1, SCTP_DEBUG_ASCONF2, SCTP_IPV4_ADDRESS, SCTP_IPV6_ADDRESS, sctp_m_getptr(), SCTP_SIZE32, SCTPDBG, SCTPDBG_ADDR, and sockaddr_in::sin_addr.
Referenced by sctp_check_address_list_all(), and sctp_check_address_list_ep().
|
static |
Definition at line 887 of file sctp_asconf.c.
References sctp_ipv4addr_param::addr, sctp_ipv6addr_param::addr, sctp_paramhdr::param_length, sctp_paramhdr::param_type, sctp_ipv4addr_param::ph, sctp_ipv6addr_param::ph, SCTP_IPV4_ADDRESS, SCTP_IPV6_ADDRESS, and sockaddr_in::sin_addr.
Referenced by sctp_is_addr_pending().
|
static |
Definition at line 1888 of file sctp_asconf.c.
References sctp_ifa::address, sctp_association::asconf_supported, sctp_tcb::asoc, IN4_ISPRIVATE_ADDRESS, sctp_inpcb::inp, inpcb::inp_cred, sctp_inpcb::ip_inp, sctp_scoping::ipv4_local_scope, sctp_scoping::local_scope, sctp_ifa::localifa_flags, sctp_association::primary_destination, prison_check_ip4(), in_addr::s_addr, sctp_sockstore::sa, sctp_association::scope, sctp_add_local_addr_restricted(), SCTP_ADDR_IFA_UNUSEABLE, sctp_asconf_queue_add(), sctp_inpcb::sctp_flags, SCTP_GET_STATE, SCTP_IPV6_V6ONLY, sctp_is_feature_off, sctp_is_feature_on, SCTP_PCB_FLAGS_BOUND_V6, SCTP_PCB_FLAGS_BOUNDALL, SCTP_PCB_FLAGS_DO_ASCONF, sctp_send_asconf(), SCTP_STATE_OPEN, SCTP_STATE_SHUTDOWN_RECEIVED, sctp_timer_start(), SCTP_TIMER_TYPE_ASCONF, sctp_sockstore::sin, sctp_sockstore::sin6, sockaddr_in::sin_addr, and sctp_scoping::site_scope.
Referenced by sctp_check_address_list_all(), and sctp_check_address_list_ep().
uint32_t sctp_addr_mgmt_ep_sa | ( | struct sctp_inpcb * | inp, |
struct sockaddr * | sa, | ||
uint32_t | type, | ||
uint32_t | vrf_id | ||
) |
Definition at line 3160 of file sctp_asconf.c.
References sctp_laddr::action, sctp_asconf_iterator::cnt, sctp_ifa::ifa, sctp_laddr::ifa, sctp_inpcb::laddr_count, sctp_asconf_iterator::list_of_work, sctp_ifa::refcount, SCTP_ADD_IP_ADDRESS, sctp_add_local_addr_ep(), sctp_inpcb::sctp_addr_list, SCTP_ADDR_NOT_LOCKED, sctp_asconf_iterator_end(), sctp_asconf_iterator_ep(), sctp_asconf_iterator_ep_end(), sctp_asconf_iterator_stcb(), SCTP_ASOC_ANY_STATE, sctp_inpcb::sctp_asoc_list, SCTP_BASE_INFO, SCTP_DEL_IP_ADDRESS, sctp_del_local_addr_ep(), sctp_find_ifa_by_addr(), sctp_find_ifa_in_ep(), SCTP_FREE, SCTP_FROM_SCTP_ASCONF, SCTP_INCR_LADDR_COUNT, sctp_initiate_iterator(), SCTP_LTRACE_ERR_RET, SCTP_MALLOC, SCTP_PCB_ANY_FEATURES, SCTP_PCB_ANY_FLAGS, SCTP_PRINTF, and SCTP_ZONE_GET.
Referenced by sctp_bindx_add_address(), and sctp_bindx_delete_address().
|
static |
Definition at line 1654 of file sctp_asconf.c.
Referenced by sctp_handle_asconf_ack().
|
static |
Definition at line 847 of file sctp_asconf.c.
References sctp_ipv6addr_param::addr, sctp_asconf_addr_param::addrp, sctp_asconf_addr::ap, sctp_paramhdr::param_type, sctp_ipv6addr_param::ph, SCTP_IPV4_ADDRESS, SCTP_IPV6_ADDRESS, and sockaddr_in::sin_addr.
Referenced by sctp_asconf_queue_mgmt(), and sctp_asconf_queue_sa_delete().
|
static |
Definition at line 1178 of file sctp_asconf.c.
References sctp_ifa::ifn_p, sctp_asconf_nets_cleanup(), sctp_del_local_addr_restricted(), sctp_tcb::sctp_ep, sctp_is_mobility_feature_on, SCTP_MOBILITY_BASE, SCTP_MOBILITY_FASTHANDOFF, and sctp_path_check_and_react().
Referenced by sctp_asconf_process_param_ack().
void sctp_asconf_cleanup | ( | struct sctp_tcb * | stcb | ) |
Definition at line 939 of file sctp_asconf.c.
References sctp_association::asconf_seq_out, sctp_association::asconf_seq_out_acked, sctp_tcb::asoc, sctp_tcb::sctp_ep, SCTP_FROM_SCTP_ASCONF, SCTP_LOC_2, sctp_timer_stop(), SCTP_TIMER_TYPE_ASCONF, and sctp_toss_old_asconf().
Referenced by sctp_asconf_timer(), and sctp_process_unrecog_chunk().
|
static |
Definition at line 283 of file sctp_asconf.c.
References sctp_net_route::_l_addr, sctp_tcb::asoc, sctp_association::nets, sctp_nets::ro, SCTP_DEBUG_ASCONF1, sctp_findnet(), SCTP_NOTIFY_ASCONF_DELETE_IP, sctp_remove_net(), SCTP_SO_NOT_LOCKED, sctp_ulp_notify(), SCTPDBG, and SCTPDBG_ADDR.
Referenced by sctp_process_asconf_delete_ip().
|
static |
Definition at line 101 of file sctp_asconf.c.
References sctp_error_cause::code, sctp_asconf_paramhdr::correlation_id, id, sctp_error_cause::length, sctp_paramhdr::param_length, sctp_paramhdr::param_type, sctp_asconf_paramhdr::ph, SCTP_BUF_LEN, SCTP_DEBUG_ASCONF1, SCTP_ERROR_CAUSE_IND, sctp_get_mbuf_for_msg(), and SCTPDBG.
Referenced by sctp_process_asconf_add_ip(), sctp_process_asconf_delete_ip(), and sctp_process_asconf_set_primary().
|
static |
Definition at line 1543 of file sctp_asconf.c.
References sctp_asconf_addr::ap, sctp_asconf_addr_param::aph, sctp_association::asconf_queue, sctp_tcb::asoc, sctp_asconf_paramhdr::correlation_id, next, and sctp_asconf_addr::sent.
Referenced by sctp_handle_asconf_ack().
void sctp_asconf_iterator_end | ( | void * | ptr, |
uint32_t val | SCTP_UNUSED | ||
) |
Definition at line 2263 of file sctp_asconf.c.
References sctp_laddr::action, sctp_ifa::ifa, sctp_laddr::ifa, sctp_asconf_iterator::list_of_work, sctp_ifa::localifa_flags, SCTP_ADD_IP_ADDRESS, SCTP_BASE_INFO, SCTP_DECR_LADDR_COUNT, SCTP_FREE, sctp_free_ifa(), and SCTP_ZONE_FREE.
Referenced by sctp_addr_mgmt_ep_sa(), and sctp_handle_addr_wq().
int sctp_asconf_iterator_ep | ( | struct sctp_inpcb * | inp, |
void * | ptr, | ||
uint32_t val | SCTP_UNUSED | ||
) |
Definition at line 2024 of file sctp_asconf.c.
References sctp_ifa::address, sctp_asconf_iterator::cnt, sctp_ifa::ifa, sctp_laddr::ifa, sctp_asconf_iterator::list_of_work, sctp_sockstore::sa, sctp_inpcb::sctp_flags, SCTP_IPV6_V6ONLY, and SCTP_PCB_FLAGS_BOUND_V6.
Referenced by sctp_addr_mgmt_ep_sa(), and sctp_handle_addr_wq().
|
static |
Definition at line 2069 of file sctp_asconf.c.
References sctp_laddr::action, sctp_ifa::ifa, sctp_laddr::ifa, sctp_asconf_iterator::list_of_work, SCTP_ADD_IP_ADDRESS, sctp_inpcb::sctp_addr_list, SCTP_DEL_IP_ADDRESS, and sctp_del_local_addr_ep().
Referenced by sctp_addr_mgmt_ep_sa().
void sctp_asconf_iterator_stcb | ( | struct sctp_inpcb * | inp, |
struct sctp_tcb * | stcb, | ||
void * | ptr, | ||
uint32_t val | SCTP_UNUSED | ||
) |
Definition at line 2100 of file sctp_asconf.c.
References sctp_net_route::_s_addr, sctp_laddr::action, sctp_ifa::address, sctp_association::asconf_supported, sctp_tcb::asoc, sctp_association::cc_functions, sctp_asconf_iterator::cnt, sctp_ifa::ifa, sctp_laddr::ifa, IN4_ISPRIVATE_ADDRESS, sctp_inpcb::inp, inpcb::inp_cred, sctp_inpcb::ip_inp, sctp_scoping::ipv4_local_scope, sctp_asconf_iterator::list_of_work, sctp_scoping::local_scope, sctp_association::nets, prison_check_ip4(), sctp_nets::ro, sctp_nets::RTO, in_addr::s_addr, sctp_sockstore::sa, sctp_association::scope, SCTP_ADD_IP_ADDRESS, sctp_add_local_addr_restricted(), SCTP_ADDR_NOT_LOCKED, sctp_asconf_queue_add(), SCTP_DEL_IP_ADDRESS, sctp_tcb::sctp_ep, sctp_inpcb::sctp_flags, sctp_free_ifa(), SCTP_GET_STATE, SCTP_IPV6_V6ONLY, sctp_is_addr_in_ep(), sctp_is_address_in_scope(), sctp_is_feature_on, SCTP_PCB_FLAGS_BOUND_V6, SCTP_PCB_FLAGS_BOUNDALL, SCTP_PCB_FLAGS_DO_ASCONF, sctp_send_asconf(), sctp_cc_functions::sctp_set_initial_cc_param, SCTP_SET_PRIM_ADDR, SCTP_STATE_OPEN, SCTP_STATE_SHUTDOWN_RECEIVED, sctp_sockstore::sin, sctp_sockstore::sin6, sockaddr_in::sin_addr, sctp_nets::src_addr_selected, sctp_ifa::vrf_id, and sctp_association::vrf_id.
Referenced by sctp_addr_mgmt_ep_sa(), and sctp_handle_addr_wq().
Definition at line 956 of file sctp_asconf.c.
References sctp_net_route::_s_addr, sctp_tcb::asoc, sctp_ifn::ifn_index, sctp_association::nets, sctp_nets::ro, sctp_free_ifa(), SCTP_GET_IF_INDEX_FROM_ROUTE, SCTP_ROUTE_HAS_VALID_IFN, and sctp_nets::src_addr_selected.
Referenced by sctp_asconf_addr_mgmt_ack().
|
static |
Definition at line 1563 of file sctp_asconf.c.
References sctp_error_cause::code, sctp_error_cause::length, sctp_paramhdr::param_length, sctp_paramhdr::param_type, sctp_asconf_paramhdr::ph, SCTP_ADD_IP_ADDRESS, SCTP_CAUSE_RESOURCE_SHORTAGE, SCTP_DEBUG_ASCONF1, SCTP_DEL_IP_ADDRESS, SCTP_SET_PRIM_ADDR, and SCTPDBG.
Referenced by sctp_handle_asconf_ack().
|
static |
Definition at line 1615 of file sctp_asconf.c.
References sctp_asconf_addr::ap, sctp_asconf_addr_param::aph, sctp_association::asconf_queue, sctp_tcb::asoc, sctp_asconf_addr::ifa, next, sctp_paramhdr::param_type, sctp_asconf_paramhdr::ph, SCTP_ADD_IP_ADDRESS, sctp_asconf_addr_mgmt_ack(), SCTP_DEBUG_ASCONF1, SCTP_DEL_IP_ADDRESS, SCTP_FREE, sctp_free_ifa(), SCTP_SET_PRIM_ADDR, and SCTPDBG.
Referenced by sctp_handle_asconf_ack().
|
static |
Definition at line 1341 of file sctp_asconf.c.
References sctp_association::asconf_addr_del_pending, sctp_association::asconf_del_pending, sctp_association::asconf_supported, sctp_tcb::asoc, sctp_association::cc_functions, sctp_nets::error_count, sctp_association::nets, sctp_association::overall_error_count, sctp_ifa::refcount, sctp_nets::RTO, SCTP_ADD_IP_ADDRESS, sctp_asconf_queue_mgmt(), SCTP_BASE_SYSCTL, SCTP_DEBUG_ASCONF2, SCTP_DEL_IP_ADDRESS, sctp_tcb::sctp_ep, sctp_inpcb::sctp_flags, sctp_free_ifa(), SCTP_FROM_SCTP_ASCONF, sctp_local_addr_count(), sctp_misc_ints(), SCTP_PCB_FLAGS_BOUNDALL, sctp_cc_functions::sctp_set_initial_cc_param, SCTP_SET_PRIM_ADDR, SCTP_THRESHOLD_CLEAR, SCTP_THRESHOLD_LOGGING, and SCTPDBG.
Referenced by sctp_addr_mgmt_assoc(), sctp_asconf_iterator_stcb(), and sctp_set_primary_ip_address_sa().
|
static |
Definition at line 1216 of file sctp_asconf.c.
References sctp_ipv6addr_param::addr, sctp_ifa::address, sctp_asconf_addr_param::addrp, sctp_asconf_addr::ap, sctp_asconf_addr_param::aph, sctp_association::asconf_queue, sctp_tcb::asoc, sctp_asconf_addr::ifa, next, sctp_paramhdr::param_length, sctp_paramhdr::param_type, sctp_ipv6addr_param::ph, sctp_asconf_paramhdr::ph, sctp_ifa::refcount, sctp_sockstore::sa, SCTP_ADD_IP_ADDRESS, sctp_asconf_addr_match(), SCTP_BASE_SYSCTL, SCTP_DEBUG_ASCONF1, SCTP_DEBUG_ASCONF2, SCTP_DEL_IP_ADDRESS, sctp_del_local_addr_restricted(), SCTP_FREE, sctp_free_ifa(), SCTP_IPV4_ADDRESS, SCTP_IPV6_ADDRESS, SCTP_MALLOC, SCTP_PRINTF, SCTPDBG, SCTPDBG_ADDR, sctp_asconf_addr::sent, sctp_sockstore::sin, sctp_sockstore::sin6, sockaddr_in::sin_addr, and sctp_asconf_addr::special_del.
Referenced by sctp_asconf_queue_add(), sctp_asconf_send_nat_state_update(), and sctp_path_check_and_react().
|
static |
Definition at line 1439 of file sctp_asconf.c.
References sctp_ipv6addr_param::addr, sctp_asconf_addr_param::addrp, sctp_asconf_addr::ap, sctp_asconf_addr_param::aph, sctp_association::asconf_queue, sctp_association::asconf_supported, sctp_tcb::asoc, sctp_ifa::ifa, sctp_asconf_addr::ifa, next, sctp_paramhdr::param_length, sctp_paramhdr::param_type, sctp_ipv6addr_param::ph, sctp_asconf_paramhdr::ph, sctp_ifa::refcount, SCTP_ADD_IP_ADDRESS, SCTP_ADDR_NOT_LOCKED, sctp_asconf_addr_match(), SCTP_DEBUG_ASCONF1, SCTP_DEL_IP_ADDRESS, sctp_del_local_addr_restricted(), sctp_find_ifa_by_addr(), SCTP_FREE, sctp_free_ifa(), SCTP_IPV4_ADDRESS, SCTP_IPV6_ADDRESS, SCTP_MALLOC, SCTPDBG, sctp_asconf_addr::sent, sockaddr_in::sin_addr, sctp_asconf_addr::special_del, and sctp_association::vrf_id.
Referenced by sctp_process_initack_addresses().
Definition at line 3257 of file sctp_asconf.c.
References sctp_net_route::_l_addr, sctp_laddr::action, sctp_ifa::address, sctp_asconf_addr_param::addrp, sctp_asconf_addr::ap, sctp_asconf_addr_param::aph, sctp_asconf_tag_param::aph, sctp_association::asconf_queue, sctp_tcb::asoc, sctp_inpcb::def_vrf_id, sctp_laddr::ifa, sctp_asconf_addr::ifa, sctp_ifn::ifalist, sctp_vrf::ifnlist, IN4_ISLOOPBACK_ADDRESS, IN4_ISPRIVATE_ADDRESS, sctp_inpcb::inp, inpcb::inp_cred, sctp_inpcb::ip_inp, sctp_asconf_tag_param::local_vtag, sctp_ifa::localifa_flags, sctp_association::my_vtag, next, sctp_paramhdr::param_length, sctp_paramhdr::param_type, sctp_association::peer_vtag, sctp_ipv6addr_param::ph, sctp_asconf_paramhdr::ph, prison_check_ip4(), sctp_asconf_tag_param::remote_vtag, sctp_nets::ro, sctp_sockstore::sa, SCTP_ADD_IP_ADDRESS, sctp_inpcb::sctp_addr_list, SCTP_ADDR_NOT_LOCKED, sctp_asconf_queue_mgmt(), SCTP_BEING_DELETED, SCTP_DEBUG_ASCONF1, SCTP_DEL_IP_ADDRESS, sctp_tcb::sctp_ep, sctp_find_vrf(), sctp_inpcb::sctp_flags, SCTP_FREE, SCTP_IPI_ADDR_RLOCK, SCTP_IPI_ADDR_RUNLOCK, SCTP_IPV4_ADDRESS, SCTP_IPV6_ADDRESS, SCTP_MALLOC, SCTP_NAT_VTAGS, SCTP_PCB_FLAGS_BOUNDALL, sctp_send_asconf(), SCTPDBG, sctp_asconf_addr::sent, sctp_sockstore::sin, sctp_sockstore::sin6, sockaddr_in::sin_addr, sctp_asconf_addr::special_del, and sctp_ifn::vrf.
Referenced by sctp_handle_nat_missing_state().
|
static |
Definition at line 78 of file sctp_asconf.c.
References sctp_asconf_paramhdr::correlation_id, id, sctp_paramhdr::param_length, sctp_paramhdr::param_type, sctp_asconf_paramhdr::ph, SCTP_BUF_LEN, SCTP_DEBUG_ASCONF1, sctp_get_mbuf_for_msg(), SCTP_SUCCESS_REPORT, and SCTPDBG.
Referenced by sctp_process_asconf_add_ip(), sctp_process_asconf_delete_ip(), and sctp_process_asconf_set_primary().
Definition at line 993 of file sctp_asconf.c.
References sctp_net_route::_l_addr, sctp_tcb::asoc, sctp_association::deleted_primary, sctp_nets::dest_state, sctp_association::num_send_timers_up, sctp_association::primary_destination, sctp_nets::ro, sctp_sockstore::sa, SCTP_ADDR_UNCONFIRMED, sctp_chunk_output(), SCTP_DEBUG_ASCONF1, sctp_tcb::sctp_ep, SCTP_FROM_SCTP_ASCONF, SCTP_INP_DECR_REF, SCTP_LOC_3, SCTP_OUTPUT_FROM_T3, SCTP_SO_NOT_LOCKED, sctp_t3rxt_timer(), SCTP_TCB_LOCK_ASSERT, sctp_timer_start(), sctp_timer_stop(), SCTP_TIMER_TYPE_SEND, SCTPDBG, SCTPDBG_ADDR, sctp_association::sent_queue, sctp_association::sent_queue_cnt, and sctp_tmit_chunk::whoTo.
Referenced by sctp_handle_heartbeat_ack(), and sctp_process_asconf_set_primary().
void sctp_check_address_list | ( | struct sctp_tcb * | stcb, |
struct mbuf * | m, | ||
int | offset, | ||
int | length, | ||
struct sockaddr * | init_addr, | ||
uint16_t | local_scope, | ||
uint16_t | site_scope, | ||
uint16_t | ipv4_scope, | ||
uint16_t | loopback_scope | ||
) |
Definition at line 3132 of file sctp_asconf.c.
References sctp_check_address_list_all(), sctp_check_address_list_ep(), sctp_tcb::sctp_ep, sctp_inpcb::sctp_flags, sctp_is_feature_on, SCTP_PCB_FLAGS_BOUNDALL, SCTP_PCB_FLAGS_DO_ASCONF, and sctp_process_initack_addresses().
Referenced by sctp_process_cookie_new().
|
static |
Definition at line 3037 of file sctp_asconf.c.
References sctp_ifa::address, sctp_tcb::asoc, sctp_ifn::ifalist, sctp_vrf::ifnlist, IN4_ISPRIVATE_ADDRESS, sctp_inpcb::inp, inpcb::inp_cred, sctp_inpcb::ip_inp, prison_check_ip4(), sctp_sockstore::sa, SCTP_ADD_IP_ADDRESS, sctp_addr_in_initack(), SCTP_ADDR_LOCKED, sctp_addr_mgmt_assoc(), sctp_cmpaddr(), sctp_tcb::sctp_ep, sctp_find_vrf(), SCTP_IFN_IS_IFT_LOOP, SCTP_IPI_ADDR_RLOCK, SCTP_IPI_ADDR_RUNLOCK, sctp_sockstore::sin, sctp_sockstore::sin6, sockaddr_in::sin_addr, sctp_ifa::vrf_id, and sctp_association::vrf_id.
Referenced by sctp_check_address_list().
|
static |
Definition at line 3006 of file sctp_asconf.c.
References sctp_ifa::address, sctp_laddr::ifa, sctp_sockstore::sa, SCTP_ADD_IP_ADDRESS, sctp_addr_in_initack(), sctp_inpcb::sctp_addr_list, sctp_addr_mgmt_assoc(), SCTP_ADDR_NOT_LOCKED, sctp_cmpaddr(), SCTP_DEBUG_ASCONF1, sctp_tcb::sctp_ep, and SCTPDBG.
Referenced by sctp_check_address_list().
struct mbuf * sctp_compose_asconf | ( | struct sctp_tcb * | stcb, |
int * | retlen, | ||
int | addr_locked | ||
) |
Definition at line 2554 of file sctp_asconf.c.
References sctp_ipv6addr_param::addr, sctp_asconf_addr_param::addrp, sctp_asconf_addr::ap, sctp_asconf_addr_param::aph, sctp_association::asconf_queue, sctp_association::asconf_seq_out, sctp_tcb::asoc, sctp_asconf_chunk::ch, sctp_chunkhdr::chunk_flags, sctp_chunkhdr::chunk_length, sctp_chunkhdr::chunk_type, sctp_asconf_paramhdr::correlation_id, next, sctp_paramhdr::param_length, sctp_paramhdr::param_type, sctp_ipv6addr_param::ph, sctp_asconf_paramhdr::ph, SCTP_ASCONF, SCTP_BUF_LEN, SCTP_BUF_NEXT, SCTP_DEBUG_ASCONF1, SCTP_DEL_IP_ADDRESS, sctp_tcb::sctp_ep, sctp_find_valid_localaddr(), sctp_find_valid_localaddr_ep(), sctp_inpcb::sctp_flags, sctp_get_mbuf_for_msg(), SCTP_IPV4_ADDRESS, SCTP_IPV6_ADDRESS, sctp_m_freem, SCTP_PCB_FLAGS_BOUNDALL, SCTP_SIZE32, SCTPDBG, sctp_asconf_addr::sent, sctp_asconf_chunk::serial_number, sctp_association::smallest_mtu, and sctp_asconf_addr::special_del.
Referenced by sctp_send_asconf().
|
static |
Definition at line 2423 of file sctp_asconf.c.
References sctp_ifa::address, sctp_tcb::asoc, sctp_ifn::ifalist, sctp_vrf::ifnlist, IN4_ISPRIVATE_ADDRESS, sctp_inpcb::inp, inpcb::inp_cred, sctp_inpcb::ip_inp, sctp_scoping::ipv4_addr_legal, sctp_scoping::ipv4_local_scope, sctp_scoping::ipv6_addr_legal, sctp_scoping::local_scope, sctp_ifa::localifa_flags, sctp_scoping::loopback_scope, prison_check_ip4(), in_addr::s_addr, sctp_sockstore::sa, sctp_association::scope, SCTP_ADDR_IFA_UNUSEABLE, SCTP_ADDR_NOT_LOCKED, sctp_tcb::sctp_ep, sctp_find_vrf(), SCTP_IFN_IS_IFT_LOOP, SCTP_IPI_ADDR_RLOCK, SCTP_IPI_ADDR_RUNLOCK, sctp_is_addr_pending(), sctp_is_addr_restricted(), sctp_sockstore::sin, sctp_sockstore::sin6, sockaddr_in::sin_addr, sctp_scoping::site_scope, and sctp_association::vrf_id.
Referenced by sctp_compose_asconf().
|
static |
Definition at line 2529 of file sctp_asconf.c.
References sctp_ifa::address, sctp_laddr::ifa, sctp_sockstore::sa, sctp_inpcb::sctp_addr_list, sctp_tcb::sctp_ep, sctp_is_addr_pending(), and sctp_is_addr_restricted().
Referenced by sctp_compose_asconf().
void sctp_handle_asconf | ( | struct mbuf * | m, |
unsigned int | offset, | ||
struct sockaddr * | src, | ||
struct sctp_asconf_chunk * | cp, | ||
struct sctp_tcb * | stcb, | ||
int | first | ||
) |
Definition at line 606 of file sctp_asconf.c.
References sctp_association::asconf_ack_sent, sctp_association::asconf_seq_in, sctp_tcb::asoc, sctp_asconf_chunk::ch, sctp_asconf_ack_chunk::ch, sctp_chunkhdr::chunk_flags, sctp_chunkhdr::chunk_length, sctp_chunkhdr::chunk_type, sctp_asconf_ack::data, sctp_association::last_control_chunk_from, sctp_asconf_ack::last_sent_to, sctp_asconf_ack::len, next, sctp_paramhdr::param_length, sctp_paramhdr::param_type, sctp_ipv6addr_param::ph, sctp_asconf_paramhdr::ph, SCTP_ADD_IP_ADDRESS, SCTP_ASCONF_ACK, SCTP_BASE_INFO, SCTP_BASE_SYSCTL, SCTP_BUF_LEN, SCTP_BUF_NEXT, SCTP_DEBUG_ASCONF1, SCTP_DEL_IP_ADDRESS, SCTP_ERROR_CAUSE_IND, sctp_findnet(), sctp_get_mbuf_for_msg(), sctp_m_freem, sctp_m_getptr(), SCTP_NAT_VTAGS, SCTP_PARAM_BUFFER_SIZE, sctp_process_asconf_add_ip(), sctp_process_asconf_delete_ip(), sctp_process_asconf_set_primary(), SCTP_SET_PRIM_ADDR, SCTP_SIZE32, SCTP_SUCCESS_REPORT, SCTP_TSN_GE, SCTP_ULP_ADAPTATION, SCTP_ZONE_FREE, SCTP_ZONE_GET, SCTPDBG, SCTPDBG_ADDR, sctp_asconf_chunk::serial_number, sctp_asconf_ack_chunk::serial_number, and sctp_asconf_ack::serial_number.
Referenced by sctp_process_control().
void sctp_handle_asconf_ack | ( | struct mbuf * | m, |
int | offset, | ||
struct sctp_asconf_ack_chunk * | cp, | ||
struct sctp_tcb * | stcb, | ||
struct sctp_nets * | net, | ||
int * | abort_no_unlock | ||
) |
Definition at line 1662 of file sctp_asconf.c.
References sctp_asconf_addr::ap, sctp_asconf_addr_param::aph, sctp_association::asconf_queue, sctp_association::asconf_seq_out, sctp_association::asconf_seq_out_acked, sctp_tcb::asoc, sctp_asconf_ack_chunk::ch, sctp_chunkhdr::chunk_length, sctp_asconf_paramhdr::correlation_id, id, next, sctp_paramhdr::param_length, sctp_paramhdr::param_type, sctp_asconf_paramhdr::ph, sctp_abort_an_association(), SCTP_ADDR_NOT_LOCKED, sctp_asconf_ack_clear(), sctp_asconf_find_param(), sctp_asconf_process_error(), sctp_asconf_process_param_ack(), SCTP_CAUSE_PROTOCOL_VIOLATION, SCTP_DEBUG_ASCONF1, SCTP_DIAG_INFO_LEN, sctp_tcb::sctp_ep, SCTP_ERROR_CAUSE_IND, SCTP_FROM_SCTP_ASCONF, sctp_generate_cause(), SCTP_LOC_5, sctp_m_getptr(), SCTP_PARAM_BUFFER_SIZE, sctp_send_asconf(), SCTP_SIZE32, SCTP_SNPRINTF, SCTP_SO_NOT_LOCKED, SCTP_SUCCESS_REPORT, sctp_timer_start(), sctp_timer_stop(), SCTP_TIMER_TYPE_ASCONF, sctp_toss_old_asconf(), SCTPDBG, sctp_asconf_addr::sent, and sctp_asconf_ack_chunk::serial_number.
Referenced by sctp_process_control().
Definition at line 2328 of file sctp_asconf.c.
References sctp_ifa::address, sctp_association::asconf_send_queue, sctp_tcb::asoc, sctp_asconf_chunk::ch, sctp_chunkhdr::chunk_length, sctp_tmit_chunk::data, sctp_paramhdr::param_length, sctp_paramhdr::param_type, sctp_asconf_paramhdr::ph, sctp_sockstore::sa, SCTP_ADD_IP_ADDRESS, sctp_addr_match(), SCTP_DEBUG_ASCONF1, SCTP_DEL_IP_ADDRESS, sctp_m_getptr(), SCTP_PARAM_BUFFER_SIZE, SCTP_SIZE32, and SCTPDBG.
Referenced by sctp_choose_boundall(), sctp_choose_boundspecific_stcb(), sctp_count_num_preferred_boundall(), sctp_does_stcb_own_this_addr(), sctp_find_valid_localaddr(), sctp_find_valid_localaddr_ep(), sctp_select_nth_preferred_addr_from_ifn_boundall(), and sctp_setopt().
Definition at line 1049 of file sctp_asconf.c.
References sctp_tcb::asoc, sctp_association::cc_functions, sctp_nets::error_count, sctp_nets::marked_retrans, sctp_association::marked_retrans, sctp_nets::RTO, sctp_chunk_output(), SCTP_DATAGRAM_RESEND, SCTP_DEBUG_ASCONF1, sctp_tcb::sctp_ep, sctp_flight_size_decrease, SCTP_FROM_SCTP_ASCONF, SCTP_LOC_4, SCTP_OUTPUT_FROM_T3, sctp_cc_functions::sctp_set_initial_cc_param, SCTP_SO_NOT_LOCKED, sctp_timer_stop(), SCTP_TIMER_TYPE_SEND, sctp_total_flight_decrease, sctp_ucount_incr, SCTPDBG, sctp_tmit_chunk::sent, sctp_association::sent_queue, sctp_association::sent_queue_retran_cnt, and sctp_tmit_chunk::whoTo.
Referenced by sctp_path_check_and_react().
Definition at line 1076 of file sctp_asconf.c.
References sctp_net_route::_l_addr, sctp_net_route::_s_addr, sctp_ifa::address, sctp_tcb::asoc, sctp_inpcb::def_vrf_id, sctp_inpcb::fibnum, sctp_association::nets, sctp_association::primary_destination, sctp_nets::ro, sctp_net_route::ro_nh, sctp_sockstore::sa, sctp_asconf_queue_mgmt(), SCTP_DEBUG_ASCONF1, sctp_tcb::sctp_ep, sctp_free_ifa(), sctp_is_mobility_feature_on, sctp_local_addr_count(), SCTP_MOBILITY_FASTHANDOFF, sctp_net_immediate_retrans(), SCTP_RTALLOC, SCTP_SET_PRIM_ADDR, sctp_v4src_match_nexthop(), sctp_v6src_match_nexthop(), SCTPDBG, sctp_sockstore::sin6, and sctp_nets::src_addr_selected.
Referenced by sctp_asconf_addr_mgmt_ack().
|
static |
Definition at line 152 of file sctp_asconf.c.
References sctp_ipv4addr_param::addr, sctp_ipv6addr_param::addr, sctp_tcb::asoc, sctp_asconf_paramhdr::correlation_id, INADDR_ANY, INADDR_BROADCAST, sctp_paramhdr::param_length, sctp_paramhdr::param_type, sctp_ipv4addr_param::ph, sctp_ipv6addr_param::ph, sctp_asconf_paramhdr::ph, sctp_association::port, sctp_tcb::rport, in_addr::s_addr, sctp_sockstore::sa, sctp_add_remote_addr(), SCTP_ADDR_DYNAMIC_ADDED, sctp_asconf_error_response(), sctp_asconf_success_response(), SCTP_BASE_SYSCTL, SCTP_CAUSE_INVALID_PARAM, SCTP_CAUSE_RESOURCE_SHORTAGE, SCTP_DEBUG_ASCONF1, SCTP_DONOT_SETSCOPE, sctp_tcb::sctp_ep, SCTP_IPV4_ADDRESS, SCTP_IPV6_ADDRESS, SCTP_NOTIFY_ASCONF_ADD_IP, sctp_send_hb(), SCTP_SO_NOT_LOCKED, sctp_timer_start(), SCTP_TIMER_TYPE_HEARTBEAT, SCTP_TIMER_TYPE_PATHMTURAISE, sctp_ulp_notify(), SCTPDBG, SCTPDBG_ADDR, sctp_sockstore::sin, sctp_sockstore::sin6, sockaddr_in::sin_addr, sockaddr_in::sin_family, sockaddr_in::sin_len, and sockaddr_in::sin_port.
Referenced by sctp_handle_asconf().
|
static |
Definition at line 312 of file sctp_asconf.c.
References sctp_ipv4addr_param::addr, sctp_ipv6addr_param::addr, sctp_asconf_paramhdr::correlation_id, INADDR_ANY, sctp_paramhdr::param_length, sctp_paramhdr::param_type, sctp_ipv4addr_param::ph, sctp_ipv6addr_param::ph, sctp_asconf_paramhdr::ph, sctp_tcb::rport, in_addr::s_addr, sctp_sockstore::sa, sctp_asconf_del_remote_addrs_except(), sctp_asconf_error_response(), sctp_asconf_success_response(), SCTP_BASE_SYSCTL, SCTP_CAUSE_DELETING_LAST_ADDR, SCTP_CAUSE_DELETING_SRC_ADDR, SCTP_CAUSE_REQUEST_REFUSED, SCTP_CAUSE_UNRESOLVABLE_ADDR, sctp_cmpaddr(), SCTP_DEBUG_ASCONF1, sctp_del_remote_addr(), SCTP_IPV4_ADDRESS, SCTP_IPV6_ADDRESS, SCTP_NOTIFY_ASCONF_DELETE_IP, SCTP_SO_NOT_LOCKED, sctp_ulp_notify(), SCTPDBG, SCTPDBG_ADDR, sctp_sockstore::sin, sctp_sockstore::sin6, sockaddr_in::sin_addr, sockaddr_in::sin_family, sockaddr_in::sin_len, and sockaddr_in::sin_port.
Referenced by sctp_handle_asconf().
|
static |
Definition at line 450 of file sctp_asconf.c.
References sctp_ipv4addr_param::addr, sctp_ipv6addr_param::addr, sctp_association::alternate, sctp_tcb::asoc, sctp_asconf_paramhdr::correlation_id, sctp_association::deleted_primary, sctp_nets::dest_state, INADDR_ANY, sctp_paramhdr::param_length, sctp_paramhdr::param_type, sctp_ipv4addr_param::ph, sctp_ipv6addr_param::ph, sctp_asconf_paramhdr::ph, sctp_association::primary_destination, in_addr::s_addr, sctp_sockstore::sa, SCTP_ADDR_PF, SCTP_ADDR_REACHABLE, SCTP_ADDR_UNCONFIRMED, sctp_asconf_error_response(), sctp_asconf_success_response(), sctp_assoc_immediate_retrans(), SCTP_BASE_SYSCTL, SCTP_CAUSE_UNRESOLVABLE_ADDR, SCTP_DEBUG_ASCONF1, sctp_delete_prim_timer(), sctp_tcb::sctp_ep, sctp_free_remote_addr, SCTP_FROM_SCTP_ASCONF, SCTP_IPV4_ADDRESS, SCTP_IPV6_ADDRESS, sctp_is_mobility_feature_on, SCTP_LOC_1, SCTP_MOBILITY_BASE, SCTP_MOBILITY_FASTHANDOFF, SCTP_MOBILITY_PRIM_DELETED, sctp_move_chunks_from_net(), SCTP_NOTIFY_ASCONF_SET_PRIMARY, sctp_set_primary_addr(), SCTP_SO_NOT_LOCKED, sctp_timer_stop(), SCTP_TIMER_TYPE_PRIM_DELETED, sctp_ulp_notify(), SCTPDBG, SCTPDBG_ADDR, sctp_sockstore::sin, sctp_sockstore::sin6, sockaddr_in::sin_addr, sockaddr_in::sin_family, and sockaddr_in::sin_len.
Referenced by sctp_handle_asconf().
|
static |
Definition at line 2751 of file sctp_asconf.c.
References sctp_ipv4addr_param::addr, sctp_ipv6addr_param::addr, sctp_association::asconf_supported, sctp_tcb::asoc, sctp_paramhdr::param_length, sctp_paramhdr::param_type, sctp_ipv4addr_param::ph, sctp_association::primary_destination, sctp_tcb::rport, in_addr::s_addr, sctp_sockstore::sa, SCTP_ADDR_NOT_LOCKED, sctp_asconf_queue_sa_delete(), SCTP_DEBUG_ASCONF2, sctp_tcb::sctp_ep, sctp_find_ifa_by_addr(), SCTP_GET_STATE, SCTP_IPV4_ADDRESS, SCTP_IPV6_ADDRESS, sctp_is_feature_on, sctp_m_getptr(), SCTP_PCB_FLAGS_DO_ASCONF, SCTP_PRINTF, sctp_send_asconf(), SCTP_SIZE32, SCTP_STATE_OPEN, sctp_timer_start(), SCTP_TIMER_TYPE_ASCONF, SCTPDBG, sctp_sockstore::sin, sctp_sockstore::sin6, sockaddr_in::sin_addr, sockaddr_in::sin_family, sockaddr_in::sin_len, sockaddr_in::sin_port, and sctp_association::vrf_id.
Referenced by sctp_check_address_list().
int32_t sctp_set_primary_ip_address_sa | ( | struct sctp_tcb * | stcb, |
struct sockaddr * | sa | ||
) |
Definition at line 2288 of file sctp_asconf.c.
References sctp_tcb::asoc, sctp_ifa::ifa, SCTP_ADDR_NOT_LOCKED, sctp_asconf_queue_add(), SCTP_DEBUG_ASCONF1, sctp_find_ifa_by_addr(), SCTP_GET_STATE, sctp_send_asconf(), SCTP_SET_PRIM_ADDR, SCTP_STATE_OPEN, SCTP_STATE_SHUTDOWN_RECEIVED, sctp_timer_start(), SCTP_TIMER_TYPE_ASCONF, SCTPDBG, SCTPDBG_ADDR, sctp_ifa::vrf_id, and sctp_association::vrf_id.
Referenced by sctp_setopt().