ext/socket/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

Defines

#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 VALUE nogvl_getaddrinfo (void *arg)
int rb_getaddrinfo (const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res)
static VALUE 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, char *buf, size_t len)
VALUE rsock_make_ipaddr (struct sockaddr *addr)
static void make_inetaddr (unsigned int host, char *buf, size_t len)
static char * host_str (VALUE host, char *hbuf, size_t len, int *flags_ptr)
static char * port_str (VALUE port, char *pbuf, size_t len, 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, int norevlookup)
VALUE rsock_unixpath_str (struct sockaddr_un *sockaddr, socklen_t len)
VALUE rsock_unixaddr (struct sockaddr_un *sockaddr, socklen_t len)
socklen_t rsock_unix_sockaddr_len (VALUE path)
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 void init_unix_addrinfo (rb_addrinfo_t *rai, VALUE path, int socktype)
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 struct in6_addr * extract_in6_addr (VALUE self)
static VALUE addrinfo_ipv6_unspecified_p (VALUE self)
static VALUE addrinfo_ipv6_loopback_p (VALUE self)
static VALUE addrinfo_ipv6_multicast_p (VALUE self)
static VALUE addrinfo_ipv6_linklocal_p (VALUE self)
static VALUE addrinfo_ipv6_sitelocal_p (VALUE self)
static VALUE addrinfo_ipv6_v4mapped_p (VALUE self)
static VALUE addrinfo_ipv6_v4compat_p (VALUE self)
static VALUE addrinfo_ipv6_mc_nodelocal_p (VALUE self)
static VALUE addrinfo_ipv6_mc_linklocal_p (VALUE self)
static VALUE addrinfo_ipv6_mc_sitelocal_p (VALUE self)
static VALUE addrinfo_ipv6_mc_orglocal_p (VALUE self)
static VALUE addrinfo_ipv6_mc_global_p (VALUE self)
static VALUE addrinfo_ipv6_to_ipv4 (VALUE self)
static VALUE addrinfo_unix_path (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)
static VALUE addrinfo_s_unix (int argc, VALUE *argv, VALUE self)
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

Define Documentation

#define addrinfo_free   RUBY_TYPED_DEFAULT_FREE

Definition at line 563 of file raddrinfo.c.

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

Definition at line 582 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 1379 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 1470 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 1176 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 1489 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 1731 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 1745 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 1509 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 1715 of file raddrinfo.c.

References extract_in_addr(), Qfalse, and Qtrue.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_ipv6_linklocal_p ( VALUE  self  )  [static]

Definition at line 1806 of file raddrinfo.c.

References extract_in6_addr(), Qfalse, and Qtrue.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_ipv6_loopback_p ( VALUE  self  )  [static]

Definition at line 1782 of file raddrinfo.c.

References extract_in6_addr(), Qfalse, and Qtrue.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_ipv6_mc_global_p ( VALUE  self  )  [static]

Definition at line 1902 of file raddrinfo.c.

References extract_in6_addr(), Qfalse, and Qtrue.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_ipv6_mc_linklocal_p ( VALUE  self  )  [static]

Definition at line 1866 of file raddrinfo.c.

References extract_in6_addr(), Qfalse, and Qtrue.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_ipv6_mc_nodelocal_p ( VALUE  self  )  [static]

Definition at line 1854 of file raddrinfo.c.

References extract_in6_addr(), Qfalse, and Qtrue.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_ipv6_mc_orglocal_p ( VALUE  self  )  [static]

Definition at line 1890 of file raddrinfo.c.

References extract_in6_addr(), Qfalse, and Qtrue.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_ipv6_mc_sitelocal_p ( VALUE  self  )  [static]

Definition at line 1878 of file raddrinfo.c.

References extract_in6_addr(), Qfalse, and Qtrue.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_ipv6_multicast_p ( VALUE  self  )  [static]

Definition at line 1794 of file raddrinfo.c.

References extract_in6_addr(), Qfalse, and Qtrue.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_ipv6_p ( VALUE  self  )  [static]

Definition at line 1528 of file raddrinfo.c.

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

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_ipv6_sitelocal_p ( VALUE  self  )  [static]

Definition at line 1818 of file raddrinfo.c.

References extract_in6_addr(), Qfalse, and Qtrue.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_ipv6_to_ipv4 ( VALUE  self  )  [static]
static VALUE addrinfo_ipv6_unspecified_p ( VALUE  self  )  [static]

Definition at line 1770 of file raddrinfo.c.

References extract_in6_addr(), Qfalse, and Qtrue.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_ipv6_v4compat_p ( VALUE  self  )  [static]

Definition at line 1842 of file raddrinfo.c.

References extract_in6_addr(), Qfalse, and Qtrue.

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_ipv6_v4mapped_p ( VALUE  self  )  [static]

Definition at line 1830 of file raddrinfo.c.

References extract_in6_addr(), 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 554 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 566 of file raddrinfo.c.

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

Definition at line 1395 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 1427 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 577 of file raddrinfo.c.

References TypedData_Wrap_Struct.

Referenced by addrinfo_s_unix(), rsock_addrinfo_new(), and rsock_init_addrinfo().

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

Definition at line 2013 of file raddrinfo.c.

References addrinfo_list_new(), node, 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 2054 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 2069 of file raddrinfo.c.

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

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_s_unix ( int  argc,
VALUE argv,
VALUE  self 
) [static]
static VALUE addrinfo_socktype ( VALUE  self  )  [static]

Definition at line 1411 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 1551 of file raddrinfo.c.

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

Referenced by rsock_init_addrinfo().

static VALUE addrinfo_unix_path ( VALUE  self  )  [static]
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, read]
static rb_addrinfo_t* check_addrinfo ( VALUE  self  )  [inline, static]

Definition at line 584 of file raddrinfo.c.

References rb_check_typeddata().

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

static struct in6_addr* extract_in6_addr ( VALUE  self  )  [static, read]
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 947 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  len,
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 void init_unix_addrinfo ( rb_addrinfo_t rai,
VALUE  path,
int  socktype 
) [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  len 
) [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,
char *  buf,
size_t  len 
) [static]

Definition at line 240 of file raddrinfo.c.

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

Referenced by make_inetaddr(), and rsock_make_ipaddr().

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

Definition at line 2131 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 
) [read]
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 525 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 
) [read]
void rsock_init_addrinfo ( void   ) 
VALUE rsock_io_socket_addrinfo ( VALUE  io,
struct sockaddr *  addr,
socklen_t  len 
)
VALUE rsock_ipaddr ( struct sockaddr *  sockaddr,
int  norevlookup 
)
VALUE rsock_make_hostent ( VALUE  host,
struct addrinfo addr,
VALUE(*)(struct sockaddr *, size_t)  ipaddr 
)
VALUE rsock_make_ipaddr ( struct sockaddr *  addr  ) 

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 2113 of file raddrinfo.c.

References addrinfo_to_sockaddr(), IS_ADDRINFO, and StringValue.

Referenced by rsock_sockaddr_string_value_ptr().

char* rsock_sockaddr_string_value_ptr ( volatile VALUE v  ) 

Definition at line 2124 of file raddrinfo.c.

References rsock_sockaddr_string_value(), and RSTRING_PTR.

socklen_t rsock_unix_sockaddr_len ( VALUE  path  ) 

Definition at line 454 of file raddrinfo.c.

References offsetof, RSTRING_LEN, and RSTRING_PTR.

Referenced by init_unix_addrinfo(), rsock_init_unixsock(), and sock_s_pack_sockaddr_un().

VALUE rsock_unixaddr ( struct sockaddr_un *  sockaddr,
socklen_t  len 
)

Definition at line 447 of file raddrinfo.c.

References rb_assoc_new(), rb_str_new2, and rsock_unixpath_str().

Referenced by rsock_s_recvfrom(), unix_addr(), and unix_peeraddr().

VALUE rsock_unixpath_str ( struct sockaddr_un *  sockaddr,
socklen_t  len 
)

Definition at line 433 of file raddrinfo.c.

References rb_str_new(), and rb_str_new2.

Referenced by rsock_unixaddr(), sock_s_unpack_sockaddr_un(), and unix_path().

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",
    {addrinfo_mark, addrinfo_free, addrinfo_memsize,},
}

Definition at line 571 of file raddrinfo.c.


Generated on 27 Nov 2014 for Ruby by  doxygen 1.6.1