Ruby  1.9.3p551(2014-11-13revision48407)
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 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)
 
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 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 a, 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 a, 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 a, extract_in_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_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, ptr, 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 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(), flags, 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(), 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(), and PF_UNSPEC.

Referenced by rsock_init_addrinfo().

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 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 584 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 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 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 
)
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 
)
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, StringValue, v, and val.

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.

static int str_is_number ( const char *  p)
static

Definition at line 272 of file raddrinfo.c.

References NULL, STRTOUL, and void.

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:566
#define addrinfo_free
Definition: raddrinfo.c:563
static void addrinfo_mark(void *ptr)
Definition: raddrinfo.c:554

Definition at line 571 of file raddrinfo.c.