Network socket handling. More...
#include <sys/socket.h>
#include <netinet/in.h>
Go to the source code of this file.
Data Structures | |
struct | ast_sockaddr |
Socket address structure. More... | |
Enumerations | |
enum | { AST_AF_UNSPEC = 0, AST_AF_INET = 2, AST_AF_INET6 = 10 } |
Functions | |
uint16_t | _ast_sockaddr_port (const struct ast_sockaddr *addr, const char *file, int line, const char *func) |
void | _ast_sockaddr_set_port (struct ast_sockaddr *addr, uint16_t port, const char *file, int line, const char *func) |
int | ast_accept (int sockfd, struct ast_sockaddr *addr) |
Wrapper around accept(2) that uses struct ast_sockaddr. More... | |
int | ast_bind (int sockfd, const struct ast_sockaddr *addr) |
Wrapper around bind(2) that uses struct ast_sockaddr. More... | |
int | ast_connect (int sockfd, const struct ast_sockaddr *addr) |
Wrapper around connect(2) that uses struct ast_sockaddr. More... | |
int | ast_getsockname (int sockfd, struct ast_sockaddr *addr) |
Wrapper around getsockname(2) that uses struct ast_sockaddr. More... | |
ssize_t | ast_recvfrom (int sockfd, void *buf, size_t len, int flags, struct ast_sockaddr *src_addr) |
Wrapper around recvfrom(2) that uses struct ast_sockaddr. More... | |
ssize_t | ast_sendto (int sockfd, const void *buf, size_t len, int flags, const struct ast_sockaddr *dest_addr) |
Wrapper around sendto(2) that uses ast_sockaddr. More... | |
int | ast_set_qos (int sockfd, int tos, int cos, const char *desc) |
Set type of service. More... | |
int | ast_sockaddr_cmp (const struct ast_sockaddr *a, const struct ast_sockaddr *b) |
Compares two ast_sockaddr structures. More... | |
int | ast_sockaddr_cmp_addr (const struct ast_sockaddr *a, const struct ast_sockaddr *b) |
Compares the addresses of two ast_sockaddr structures. More... | |
static void | ast_sockaddr_copy (struct ast_sockaddr *dst, const struct ast_sockaddr *src) |
Copies the data from one ast_sockaddr to another. More... | |
int | ast_sockaddr_hash (const struct ast_sockaddr *addr) |
Computes a hash value from the address. The port is ignored. More... | |
uint32_t | ast_sockaddr_ipv4 (const struct ast_sockaddr *addr) |
Get an IPv4 address of an ast_sockaddr. More... | |
int | ast_sockaddr_ipv4_mapped (const struct ast_sockaddr *addr, struct ast_sockaddr *ast_mapped) |
Convert an IPv4-mapped IPv6 address into an IPv4 address. More... | |
int | ast_sockaddr_is_any (const struct ast_sockaddr *addr) |
Determine if the address type is unspecified, or "any" address. More... | |
int | ast_sockaddr_is_ipv4 (const struct ast_sockaddr *addr) |
Determine if the address is an IPv4 address. More... | |
int | ast_sockaddr_is_ipv4_mapped (const struct ast_sockaddr *addr) |
Determine if this is an IPv4-mapped IPv6 address. More... | |
int | ast_sockaddr_is_ipv6 (const struct ast_sockaddr *addr) |
Determine if this is an IPv6 address. More... | |
int | ast_sockaddr_is_ipv6_link_local (const struct ast_sockaddr *addr) |
Determine if this is a link-local IPv6 address. More... | |
static int | ast_sockaddr_isnull (const struct ast_sockaddr *addr) |
Checks if the ast_sockaddr is null. "null" in this sense essentially means uninitialized, or having a 0 length. More... | |
int | ast_sockaddr_parse (struct ast_sockaddr *addr, const char *str, int flags) |
Parse an IPv4 or IPv6 address string. More... | |
int | ast_sockaddr_resolve (struct ast_sockaddr **addrs, const char *str, int flags, int family) |
Parses a string with an IPv4 or IPv6 address and place results into an array. More... | |
static void | ast_sockaddr_setnull (struct ast_sockaddr *addr) |
Sets address addr to null. More... | |
int | ast_sockaddr_split_hostport (char *str, char **host, char **port, int flags) |
Splits a string into its host and port components. More... | |
static char * | ast_sockaddr_stringify (const struct ast_sockaddr *addr) |
Wrapper around ast_sockaddr_stringify_fmt() with default format. More... | |
static char * | ast_sockaddr_stringify_addr (const struct ast_sockaddr *addr) |
Wrapper around ast_sockaddr_stringify_fmt() to return an address only. More... | |
static char * | ast_sockaddr_stringify_addr_remote (const struct ast_sockaddr *addr) |
Wrapper around ast_sockaddr_stringify_fmt() to return an address only. More... | |
char * | ast_sockaddr_stringify_fmt (const struct ast_sockaddr *addr, int format) |
Convert a socket address to a string. More... | |
static char * | ast_sockaddr_stringify_host (const struct ast_sockaddr *addr) |
Wrapper around ast_sockaddr_stringify_fmt() to return an address only, suitable for a URL (with brackets for IPv6). More... | |
static char * | ast_sockaddr_stringify_host_remote (const struct ast_sockaddr *addr) |
Wrapper around ast_sockaddr_stringify_fmt() to return an address only, suitable for a URL (with brackets for IPv6). More... | |
static char * | ast_sockaddr_stringify_port (const struct ast_sockaddr *addr) |
Wrapper around ast_sockaddr_stringify_fmt() to return a port only. More... | |
static char * | ast_sockaddr_stringify_remote (const struct ast_sockaddr *addr) |
Wrapper around ast_sockaddr_stringify_fmt() with default format. More... | |
#define | ast_sockaddr_to_sin(addr, sin) _ast_sockaddr_to_sin(addr,sin, __FILE__, __LINE__, __PRETTY_FUNCTION__) |
Converts a struct ast_sockaddr to a struct sockaddr_in. More... | |
#define | ast_sockaddr_from_sin(addr, sin) _ast_sockaddr_from_sin(addr,sin, __FILE__, __LINE__, __PRETTY_FUNCTION__) |
Converts a struct sockaddr_in to a struct ast_sockaddr. More... | |
int | _ast_sockaddr_to_sin (const struct ast_sockaddr *addr, struct sockaddr_in *sin, const char *file, int line, const char *func) |
void | _ast_sockaddr_from_sin (struct ast_sockaddr *addr, const struct sockaddr_in *sin, const char *file, int line, const char *func) |
Network socket handling.
Definition in file netsock2.h.
#define ast_sockaddr_from_sin | ( | addr, | |
sin | |||
) | _ast_sockaddr_from_sin(addr,sin, __FILE__, __LINE__, __PRETTY_FUNCTION__) |
Converts a struct sockaddr_in to a struct ast_sockaddr.
sin | The sockaddr_in to convert |
Definition at line 642 of file netsock2.h.
Referenced by __ast_http_load(), __init_manager(), __oh323_rtp_create(), app_exec(), apply_netmask(), ast_rtp_read(), ast_rtp_stun_request(), ast_sockaddr_ipv4_mapped(), auth_http_callback(), auth_manager_http_callback(), auth_mxml_http_callback(), auth_rawman_http_callback(), authenticate(), build_gateway(), check_access(), find_subchannel_and_lock(), gtalk_alloc(), gtalk_get_local_ip(), gtalk_update_externip(), gtalk_update_stun(), handle_open_receive_channel_ack_message(), jingle_alloc(), jingle_create_candidates(), jingle_update_stun(), load_module(), manager_http_callback(), mxml_http_callback(), parse_cidr_mask(), process_sdp(), rawman_http_callback(), register_verify(), setup_rtp_connection(), skinny_register(), start_rtp(), and update_registry().
#define ast_sockaddr_port | ( | addr | ) | _ast_sockaddr_port(addr, __FILE__, __LINE__, __PRETTY_FUNCTION__) |
Get the port number of a socket address.
0 | Address is null |
non-zero | The port number of the ast_sockaddr |
Definition at line 406 of file netsock2.h.
Referenced by __iax2_show_peers(), __set_address_from_contact(), __sip_subscribe_mwi_do(), _sip_show_peer(), _sip_show_peers_one(), add_sdp(), ast_find_ourip(), ast_ouraddrfor(), ast_rtp_prop_set(), ast_rtp_read(), ast_rtp_remote_address_set(), ast_sip_ouraddrfor(), build_peer(), check_via(), copy_via_headers(), create_addr(), dnsmgr_refresh(), function_sippeer(), get_our_media_address(), initreqprep(), manager_iax2_show_peer_list(), multicast_send_control_packet(), on_dns_update_peer(), on_dns_update_registry(), parse_register_contact(), peer_ipcmp_cb(), peers_data_provider_get(), realtime_update_peer(), reload_config(), set_destination(), sip_debug_test_addr(), sipsock_read(), transmit_notify_with_mwi(), transmit_register(), and udptl_debug_test_addr().
#define ast_sockaddr_set_port | ( | addr, | |
port | |||
) | _ast_sockaddr_set_port(addr,port,__FILE__,__LINE__,__PRETTY_FUNCTION__) |
Sets the port number of a socket address.
addr | Address on which to set the port |
port | The port you wish to set the address to use |
void |
Definition at line 422 of file netsock2.h.
Referenced by __ast_http_load(), __set_address_from_contact(), __sip_subscribe_mwi_do(), add_sdp(), ast_find_ourip(), ast_get_ip_or_srv(), ast_ouraddrfor(), ast_rtp_new(), ast_rtp_prop_set(), ast_rtp_read(), ast_rtp_remote_address_set(), ast_sip_ouraddrfor(), ast_udptl_new_with_bindaddr(), build_peer(), check_via(), check_via_response(), create_addr(), dnsmgr_refresh(), get_our_media_address(), iax2_append_register(), on_dns_update_peer(), on_dns_update_registry(), parse_register_contact(), process_sdp(), process_via(), proxy_update(), realtime_peer(), reload_config(), set_destination(), stun_monitor_request(), and transmit_register().
#define AST_SOCKADDR_STR_ADDR (1 << 0) |
Definition at line 152 of file netsock2.h.
Referenced by ast_sockaddr_stringify_addr(), and ast_sockaddr_stringify_fmt().
#define AST_SOCKADDR_STR_ADDR_REMOTE (AST_SOCKADDR_STR_ADDR | AST_SOCKADDR_STR_REMOTE) |
Definition at line 158 of file netsock2.h.
Referenced by ast_sockaddr_stringify_addr_remote().
#define AST_SOCKADDR_STR_BRACKETS (1 << 2) |
Definition at line 154 of file netsock2.h.
#define AST_SOCKADDR_STR_DEFAULT (AST_SOCKADDR_STR_ADDR | AST_SOCKADDR_STR_PORT) |
Definition at line 157 of file netsock2.h.
Referenced by ast_sockaddr_stringify(), and ast_sockaddr_stringify_fmt().
#define AST_SOCKADDR_STR_DEFAULT_REMOTE (AST_SOCKADDR_STR_DEFAULT | AST_SOCKADDR_STR_REMOTE) |
Definition at line 160 of file netsock2.h.
Referenced by ast_sockaddr_stringify_remote().
#define AST_SOCKADDR_STR_FORMAT_MASK (AST_SOCKADDR_STR_ADDR | AST_SOCKADDR_STR_PORT | AST_SOCKADDR_STR_BRACKETS) |
Definition at line 161 of file netsock2.h.
Referenced by ast_sockaddr_stringify_fmt().
#define AST_SOCKADDR_STR_HOST (AST_SOCKADDR_STR_ADDR | AST_SOCKADDR_STR_BRACKETS) |
Definition at line 156 of file netsock2.h.
Referenced by ast_sockaddr_stringify_fmt(), and ast_sockaddr_stringify_host().
#define AST_SOCKADDR_STR_HOST_REMOTE (AST_SOCKADDR_STR_HOST | AST_SOCKADDR_STR_REMOTE) |
Definition at line 159 of file netsock2.h.
Referenced by ast_sockaddr_stringify_host_remote().
#define AST_SOCKADDR_STR_PORT (1 << 1) |
Definition at line 153 of file netsock2.h.
Referenced by ast_sockaddr_stringify_fmt(), and ast_sockaddr_stringify_port().
#define AST_SOCKADDR_STR_REMOTE (1 << 3) |
Definition at line 155 of file netsock2.h.
Referenced by ast_sockaddr_stringify_fmt().
#define ast_sockaddr_to_sin | ( | addr, | |
sin | |||
) | _ast_sockaddr_to_sin(addr,sin, __FILE__, __LINE__, __PRETTY_FUNCTION__) |
Converts a struct ast_sockaddr to a struct sockaddr_in.
These are backward compatibility functions that may be used by subsystems that have not yet been converted to IPv6. They will be removed when all subsystems are IPv6-ready.
addr | The ast_sockaddr to convert | |
[out] | sin | The resulting sockaddr_in struct |
nonzero | Success |
zero | Failure |
Definition at line 629 of file netsock2.h.
Referenced by __ast_http_load(), __iax2_show_peers(), __init_manager(), add_sdp(), addr_range_hash_cb(), addr_range_match_address_cb(), ast_rtp_read(), ast_rtp_stun_request(), auth_manager_http_callback(), auth_mxml_http_callback(), auth_rawman_http_callback(), authenticate_reply(), build_gateway(), build_peer(), build_user(), config_parse_variables(), create_addr(), external_rtp_create(), find_subchannel_and_lock(), gtalk_create_candidates(), gtalk_update_stun(), handle_cli_iax2_set_debug(), handle_cli_iax2_show_peer(), handle_open_receive_channel_ack_message(), handle_show_http(), iax2_ack_registry(), iax2_do_register(), iax2_getpeername(), iax2_getpeertrunk(), iax2_poke_peer(), jingle_create_candidates(), manager_http_callback(), mansession_encode_sin_local(), mxml_http_callback(), oh323_set_rtp_peer(), peer_set_srcaddr(), peercnt_modify(), rawman_http_callback(), registry_rerequest(), session_do(), skinny_set_rtp_peer(), start_rtp(), transmit_modify_with_sdp(), unistim_set_rtp_peer(), and update_registry().
anonymous enum |
Values for address families that we support. This is reproduced from socket.h because we do not want users to include that file. Only netsock2.c should ever include socket.h.
Enumerator | |
---|---|
AST_AF_UNSPEC | |
AST_AF_INET | |
AST_AF_INET6 |
Definition at line 39 of file netsock2.h.
void _ast_sockaddr_from_sin | ( | struct ast_sockaddr * | addr, |
const struct sockaddr_in * | sin, | ||
const char * | file, | ||
int | line, | ||
const char * | func | ||
) |
Definition at line 561 of file netsock2.c.
References __LOG_DEBUG, ast_log(), ast_sockaddr::len, option_debug, and ast_sockaddr::ss.
uint16_t _ast_sockaddr_port | ( | const struct ast_sockaddr * | addr, |
const char * | file, | ||
int | line, | ||
const char * | func | ||
) |
Definition at line 365 of file netsock2.c.
References __LOG_DEBUG, ast_log(), ast_sockaddr::len, option_debug, and ast_sockaddr::ss.
void _ast_sockaddr_set_port | ( | struct ast_sockaddr * | addr, |
uint16_t | port, | ||
const char * | file, | ||
int | line, | ||
const char * | func | ||
) |
Definition at line 380 of file netsock2.c.
References __LOG_DEBUG, ast_log(), ast_sockaddr::len, option_debug, and ast_sockaddr::ss.
int _ast_sockaddr_to_sin | ( | const struct ast_sockaddr * | addr, |
struct sockaddr_in * | sin, | ||
const char * | file, | ||
int | line, | ||
const char * | func | ||
) |
Definition at line 540 of file netsock2.c.
References __LOG_DEBUG, __LOG_ERROR, ast_log(), ast_sockaddr_isnull(), ast_sockaddr::len, option_debug, and ast_sockaddr::ss.
int ast_accept | ( | int | sockfd, |
struct ast_sockaddr * | addr | ||
) |
Wrapper around accept(2) that uses struct ast_sockaddr.
For parameter and return information, see the man page for accept(2).
Definition at line 456 of file netsock2.c.
References ast_sockaddr::len, and ast_sockaddr::ss.
Referenced by ast_tcptls_server_root().
int ast_bind | ( | int | sockfd, |
const struct ast_sockaddr * | addr | ||
) |
Wrapper around bind(2) that uses struct ast_sockaddr.
For parameter and return information, see the man page for bind(2).
Definition at line 462 of file netsock2.c.
References ast_sockaddr::len, and ast_sockaddr::ss.
Referenced by ast_rtp_new(), ast_rtp_prop_set(), ast_tcptls_client_create(), ast_tcptls_server_start(), ast_udptl_new_with_bindaddr(), and reload_config().
int ast_connect | ( | int | sockfd, |
const struct ast_sockaddr * | addr | ||
) |
Wrapper around connect(2) that uses struct ast_sockaddr.
For parameter and return information, see the man page for connect(2).
Definition at line 467 of file netsock2.c.
References ast_sockaddr::len, and ast_sockaddr::ss.
Referenced by ast_ouraddrfor(), ast_tcptls_client_start(), gtalk_update_externip(), and stun_monitor_request().
int ast_getsockname | ( | int | sockfd, |
struct ast_sockaddr * | addr | ||
) |
Wrapper around getsockname(2) that uses struct ast_sockaddr.
For parameter and return information, see the man page for getsockname(2).
Definition at line 472 of file netsock2.c.
References ast_sockaddr::len, and ast_sockaddr::ss.
Referenced by ast_ouraddrfor(), and ast_set_qos().
ssize_t ast_recvfrom | ( | int | sockfd, |
void * | buf, | ||
size_t | len, | ||
int | flags, | ||
struct ast_sockaddr * | src_addr | ||
) |
Wrapper around recvfrom(2) that uses struct ast_sockaddr.
For parameter and return information, see the man page for recvfrom(2).
Definition at line 478 of file netsock2.c.
References ast_sockaddr::len, and ast_sockaddr::ss.
Referenced by __rtp_recvfrom(), ast_udptl_read(), and sipsock_read().
ssize_t ast_sendto | ( | int | sockfd, |
const void * | buf, | ||
size_t | len, | ||
int | flags, | ||
const struct ast_sockaddr * | dest_addr | ||
) |
Wrapper around sendto(2) that uses ast_sockaddr.
For parameter and return information, see the man page for sendto(2)
Definition at line 486 of file netsock2.c.
References ast_sockaddr::len, and ast_sockaddr::ss.
Referenced by __rtp_sendto(), __sip_xmit(), ast_udptl_write(), multicast_rtp_write(), and multicast_send_control_packet().
int ast_set_qos | ( | int | sockfd, |
int | tos, | ||
int | cos, | ||
const char * | desc | ||
) |
Set type of service.
Set ToS ("Type of Service for IPv4 and "Traffic Class for IPv6) and CoS (Linux's SO_PRIORITY)
sockfd | File descriptor for socket on which to set the parameters |
tos | The type of service for the socket |
cos | The cost of service for the socket |
desc | A text description of the socket in question. |
0 | Success |
-1 | Error, with errno set to an appropriate value |
Definition at line 493 of file netsock2.c.
References ast_getsockname(), ast_log(), ast_sockaddr_is_any(), ast_sockaddr_is_ipv6(), ast_verb, errno, and LOG_WARNING.
Referenced by ast_rtp_qos_set(), and reload_config().
int ast_sockaddr_cmp | ( | const struct ast_sockaddr * | a, |
const struct ast_sockaddr * | b | ||
) |
Compares two ast_sockaddr structures.
-1 | a is lexicographically smaller than b |
0 | a is equal to b |
1 | b is lexicographically smaller than a |
Definition at line 300 of file netsock2.c.
References ast_sockaddr_ipv4_mapped(), ast_sockaddr::len, and ast_sockaddr::ss.
Referenced by add_sdp(), ast_rtcp_read(), ast_rtp_instance_get_and_cmp_local_address(), ast_rtp_instance_get_and_cmp_remote_address(), ast_rtp_read(), ast_tcptls_client_create(), ast_tcptls_server_start(), ast_udptl_bridge(), ast_udptl_read(), dnsmgr_refresh(), parse_register_contact(), realtime_peer_by_name(), reload_config(), remote_bridge_loop(), rtcp_debug_test_addr(), rtp_debug_test_addr(), sip_debug_test_addr(), sip_uri_domain_cmp(), threadinfo_locate_cb(), transmit_register(), udptl_debug_test_addr(), and update_registry().
int ast_sockaddr_cmp_addr | ( | const struct ast_sockaddr * | a, |
const struct ast_sockaddr * | b | ||
) |
Compares the addresses of two ast_sockaddr structures.
-1 | a is lexicographically smaller than b |
0 | a is equal to b |
1 | b is lexicographically smaller than a |
Definition at line 325 of file netsock2.c.
References ast_sockaddr_ipv4_mapped(), ast_sockaddr::len, and ast_sockaddr::ss.
Referenced by addr_range_cmp_cb(), ast_apply_ha(), get_our_media_address(), peer_ipcmp_cb(), rtcp_debug_test_addr(), rtp_debug_test_addr(), sip_debug_test_addr(), and udptl_debug_test_addr().
|
inlinestatic |
Copies the data from one ast_sockaddr to another.
dst | The destination ast_sockaddr |
src | The source ast_sockaddr |
void |
Definition at line 121 of file netsock2.h.
References ast_sockaddr::len.
Referenced by add_sdp(), ast_copy_ha(), ast_find_ourip(), ast_rtcp_read(), ast_rtp_alt_remote_address_set(), ast_rtp_instance_get_and_cmp_local_address(), ast_rtp_instance_get_and_cmp_remote_address(), ast_rtp_instance_get_local_address(), ast_rtp_instance_get_remote_address(), ast_rtp_instance_new(), ast_rtp_instance_set_alt_remote_address(), ast_rtp_instance_set_local_address(), ast_rtp_instance_set_remote_address(), ast_rtp_read(), ast_rtp_remote_address_set(), ast_sip_ouraddrfor(), ast_sockaddr_resolve_first_af(), ast_tcptls_client_create(), ast_tcptls_server_root(), ast_tcptls_server_start(), ast_udptl_bridge(), ast_udptl_get_peer(), ast_udptl_get_us(), ast_udptl_new_with_bindaddr(), ast_udptl_read(), ast_udptl_set_peer(), create_addr(), dialog_initialize_rtp(), dnsmgr_refresh(), find_peer(), get_our_media_address(), gtalk_get_local_ip(), handle_cli_udptl_set_debug(), handle_request_do(), on_dns_update_mwi(), on_dns_update_peer(), on_dns_update_registry(), parse_register_contact(), reg_source_db(), reload_config(), remote_bridge_loop(), resolve_first(), sip_alloc(), sip_do_debug_peer(), sip_prepare_socket(), and transmit_response_using_temp().
int ast_sockaddr_hash | ( | const struct ast_sockaddr * | addr | ) |
Computes a hash value from the address. The port is ignored.
0 | Unknown address family |
other | A 32-bit hash derived from the address |
Definition at line 438 of file netsock2.c.
References ast_log(), LOG_ERROR, and ast_sockaddr::ss.
Referenced by peer_iphash_cb(), and threadt_hash_cb().
uint32_t ast_sockaddr_ipv4 | ( | const struct ast_sockaddr * | addr | ) |
Get an IPv4 address of an ast_sockaddr.
Definition at line 394 of file netsock2.c.
References ast_sockaddr::ss.
Referenced by addr_is_multicast(), iax2_devicestate(), iax2_do_register(), iax2_poke_peer(), jingle_create_candidates(), load_module(), and multicast_send_control_packet().
int ast_sockaddr_ipv4_mapped | ( | const struct ast_sockaddr * | addr, |
struct ast_sockaddr * | ast_mapped | ||
) |
Convert an IPv4-mapped IPv6 address into an IPv4 address.
addr | The IPv4-mapped address to convert |
mapped_addr | The resulting IPv4 address |
0 | Unable to make the conversion |
1 | Successful conversion |
Definition at line 39 of file netsock2.c.
References ast_sockaddr_from_sin, ast_sockaddr_is_ipv4_mapped(), ast_sockaddr_is_ipv6(), and ast_sockaddr::ss.
Referenced by ast_append_ha(), ast_apply_ha(), ast_rtp_read(), ast_sockaddr_cmp(), ast_sockaddr_cmp_addr(), and ast_sockaddr_stringify_fmt().
int ast_sockaddr_is_any | ( | const struct ast_sockaddr * | addr | ) |
Determine if the address type is unspecified, or "any" address.
For IPv4, this would be the address 0.0.0.0, and for IPv6, this would be the address ::. The port number is ignored.
1 | This is an "any" address |
0 | This is not an "any" address |
Definition at line 424 of file netsock2.c.
References ast_sockaddr_is_ipv4(), ast_sockaddr_is_ipv6(), and ast_sockaddr::ss.
Referenced by ast_find_ourip(), ast_set_qos(), ast_sip_ouraddrfor(), get_address_family_filter(), get_our_media_address(), gtalk_get_local_ip(), reload_config(), sip_show_settings(), and sockaddr_is_null_or_any().
int ast_sockaddr_is_ipv4 | ( | const struct ast_sockaddr * | addr | ) |
Determine if the address is an IPv4 address.
1 | This is an IPv4 address |
0 | This is an IPv6 or IPv4-mapped IPv6 address |
Definition at line 400 of file netsock2.c.
References ast_sockaddr::len, and ast_sockaddr::ss.
Referenced by apply_netmask(), ast_append_ha(), ast_apply_ha(), ast_rtp_new(), ast_rtp_prop_set(), ast_rtp_read(), and ast_sockaddr_is_any().
int ast_sockaddr_is_ipv4_mapped | ( | const struct ast_sockaddr * | addr | ) |
Determine if this is an IPv4-mapped IPv6 address.
1 | This is an IPv4-mapped IPv6 address. |
0 | This is not an IPv4-mapped IPv6 address. |
Definition at line 406 of file netsock2.c.
References ast_sockaddr::len, and ast_sockaddr::ss.
Referenced by add_sdp(), ast_apply_ha(), ast_rtp_instance_bridge(), and ast_sockaddr_ipv4_mapped().
int ast_sockaddr_is_ipv6 | ( | const struct ast_sockaddr * | addr | ) |
Determine if this is an IPv6 address.
1 | This is an IPv6 or IPv4-mapped IPv6 address. |
0 | This is an IPv4 address. |
Definition at line 418 of file netsock2.c.
References ast_sockaddr::len, and ast_sockaddr::ss.
Referenced by add_sdp(), apply_netmask(), ast_apply_ha(), ast_ouraddrfor(), ast_rtp_new(), ast_rtp_prop_set(), ast_set_qos(), ast_sip_ouraddrfor(), ast_sockaddr_ipv4_mapped(), ast_sockaddr_is_any(), ast_sockaddr_is_ipv6_link_local(), ast_tcptls_client_create(), ast_tcptls_server_start(), ast_udptl_new_with_bindaddr(), get_address_family_filter(), multicast_send_control_packet(), reload_config(), and sip_show_settings().
int ast_sockaddr_is_ipv6_link_local | ( | const struct ast_sockaddr * | addr | ) |
Determine if this is a link-local IPv6 address.
1 | This is a link-local IPv6 address. |
0 | This is link-local IPv6 address. |
Definition at line 412 of file netsock2.c.
References ast_sockaddr_is_ipv6(), and ast_sockaddr::ss.
Referenced by ast_sockaddr_stringify_fmt().
|
inlinestatic |
Checks if the ast_sockaddr is null. "null" in this sense essentially means uninitialized, or having a 0 length.
addr | Pointer to the ast_sockaddr we wish to check |
1 | addr is null |
0 | addr is non-null. |
Definition at line 93 of file netsock2.h.
References ast_sockaddr::len.
Referenced by _ast_sockaddr_to_sin(), _sip_show_peers_one(), add_sdp(), ast_rtcp_write_rr(), ast_rtcp_write_sr(), ast_rtp_dtmf_begin(), ast_rtp_dtmf_continuation(), ast_rtp_dtmf_end_with_duration(), ast_rtp_raw_write(), ast_rtp_read(), ast_rtp_remote_address_set(), ast_rtp_sendcng(), ast_rtp_write(), ast_sip_ouraddrfor(), ast_sockaddr_stringify_fmt(), ast_tcptls_client_create(), ast_tcptls_server_start(), ast_udptl_read(), ast_udptl_write(), bridge_p2p_rtp_write(), build_peer(), check_rtp_timeout(), create_addr_from_peer(), expire_register(), get_our_media_address(), handle_response_invite(), multicast_send_control_packet(), on_dns_update_mwi(), on_dns_update_peer(), on_dns_update_registry(), parse_register_contact(), peer_iphash_cb(), process_sdp(), realtime_peer(), realtime_update_peer(), register_verify(), reload_config(), remote_bridge_loop(), rtcp_debug_test_addr(), rtp_debug_test_addr(), sip_acf_channel_read(), sip_debug_test_addr(), sip_devicestate(), sip_do_debug_peer(), sip_poke_peer(), sip_prune_realtime(), sip_send_mwi_to_peer(), sip_set_rtp_peer(), sip_show_channel(), sip_show_settings(), sockaddr_is_null_or_any(), transmit_register(), and udptl_debug_test_addr().
int ast_sockaddr_parse | ( | struct ast_sockaddr * | addr, |
const char * | str, | ||
int | flags | ||
) |
Parse an IPv4 or IPv6 address string.
Parses a string containing an IPv4 or IPv6 address followed by an optional port (separated by a colon) into a struct ast_sockaddr. The allowed formats are the following:
a.b.c.d a.b.c.d:port a:b:c:...:d [a:b:c:...:d] Host names are NOT allowed.
[out] | addr | The resulting ast_sockaddr. This MAY be NULL from functions that are performing validity checks only, e.g. ast_parse_arg(). |
str | The string to parse | |
flags | If set to zero, a port MAY be present. If set to PARSE_PORT_IGNORE, a port MAY be present but will be ignored. If set to PARSE_PORT_REQUIRE, a port MUST be present. If set to PARSE_PORT_FORBID, a port MUST NOT be present. |
1 | Success |
0 | Failure |
Definition at line 198 of file netsock2.c.
References ast_log(), ast_sockaddr_split_hostport(), ast_strdupa, ast_sockaddr::len, LOG_ERROR, LOG_WARNING, S_OR, and ast_sockaddr::ss.
Referenced by ast_append_ha(), ast_parse_arg(), build_peer(), internal_dnsmgr_lookup(), multicast_rtp_request(), proxy_update(), realtime_peer(), reg_source_db(), reload_config(), rtcp_do_debug_ip(), rtp_do_debug_ip(), sip_sanitized_host(), and sip_uri_domain_cmp().
int ast_sockaddr_resolve | ( | struct ast_sockaddr ** | addrs, |
const char * | str, | ||
int | flags, | ||
int | family | ||
) |
Parses a string with an IPv4 or IPv6 address and place results into an array.
Parses a string containing a host name or an IPv4 or IPv6 address followed by an optional port (separated by a colon). The result is returned into a array of struct ast_sockaddr. Allowed formats for str are the following:
hostname:port host.example.com:port a.b.c.d a.b.c.d:port a:b:c:...:d [a:b:c:...:d]
[out] | addrs | The resulting array of ast_sockaddrs |
str | The string to parse | |
flags | If set to zero, a port MAY be present. If set to PARSE_PORT_IGNORE, a port MAY be present but will be ignored. If set to PARSE_PORT_REQUIRE, a port MUST be present. If set to PARSE_PORT_FORBID, a port MUST NOT be present. | |
family | Only addresses of the given family will be returned. Use 0 or AST_SOCKADDR_UNSPEC to get addresses of all families. |
0 | Failure |
non-zero | The number of elements in addrs array. |
Definition at line 248 of file netsock2.c.
References ast_log(), ast_malloc, ast_sockaddr_split_hostport(), ast_strdupa, cleanup(), LOG_ERROR, and S_OR.
Referenced by ast_sockaddr_resolve_first_af(), gtalk_get_local_ip(), handle_cli_udptl_set_debug(), realtime_peer_by_name(), and resolve_first().
|
inlinestatic |
Sets address addr to null.
void |
Definition at line 106 of file netsock2.h.
References ast_sockaddr::len.
Referenced by __ast_http_load(), ast_rtp_stop(), ast_tcptls_client_create(), ast_tcptls_server_start(), ast_udptl_stop(), build_peer(), get_local_address(), manager_set_defaults(), multicast_rtp_request(), reload_config(), and set_peer_defaults().
int ast_sockaddr_split_hostport | ( | char * | str, |
char ** | host, | ||
char ** | port, | ||
int | flags | ||
) |
Splits a string into its host and port components.
str[in] | The string to parse. May be modified by writing a NUL at the end of the host part. |
host[out] | Pointer to the host component within str. |
port[out] | Pointer to the port component within str. |
flags | If set to zero, a port MAY be present. If set to PARSE_PORT_IGNORE, a port MAY be present but will be ignored. If set to PARSE_PORT_REQUIRE, a port MUST be present. If set to PARSE_PORT_FORBID, a port MUST NOT be present. |
1 | Success |
0 | Failure |
Definition at line 132 of file netsock2.c.
References ast_debug, ast_log(), LOG_WARNING, PARSE_PORT_FORBID, PARSE_PORT_IGNORE, PARSE_PORT_MASK, PARSE_PORT_REQUIRE, and str.
Referenced by ast_sockaddr_parse(), ast_sockaddr_resolve(), extract_host_from_hostport(), rtcp_do_debug_ip(), rtp_do_debug_ip(), setup_stunaddr(), and sip_parse_host().
|
inlinestatic |
Wrapper around ast_sockaddr_stringify_fmt() with default format.
Definition at line 210 of file netsock2.h.
References AST_SOCKADDR_STR_DEFAULT, and ast_sockaddr_stringify_fmt().
Referenced by __sip_xmit(), _sip_show_peer(), add_sdp(), apply_directmedia_ha(), ast_append_ha(), ast_apply_ha(), ast_parse_arg(), ast_rtcp_read(), ast_rtcp_write_rr(), ast_rtcp_write_sr(), ast_rtp_dtmf_begin(), ast_rtp_dtmf_continuation(), ast_rtp_dtmf_end_with_duration(), ast_rtp_raw_write(), ast_rtp_read(), ast_rtp_sendcng(), ast_sip_ouraddrfor(), ast_tcptls_client_create(), ast_tcptls_client_start(), ast_tcptls_server_start(), ast_udptl_bridge(), ast_udptl_read(), ast_udptl_write(), bridge_p2p_rtp_write(), check_peer_ok(), check_via(), create_dtmf_frame(), dnsmgr_refresh(), gtalk_update_externip(), handle_cli_iax2_show_registry(), handle_cli_udptl_set_debug(), handle_incoming(), handle_manager_show_settings(), handle_request_bye(), handle_request_do(), handle_request_invite(), handle_request_register(), handle_request_subscribe(), handle_response(), handle_response_info(), handle_response_message(), handle_response_notify(), handle_response_refer(), manager_iax2_show_registry(), multicast_rtp_write(), on_dns_update_mwi(), on_dns_update_peer(), on_dns_update_registry(), parse_register_contact(), process_cn_rfc3389(), process_dtmf_rfc2833(), process_sdp(), reg_source_db(), register_verify(), reload_config(), remote_bridge_loop(), retrans_pkt(), rtcp_do_debug_ip(), rtp_do_debug_ip(), send_request(), send_response(), set_destination(), sip_acf_channel_read(), sip_set_rtp_peer(), sip_set_udptl_peer(), sip_show_channel(), sip_show_settings(), sip_show_tcp(), sip_tcptls_read(), and stun_monitor_request().
|
inlinestatic |
Wrapper around ast_sockaddr_stringify_fmt() to return an address only.
Definition at line 240 of file netsock2.h.
References AST_SOCKADDR_STR_ADDR, and ast_sockaddr_stringify_fmt().
Referenced by __iax2_show_peers(), _sip_show_peer(), _sip_show_peers_one(), add_sdp(), ast_ouraddrfor(), build_peer(), function_iaxpeer(), function_sipchaninfo_read(), function_sippeer(), gtalk_create_candidates(), httpstatus_callback(), manager_iax2_show_peer_list(), parse_register_contact(), realtime_peer(), realtime_update_peer(), register_verify(), reload_config(), show_channels_cb(), show_chanstats_cb(), sip_acf_channel_read(), sip_do_debug_ip(), sip_do_debug_peer(), sip_show_channel(), and sip_show_settings().
|
inlinestatic |
Wrapper around ast_sockaddr_stringify_fmt() to return an address only.
Definition at line 257 of file netsock2.h.
References AST_SOCKADDR_STR_ADDR_REMOTE, and ast_sockaddr_stringify_fmt().
Referenced by add_sdp(), and copy_via_headers().
char* ast_sockaddr_stringify_fmt | ( | const struct ast_sockaddr * | addr, |
int | format | ||
) |
Convert a socket address to a string.
This will be of the form a.b.c.d:xyz for IPv4 and [a:b:c:...:d]:xyz for IPv6.
This function is thread-safe. The returned string is on static thread-specific storage.
addr | The input to be stringified |
format | one of the following: AST_SOCKADDR_STR_DEFAULT: a.b.c.d:xyz for IPv4 [a:b:c:...:d]:xyz for IPv6. AST_SOCKADDR_STR_ADDR: address only a.b.c.d for IPv4 a:b:c:...:d for IPv6. AST_SOCKADDR_STR_HOST: address only, suitable for a URL a.b.c.d for IPv4 [a:b:c:...:d] for IPv6. AST_SOCKADDR_STR_PORT: port only |
(null) | addr is null |
"" | An error occurred during processing |
string | The stringified form of the address |
Definition at line 67 of file netsock2.c.
References ast_log(), ast_sockaddr_ipv4_mapped(), ast_sockaddr_is_ipv6_link_local(), ast_sockaddr_isnull(), AST_SOCKADDR_STR_ADDR, AST_SOCKADDR_STR_DEFAULT, AST_SOCKADDR_STR_FORMAT_MASK, AST_SOCKADDR_STR_HOST, AST_SOCKADDR_STR_PORT, AST_SOCKADDR_STR_REMOTE, ast_sockaddr_stringify_buf, ast_str_buffer(), ast_str_set(), ast_str_thread_get(), ast_sockaddr::len, LOG_ERROR, ast_sockaddr::ss, and str.
Referenced by ast_sockaddr_stringify(), ast_sockaddr_stringify_addr(), ast_sockaddr_stringify_addr_remote(), ast_sockaddr_stringify_host(), ast_sockaddr_stringify_host_remote(), ast_sockaddr_stringify_port(), and ast_sockaddr_stringify_remote().
|
inlinestatic |
Wrapper around ast_sockaddr_stringify_fmt() to return an address only, suitable for a URL (with brackets for IPv6).
Definition at line 271 of file netsock2.h.
References AST_SOCKADDR_STR_HOST, and ast_sockaddr_stringify_fmt().
Referenced by peers_data_provider_get(), and reg_source_db().
|
inlinestatic |
Wrapper around ast_sockaddr_stringify_fmt() to return an address only, suitable for a URL (with brackets for IPv6).
Definition at line 289 of file netsock2.h.
References AST_SOCKADDR_STR_HOST_REMOTE, and ast_sockaddr_stringify_fmt().
Referenced by add_diversion_header(), add_rpid(), build_callid_registry(), build_reply_digest(), create_addr_from_peer(), initreqprep(), sip_poke_peer(), sip_sanitized_host(), and transmit_notify_with_mwi().
|
inlinestatic |
Wrapper around ast_sockaddr_stringify_fmt() to return a port only.
Definition at line 302 of file netsock2.h.
References AST_SOCKADDR_STR_PORT, and ast_sockaddr_stringify_fmt().
Referenced by _sip_show_peers_one(), add_sdp(), httpstatus_callback(), realtime_peer_by_addr(), realtime_update_peer(), and register_verify().
|
inlinestatic |
Wrapper around ast_sockaddr_stringify_fmt() with default format.
Definition at line 227 of file netsock2.h.
References AST_SOCKADDR_STR_DEFAULT_REMOTE, and ast_sockaddr_stringify_fmt().
Referenced by build_callid_pvt(), build_contact(), build_via(), and generate_uri().