Ruby  2.1.10p492(2016-04-01revision54464)
Data Structures | Macros | Functions | Variables
raddrinfo.c File Reference
#include "rubysocket.h"

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)
 
static int numeric_getaddrinfo (const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res)
 
int rb_getaddrinfo (const char *node, const char *service, const struct addrinfo *hints, struct rb_addrinfo **res)
 
void rb_freeaddrinfo (struct rb_addrinfo *ai)
 
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 rb_addrinforsock_getaddrinfo (VALUE host, VALUE port, struct addrinfo *hints, int socktype_hack)
 
struct rb_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 (VALUE arg)
 
VALUE rsock_make_hostent (VALUE host, struct rb_addrinfo *addr, VALUE(*ipaddr)(struct sockaddr *, socklen_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 rb_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)
 
VALUE rsock_inspect_sockaddr (struct sockaddr *sockaddr_arg, socklen_t socklen, VALUE ret)
 
static VALUE addrinfo_inspect (VALUE self)
 
VALUE rsock_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)
 
VALUE rsock_sockaddr_string_value_with_addrinfo (volatile VALUE *v, VALUE *rai_ret)
 
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

◆ addrinfo_free

#define addrinfo_free   RUBY_TYPED_DEFAULT_FREE

Definition at line 681 of file raddrinfo.c.

◆ IS_ADDRINFO

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

Function Documentation

◆ addrinfo_afamily()

static VALUE addrinfo_afamily ( VALUE  self)
static

Definition at line 1669 of file raddrinfo.c.

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

Referenced by rsock_init_addrinfo().

◆ addrinfo_canonname()

static VALUE addrinfo_canonname ( VALUE  self)
static

Definition at line 1760 of file raddrinfo.c.

References rb_addrinfo_t::canonname, and get_addrinfo().

Referenced by rsock_init_addrinfo().

◆ addrinfo_firstonly_new()

static VALUE addrinfo_firstonly_new ( VALUE  node,
VALUE  service,
VALUE  family,
VALUE  socktype,
VALUE  protocol,
VALUE  flags 
)
static

◆ addrinfo_getnameinfo()

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

◆ addrinfo_initialize()

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

◆ addrinfo_inspect()

static VALUE addrinfo_inspect ( VALUE  self)
static

◆ addrinfo_ip_address()

static VALUE addrinfo_ip_address ( VALUE  self)
static

◆ addrinfo_ip_p()

static VALUE addrinfo_ip_p ( VALUE  self)
static

Definition at line 1779 of file raddrinfo.c.

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

Referenced by rsock_init_addrinfo().

◆ addrinfo_ip_port()

static VALUE addrinfo_ip_port ( VALUE  self)
static

◆ addrinfo_ip_unpack()

static VALUE addrinfo_ip_unpack ( VALUE  self)
static

◆ addrinfo_ipv4_loopback_p()

static VALUE addrinfo_ipv4_loopback_p ( VALUE  self)
static

Definition at line 2021 of file raddrinfo.c.

References extract_in_addr(), Qfalse, and Qtrue.

Referenced by rsock_init_addrinfo().

◆ addrinfo_ipv4_multicast_p()

static VALUE addrinfo_ipv4_multicast_p ( VALUE  self)
static

Definition at line 2035 of file raddrinfo.c.

References extract_in_addr(), Qfalse, and Qtrue.

Referenced by rsock_init_addrinfo().

◆ addrinfo_ipv4_p()

static VALUE addrinfo_ipv4_p ( VALUE  self)
static

Definition at line 1799 of file raddrinfo.c.

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

Referenced by rsock_init_addrinfo().

◆ addrinfo_ipv4_private_p()

static VALUE addrinfo_ipv4_private_p ( VALUE  self)
static

Definition at line 2005 of file raddrinfo.c.

References extract_in_addr(), Qfalse, and Qtrue.

Referenced by rsock_init_addrinfo().

◆ addrinfo_ipv6_p()

static VALUE addrinfo_ipv6_p ( VALUE  self)
static

Definition at line 1818 of file raddrinfo.c.

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

Referenced by rsock_init_addrinfo().

◆ addrinfo_list_new()

static VALUE addrinfo_list_new ( VALUE  node,
VALUE  service,
VALUE  family,
VALUE  socktype,
VALUE  protocol,
VALUE  flags 
)
static

◆ addrinfo_mark()

static void addrinfo_mark ( void *  ptr)
static

Definition at line 672 of file raddrinfo.c.

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

◆ addrinfo_mdump()

static VALUE addrinfo_mdump ( VALUE  self)
static

◆ addrinfo_memsize()

static size_t addrinfo_memsize ( const void *  ptr)
static

Definition at line 684 of file raddrinfo.c.

◆ addrinfo_mload()

static VALUE addrinfo_mload ( VALUE  self,
VALUE  ary 
)
static

◆ addrinfo_pfamily()

static VALUE addrinfo_pfamily ( VALUE  self)
static

Definition at line 1685 of file raddrinfo.c.

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

Referenced by rsock_init_addrinfo().

◆ addrinfo_protocol()

static VALUE addrinfo_protocol ( VALUE  self)
static

Definition at line 1717 of file raddrinfo.c.

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

Referenced by rsock_init_addrinfo().

◆ addrinfo_s_allocate()

static VALUE addrinfo_s_allocate ( VALUE  klass)
static

Definition at line 695 of file raddrinfo.c.

References addrinfo_type, and TypedData_Wrap_Struct.

Referenced by rsock_addrinfo_new(), and rsock_init_addrinfo().

◆ addrinfo_s_getaddrinfo()

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

Definition at line 2325 of file raddrinfo.c.

References addrinfo_list_new(), argc, argv, and rb_scan_args().

Referenced by rsock_init_addrinfo().

◆ addrinfo_s_ip()

static VALUE addrinfo_s_ip ( VALUE  self,
VALUE  host 
)
static

◆ addrinfo_s_tcp()

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

Definition at line 2366 of file raddrinfo.c.

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

Referenced by rsock_init_addrinfo().

◆ addrinfo_s_udp()

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

Definition at line 2381 of file raddrinfo.c.

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

Referenced by rsock_init_addrinfo().

◆ addrinfo_socktype()

static VALUE addrinfo_socktype ( VALUE  self)
static

Definition at line 1701 of file raddrinfo.c.

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

Referenced by rsock_init_addrinfo().

◆ addrinfo_to_sockaddr()

static VALUE addrinfo_to_sockaddr ( VALUE  self)
static

◆ addrinfo_unix_p()

static VALUE addrinfo_unix_p ( VALUE  self)
static

Definition at line 1841 of file raddrinfo.c.

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

Referenced by rsock_init_addrinfo().

◆ ai_get_afamily()

static int ai_get_afamily ( rb_addrinfo_t rai)
static

◆ alloc_addrinfo()

static rb_addrinfo_t* alloc_addrinfo ( )
static

◆ call_getaddrinfo()

static struct rb_addrinfo* call_getaddrinfo ( VALUE  node,
VALUE  service,
VALUE  family,
VALUE  socktype,
VALUE  protocol,
VALUE  flags,
int  socktype_hack 
)
static

◆ check_addrinfo()

static rb_addrinfo_t* check_addrinfo ( VALUE  self)
inlinestatic

Definition at line 702 of file raddrinfo.c.

References addrinfo_type, and rb_check_typeddata().

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

◆ extract_in_addr()

static int extract_in_addr ( VALUE  self,
uint32_t addrp 
)
static

◆ get_addrinfo()

static rb_addrinfo_t* get_addrinfo ( VALUE  self)
static

◆ get_afamily()

static int get_afamily ( struct sockaddr *  addr,
socklen_t  len 
)
static

Definition at line 1066 of file raddrinfo.c.

References AF_UNSPEC.

Referenced by ai_get_afamily(), and rsock_fd_socket_addrinfo().

◆ host_str()

static char* host_str ( VALUE  host,
char *  hbuf,
size_t  hbuflen,
int *  flags_ptr 
)
static

◆ init_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 
)
static

◆ init_addrinfo_getaddrinfo()

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

◆ inspect_sockaddr()

static VALUE inspect_sockaddr ( VALUE  addrinfo,
VALUE  ret 
)
static

◆ make_hostent_internal()

static VALUE make_hostent_internal ( struct hostent_arg arg)
static

◆ make_inetaddr()

static void make_inetaddr ( unsigned int  host,
char *  buf,
size_t  buflen 
)
static

Definition at line 376 of file raddrinfo.c.

References buf, INIT_SOCKADDR_IN, and make_ipaddr0().

Referenced by host_str().

◆ make_inspectname()

static VALUE make_inspectname ( VALUE  node,
VALUE  service,
struct addrinfo res 
)
static

◆ make_ipaddr0()

static void make_ipaddr0 ( struct sockaddr *  addr,
socklen_t  addrlen,
char *  buf,
size_t  buflen 
)
static

Definition at line 356 of file raddrinfo.c.

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

Referenced by make_inetaddr(), and rsock_make_ipaddr().

◆ nogvl_getaddrinfo()

static void* nogvl_getaddrinfo ( void *  arg)
static

◆ nogvl_getnameinfo()

static void* nogvl_getnameinfo ( void *  arg)
static

◆ numeric_getaddrinfo()

static int numeric_getaddrinfo ( const char *  node,
const char *  service,
const struct addrinfo hints,
struct addrinfo **  res 
)
static

◆ port_str()

static char* port_str ( VALUE  port,
char *  pbuf,
size_t  pbuflen,
int *  flags_ptr 
)
static

◆ rb_check_sockaddr_string_type()

VALUE rb_check_sockaddr_string_type ( VALUE  val)

Definition at line 2456 of file raddrinfo.c.

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

Referenced by sock_s_getnameinfo().

◆ rb_freeaddrinfo()

void rb_freeaddrinfo ( struct rb_addrinfo ai)

◆ rb_getaddrinfo()

int rb_getaddrinfo ( const char *  node,
const char *  service,
const struct addrinfo hints,
struct rb_addrinfo **  res 
)

◆ rb_getnameinfo()

int rb_getnameinfo ( const struct sockaddr *  sa,
socklen_t  salen,
char *  host,
size_t  hostlen,
char *  serv,
size_t  servlen,
int  flags 
)

◆ rsock_addrinfo()

struct rb_addrinfo* rsock_addrinfo ( VALUE  host,
VALUE  port,
int  socktype,
int  flags 
)

◆ rsock_addrinfo_inspect_sockaddr()

VALUE rsock_addrinfo_inspect_sockaddr ( VALUE  self)

Definition at line 1466 of file raddrinfo.c.

References inspect_sockaddr(), and rb_str_new().

Referenced by rsock_init_addrinfo(), and rsock_syserr_fail_raddrinfo().

◆ rsock_addrinfo_new()

VALUE rsock_addrinfo_new ( struct sockaddr *  addr,
socklen_t  len,
int  family,
int  socktype,
int  protocol,
VALUE  canonname,
VALUE  inspectname 
)

◆ rsock_fd_socket_addrinfo()

VALUE rsock_fd_socket_addrinfo ( int  fd,
struct sockaddr *  addr,
socklen_t  len 
)

◆ rsock_freeaddrinfo()

VALUE rsock_freeaddrinfo ( VALUE  arg)

Definition at line 642 of file raddrinfo.c.

References Qnil, and rb_freeaddrinfo().

Referenced by rsock_make_hostent(), and udp_connect().

◆ rsock_getaddrinfo()

struct rb_addrinfo* rsock_getaddrinfo ( VALUE  host,
VALUE  port,
struct addrinfo hints,
int  socktype_hack 
)

◆ rsock_init_addrinfo()

void rsock_init_addrinfo ( void  )

◆ rsock_inspect_sockaddr()

VALUE rsock_inspect_sockaddr ( struct sockaddr *  sockaddr_arg,
socklen_t  socklen,
VALUE  ret 
)

◆ rsock_io_socket_addrinfo()

VALUE rsock_io_socket_addrinfo ( VALUE  io,
struct sockaddr *  addr,
socklen_t  len 
)

◆ rsock_ipaddr()

VALUE rsock_ipaddr ( struct sockaddr *  sockaddr,
socklen_t  sockaddrlen,
int  norevlookup 
)

◆ rsock_make_hostent()

VALUE rsock_make_hostent ( VALUE  host,
struct rb_addrinfo addr,
VALUE(*)(struct sockaddr *, socklen_t ipaddr 
)

◆ rsock_make_ipaddr()

VALUE rsock_make_ipaddr ( struct sockaddr *  addr,
socklen_t  addrlen 
)

Definition at line 367 of file raddrinfo.c.

References make_ipaddr0(), and rb_str_new2.

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

◆ rsock_sockaddr_string_value()

VALUE rsock_sockaddr_string_value ( volatile VALUE v)

Definition at line 2425 of file raddrinfo.c.

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

Referenced by rsock_sockaddr_string_value_ptr().

◆ rsock_sockaddr_string_value_ptr()

char* rsock_sockaddr_string_value_ptr ( volatile VALUE v)

Definition at line 2449 of file raddrinfo.c.

References rsock_sockaddr_string_value(), and RSTRING_PTR.

◆ rsock_sockaddr_string_value_with_addrinfo()

VALUE rsock_sockaddr_string_value_with_addrinfo ( volatile VALUE v,
VALUE rai_ret 
)

Definition at line 2436 of file raddrinfo.c.

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

◆ str_is_number()

static int str_is_number ( const char *  p)
static

Definition at line 386 of file raddrinfo.c.

References NULL, and STRTOUL.

Referenced by rsock_getaddrinfo().

Variable Documentation

◆ addrinfo_type

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

Definition at line 689 of file raddrinfo.c.

Referenced by addrinfo_s_allocate(), and check_addrinfo().