Ruby  2.0.0p648(2015-12-16revision53162)
Data Structures | Macros | Functions | Variables
raddrinfo.c File Reference
#include "rubysocket.h"
Include dependency graph for raddrinfo.c:

Go to the source code of this file.

Data Structures

struct  getaddrinfo_arg
 
struct  getnameinfo_arg
 
struct  hostent_arg
 
struct  rb_addrinfo_t
 

Macros

#define addrinfo_free   RUBY_TYPED_DEFAULT_FREE
 
#define IS_ADDRINFO(obj)   rb_typeddata_is_kind_of((obj), &addrinfo_type)
 

Functions

static int str_is_number (const char *)
 
static void * nogvl_getaddrinfo (void *arg)
 
int rb_getaddrinfo (const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res)
 
static void * nogvl_getnameinfo (void *arg)
 
int rb_getnameinfo (const struct sockaddr *sa, socklen_t salen, char *host, size_t hostlen, char *serv, size_t servlen, int flags)
 
static void make_ipaddr0 (struct sockaddr *addr, socklen_t addrlen, char *buf, size_t buflen)
 
VALUE rsock_make_ipaddr (struct sockaddr *addr, socklen_t addrlen)
 
static void make_inetaddr (unsigned int host, char *buf, size_t buflen)
 
static char * host_str (VALUE host, char *hbuf, size_t hbuflen, int *flags_ptr)
 
static char * port_str (VALUE port, char *pbuf, size_t pbuflen, int *flags_ptr)
 
struct addrinforsock_getaddrinfo (VALUE host, VALUE port, struct addrinfo *hints, int socktype_hack)
 
struct addrinforsock_addrinfo (VALUE host, VALUE port, int socktype, int flags)
 
VALUE rsock_ipaddr (struct sockaddr *sockaddr, socklen_t sockaddrlen, int norevlookup)
 
static VALUE make_hostent_internal (struct hostent_arg *arg)
 
VALUE rsock_freeaddrinfo (struct addrinfo *addr)
 
VALUE rsock_make_hostent (VALUE host, struct addrinfo *addr, VALUE(*ipaddr)(struct sockaddr *, size_t))
 
static void addrinfo_mark (void *ptr)
 
static size_t addrinfo_memsize (const void *ptr)
 
static VALUE addrinfo_s_allocate (VALUE klass)
 
static rb_addrinfo_tcheck_addrinfo (VALUE self)
 
static rb_addrinfo_tget_addrinfo (VALUE self)
 
static rb_addrinfo_talloc_addrinfo ()
 
static void init_addrinfo (rb_addrinfo_t *rai, struct sockaddr *sa, socklen_t len, int pfamily, int socktype, int protocol, VALUE canonname, VALUE inspectname)
 
VALUE rsock_addrinfo_new (struct sockaddr *addr, socklen_t len, int family, int socktype, int protocol, VALUE canonname, VALUE inspectname)
 
static struct addrinfocall_getaddrinfo (VALUE node, VALUE service, VALUE family, VALUE socktype, VALUE protocol, VALUE flags, int socktype_hack)
 
static VALUE make_inspectname (VALUE node, VALUE service, struct addrinfo *res)
 
static void init_addrinfo_getaddrinfo (rb_addrinfo_t *rai, VALUE node, VALUE service, VALUE family, VALUE socktype, VALUE protocol, VALUE flags, VALUE inspectnode, VALUE inspectservice)
 
static VALUE addrinfo_firstonly_new (VALUE node, VALUE service, VALUE family, VALUE socktype, VALUE protocol, VALUE flags)
 
static VALUE addrinfo_list_new (VALUE node, VALUE service, VALUE family, VALUE socktype, VALUE protocol, VALUE flags)
 
static VALUE addrinfo_initialize (int argc, VALUE *argv, VALUE self)
 
static int get_afamily (struct sockaddr *addr, socklen_t len)
 
static int ai_get_afamily (rb_addrinfo_t *rai)
 
static VALUE inspect_sockaddr (VALUE addrinfo, VALUE ret)
 
static VALUE addrinfo_inspect (VALUE self)
 
static VALUE addrinfo_inspect_sockaddr (VALUE self)
 
static VALUE addrinfo_mdump (VALUE self)
 
static VALUE addrinfo_mload (VALUE self, VALUE ary)
 
static VALUE addrinfo_afamily (VALUE self)
 
static VALUE addrinfo_pfamily (VALUE self)
 
static VALUE addrinfo_socktype (VALUE self)
 
static VALUE addrinfo_protocol (VALUE self)
 
static VALUE addrinfo_to_sockaddr (VALUE self)
 
static VALUE addrinfo_canonname (VALUE self)
 
static VALUE addrinfo_ip_p (VALUE self)
 
static VALUE addrinfo_ipv4_p (VALUE self)
 
static VALUE addrinfo_ipv6_p (VALUE self)
 
static VALUE addrinfo_unix_p (VALUE self)
 
static VALUE addrinfo_getnameinfo (int argc, VALUE *argv, VALUE self)
 
static VALUE addrinfo_ip_unpack (VALUE self)
 
static VALUE addrinfo_ip_address (VALUE self)
 
static VALUE addrinfo_ip_port (VALUE self)
 
static int extract_in_addr (VALUE self, uint32_t *addrp)
 
static VALUE addrinfo_ipv4_private_p (VALUE self)
 
static VALUE addrinfo_ipv4_loopback_p (VALUE self)
 
static VALUE addrinfo_ipv4_multicast_p (VALUE self)
 
static VALUE addrinfo_s_getaddrinfo (int argc, VALUE *argv, VALUE self)
 
static VALUE addrinfo_s_ip (VALUE self, VALUE host)
 
static VALUE addrinfo_s_tcp (VALUE self, VALUE host, VALUE port)
 
static VALUE addrinfo_s_udp (VALUE self, VALUE host, VALUE port)
 
VALUE rsock_sockaddr_string_value (volatile VALUE *v)
 
char * rsock_sockaddr_string_value_ptr (volatile VALUE *v)
 
VALUE rb_check_sockaddr_string_type (VALUE val)
 
VALUE rsock_fd_socket_addrinfo (int fd, struct sockaddr *addr, socklen_t len)
 
VALUE rsock_io_socket_addrinfo (VALUE io, struct sockaddr *addr, socklen_t len)
 
void rsock_init_addrinfo (void)
 

Variables

static const rb_data_type_t addrinfo_type
 

Macro Definition Documentation

#define addrinfo_free   RUBY_TYPED_DEFAULT_FREE

Definition at line 564 of file raddrinfo.c.

#define IS_ADDRINFO (   obj)    rb_typeddata_is_kind_of((obj), &addrinfo_type)

Definition at line 583 of file raddrinfo.c.

Referenced by rb_check_sockaddr_string_type(), and rsock_sockaddr_string_value().

Function Documentation

static VALUE addrinfo_afamily ( VALUE  self)
static

Definition at line 1381 of file raddrinfo.c.

References ai_get_afamily(), get_addrinfo(), and INT2NUM.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_canonname ( VALUE  self)
static

Definition at line 1472 of file raddrinfo.c.

References rb_addrinfo_t::canonname, and get_addrinfo().

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_firstonly_new ( VALUE  node,
VALUE  service,
VALUE  family,
VALUE  socktype,
VALUE  protocol,
VALUE  flags 
)
static
static VALUE addrinfo_getnameinfo ( int  argc,
VALUE argv,
VALUE  self 
)
static
static VALUE addrinfo_initialize ( int  argc,
VALUE argv,
VALUE  self 
)
static
static VALUE addrinfo_inspect ( VALUE  self)
static
static VALUE addrinfo_inspect_sockaddr ( VALUE  self)
static

Definition at line 1178 of file raddrinfo.c.

References inspect_sockaddr(), and rb_str_new().

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_ip_address ( VALUE  self)
static
static VALUE addrinfo_ip_p ( VALUE  self)
static

Definition at line 1491 of file raddrinfo.c.

References ai_get_afamily(), get_addrinfo(), IS_IP_FAMILY, Qfalse, and Qtrue.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_ip_port ( VALUE  self)
static
static VALUE addrinfo_ip_unpack ( VALUE  self)
static
static VALUE addrinfo_ipv4_loopback_p ( VALUE  self)
static

Definition at line 1733 of file raddrinfo.c.

References extract_in_addr(), Qfalse, and Qtrue.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_ipv4_multicast_p ( VALUE  self)
static

Definition at line 1747 of file raddrinfo.c.

References extract_in_addr(), Qfalse, and Qtrue.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_ipv4_p ( VALUE  self)
static

Definition at line 1511 of file raddrinfo.c.

References ai_get_afamily(), get_addrinfo(), Qfalse, and Qtrue.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_ipv4_private_p ( VALUE  self)
static

Definition at line 1717 of file raddrinfo.c.

References extract_in_addr(), Qfalse, and Qtrue.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_ipv6_p ( VALUE  self)
static

Definition at line 1530 of file raddrinfo.c.

References ai_get_afamily(), get_addrinfo(), Qfalse, and Qtrue.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_list_new ( VALUE  node,
VALUE  service,
VALUE  family,
VALUE  socktype,
VALUE  protocol,
VALUE  flags 
)
static
static void addrinfo_mark ( void *  ptr)
static

Definition at line 555 of file raddrinfo.c.

References rb_addrinfo_t::canonname, rb_addrinfo_t::inspectname, and rb_gc_mark().

static VALUE addrinfo_mdump ( VALUE  self)
static
static size_t addrinfo_memsize ( const void *  ptr)
static

Definition at line 567 of file raddrinfo.c.

static VALUE addrinfo_mload ( VALUE  self,
VALUE  ary 
)
static
static VALUE addrinfo_pfamily ( VALUE  self)
static

Definition at line 1397 of file raddrinfo.c.

References get_addrinfo(), INT2NUM, and rb_addrinfo_t::pfamily.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_protocol ( VALUE  self)
static

Definition at line 1429 of file raddrinfo.c.

References get_addrinfo(), INT2NUM, and rb_addrinfo_t::protocol.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_s_allocate ( VALUE  klass)
static

Definition at line 578 of file raddrinfo.c.

References TypedData_Wrap_Struct.

Referenced by rsock_addrinfo_new(), and rsock_init_addrinfo().

static VALUE addrinfo_s_getaddrinfo ( int  argc,
VALUE argv,
VALUE  self 
)
static

Definition at line 2039 of file raddrinfo.c.

References addrinfo_list_new(), and rb_scan_args().

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_s_ip ( VALUE  self,
VALUE  host 
)
static
static VALUE addrinfo_s_tcp ( VALUE  self,
VALUE  host,
VALUE  port 
)
static

Definition at line 2080 of file raddrinfo.c.

References addrinfo_firstonly_new(), INT2FIX, INT2NUM, IPPROTO_TCP, and PF_UNSPEC.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_s_udp ( VALUE  self,
VALUE  host,
VALUE  port 
)
static

Definition at line 2095 of file raddrinfo.c.

References addrinfo_firstonly_new(), INT2FIX, INT2NUM, IPPROTO_UDP, and PF_UNSPEC.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_socktype ( VALUE  self)
static

Definition at line 1413 of file raddrinfo.c.

References get_addrinfo(), INT2NUM, and rb_addrinfo_t::socktype.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_to_sockaddr ( VALUE  self)
static
static VALUE addrinfo_unix_p ( VALUE  self)
static

Definition at line 1553 of file raddrinfo.c.

References ai_get_afamily(), get_addrinfo(), Qfalse, and Qtrue.

Referenced by rsock_init_addrinfo().

static int ai_get_afamily ( rb_addrinfo_t rai)
static
static rb_addrinfo_t* alloc_addrinfo ( )
static
static struct addrinfo* call_getaddrinfo ( VALUE  node,
VALUE  service,
VALUE  family,
VALUE  socktype,
VALUE  protocol,
VALUE  flags,
int  socktype_hack 
)
static
static rb_addrinfo_t* check_addrinfo ( VALUE  self)
inlinestatic

Definition at line 585 of file raddrinfo.c.

References rb_check_typeddata().

Referenced by addrinfo_initialize(), addrinfo_mload(), and get_addrinfo().

static int extract_in_addr ( VALUE  self,
uint32_t addrp 
)
static
static rb_addrinfo_t* get_addrinfo ( VALUE  self)
static
static int get_afamily ( struct sockaddr *  addr,
socklen_t  len 
)
static

Definition at line 949 of file raddrinfo.c.

References AF_UNSPEC.

Referenced by ai_get_afamily(), and rsock_fd_socket_addrinfo().

static char* host_str ( VALUE  host,
char *  hbuf,
size_t  hbuflen,
int *  flags_ptr 
)
static
static void init_addrinfo ( rb_addrinfo_t rai,
struct sockaddr *  sa,
socklen_t  len,
int  pfamily,
int  socktype,
int  protocol,
VALUE  canonname,
VALUE  inspectname 
)
static
static void init_addrinfo_getaddrinfo ( rb_addrinfo_t rai,
VALUE  node,
VALUE  service,
VALUE  family,
VALUE  socktype,
VALUE  protocol,
VALUE  flags,
VALUE  inspectnode,
VALUE  inspectservice 
)
static
static VALUE inspect_sockaddr ( VALUE  addrinfo,
VALUE  ret 
)
static
static VALUE make_hostent_internal ( struct hostent_arg arg)
static
static void make_inetaddr ( unsigned int  host,
char *  buf,
size_t  buflen 
)
static

Definition at line 260 of file raddrinfo.c.

References make_ipaddr0(), MEMZERO, and SET_SIN_LEN.

Referenced by host_str().

static VALUE make_inspectname ( VALUE  node,
VALUE  service,
struct addrinfo res 
)
static
static void make_ipaddr0 ( struct sockaddr *  addr,
socklen_t  addrlen,
char *  buf,
size_t  buflen 
)
static

Definition at line 240 of file raddrinfo.c.

References NI_NUMERICHOST, NULL, rb_getnameinfo(), and rsock_raise_socket_error().

Referenced by make_inetaddr(), and rsock_make_ipaddr().

static void* nogvl_getaddrinfo ( void *  arg)
static
static void* nogvl_getnameinfo ( void *  arg)
static
static char* port_str ( VALUE  port,
char *  pbuf,
size_t  pbuflen,
int *  flags_ptr 
)
static
VALUE rb_check_sockaddr_string_type ( VALUE  val)

Definition at line 2157 of file raddrinfo.c.

References addrinfo_to_sockaddr(), IS_ADDRINFO, and rb_check_string_type().

Referenced by sock_s_getnameinfo().

int rb_getaddrinfo ( const char *  node,
const char *  service,
const struct addrinfo hints,
struct addrinfo **  res 
)
int rb_getnameinfo ( const struct sockaddr *  sa,
socklen_t  salen,
char *  host,
size_t  hostlen,
char *  serv,
size_t  servlen,
int  flags 
)
struct addrinfo* rsock_addrinfo ( VALUE  host,
VALUE  port,
int  socktype,
int  flags 
)
VALUE rsock_addrinfo_new ( struct sockaddr *  addr,
socklen_t  len,
int  family,
int  socktype,
int  protocol,
VALUE  canonname,
VALUE  inspectname 
)
VALUE rsock_fd_socket_addrinfo ( int  fd,
struct sockaddr *  addr,
socklen_t  len 
)
VALUE rsock_freeaddrinfo ( struct addrinfo addr)

Definition at line 526 of file raddrinfo.c.

References freeaddrinfo(), and Qnil.

Referenced by rsock_make_hostent(), and udp_connect().

struct addrinfo* rsock_getaddrinfo ( VALUE  host,
VALUE  port,
struct addrinfo hints,
int  socktype_hack 
)
void rsock_init_addrinfo ( void  )
VALUE rsock_io_socket_addrinfo ( VALUE  io,
struct sockaddr *  addr,
socklen_t  len 
)
VALUE rsock_ipaddr ( struct sockaddr *  sockaddr,
socklen_t  sockaddrlen,
int  norevlookup 
)
VALUE rsock_make_hostent ( VALUE  host,
struct addrinfo addr,
VALUE(*)(struct sockaddr *, size_t)  ipaddr 
)
VALUE rsock_make_ipaddr ( struct sockaddr *  addr,
socklen_t  addrlen 
)

Definition at line 251 of file raddrinfo.c.

References make_ipaddr0(), and rb_str_new2().

Referenced by ip_s_getaddress(), sock_s_unpack_sockaddr_in(), and tcp_sockaddr().

VALUE rsock_sockaddr_string_value ( volatile VALUE v)

Definition at line 2139 of file raddrinfo.c.

References addrinfo_to_sockaddr(), IS_ADDRINFO, StringValue, v, and val.

Referenced by rsock_sockaddr_string_value_ptr().

char* rsock_sockaddr_string_value_ptr ( volatile VALUE v)

Definition at line 2150 of file raddrinfo.c.

References rsock_sockaddr_string_value(), and RSTRING_PTR.

static int str_is_number ( const char *  p)
static

Definition at line 272 of file raddrinfo.c.

References NULL, and STRTOUL.

Referenced by rsock_getaddrinfo().

Variable Documentation

const rb_data_type_t addrinfo_type
static
Initial value:
= {
"socket/addrinfo",
}
static size_t addrinfo_memsize(const void *ptr)
Definition: raddrinfo.c:567
#define addrinfo_free
Definition: raddrinfo.c:564
static void addrinfo_mark(void *ptr)
Definition: raddrinfo.c:555

Definition at line 572 of file raddrinfo.c.