Ruby
2.7.2p137(2020-10-01revision5445e0435260b449decf2ac16f9d09bae3cafe72)
|
#include "ruby/ruby.h"
#include "ruby/io.h"
#include "ruby/thread.h"
#include "ruby/util.h"
#include "internal.h"
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <errno.h>
#include "addrinfo.h"
#include "sockport.h"
#include "constdefs.h"
Go to the source code of this file.
Data Structures | |
struct | sockaddr_storage |
union | union_sockaddr |
struct | rb_addrinfo |
struct | rsock_send_arg |
Typedefs | |
typedef int | socklen_t |
Enumerations | |
enum | sock_recv_type { RECV_RECV, RECV_IP, RECV_UNIX, RECV_SOCKET } |
#define _SS_ALIGNSIZE (sizeof(double)) |
Definition at line 174 of file rubysocket.h.
#define _SS_MAXSIZE 128 |
Definition at line 173 of file rubysocket.h.
#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof(unsigned char) * 2) |
Definition at line 175 of file rubysocket.h.
#define _SS_PAD2SIZE |
Definition at line 176 of file rubysocket.h.
#define BLOCKING_REGION_FD | ( | func, | |
arg | |||
) | (long)rb_thread_io_blocking_region((func), (arg), (arg)->fd) |
Definition at line 268 of file rubysocket.h.
#define EWOULDBLOCK EAGAIN |
Definition at line 134 of file rubysocket.h.
#define FMODE_INET 0x00400000 |
Definition at line 237 of file rubysocket.h.
#define FMODE_INET6 0x00800000 |
Definition at line 238 of file rubysocket.h.
#define FMODE_NOREVLOOKUP 0x100 |
Definition at line 233 of file rubysocket.h.
#define FMODE_SOCK (FMODE_UNIX|FMODE_INET|FMODE_INET6) |
Definition at line 239 of file rubysocket.h.
#define FMODE_UNIX 0x00200000 |
Definition at line 236 of file rubysocket.h.
#define IN6_IS_ADDR_UNIQUE_LOCAL | ( | a | ) | (((a)->s6_addr[0] == 0xfc) || ((a)->s6_addr[0] == 0xfd)) |
Definition at line 166 of file rubysocket.h.
#define INET_CLIENT 0 |
Definition at line 227 of file rubysocket.h.
#define INET_SERVER 1 |
Definition at line 228 of file rubysocket.h.
#define INET_SOCKS 2 |
Definition at line 229 of file rubysocket.h.
#define IS_IP_FAMILY | ( | af | ) | ((af) == AF_INET) |
Definition at line 162 of file rubysocket.h.
#define MSG_DONTWAIT_RELIABLE 0 |
Definition at line 436 of file rubysocket.h.
#define pseudo_AF_FTIP pseudo_AF_RTIP |
Definition at line 144 of file rubysocket.h.
#define rsock_bsock_recvmsg rb_f_notimplement |
Definition at line 377 of file rubysocket.h.
#define rsock_bsock_recvmsg_nonblock rb_f_notimplement |
Definition at line 378 of file rubysocket.h.
#define rsock_bsock_sendmsg rb_f_notimplement |
Definition at line 366 of file rubysocket.h.
#define rsock_bsock_sendmsg_nonblock rb_f_notimplement |
Definition at line 367 of file rubysocket.h.
#define rsock_maybe_fd_writable | ( | fd | ) | rb_thread_fd_writable((fd)) |
Definition at line 427 of file rubysocket.h.
#define rsock_maybe_wait_fd | ( | fd | ) | rb_thread_wait_fd((fd)) |
Definition at line 428 of file rubysocket.h.
#define RSOCK_NONBLOCK_DEFAULT (0) |
Definition at line 35 of file rubysocket.h.
#define RSTRING_SOCKLEN (socklen_t)RSTRING_LENINT |
Definition at line 130 of file rubysocket.h.
#define SockAddrStringValue | ( | v | ) | rsock_sockaddr_string_value(&(v)) |
Definition at line 270 of file rubysocket.h.
#define SockAddrStringValuePtr | ( | v | ) | rsock_sockaddr_string_value_ptr(&(v)) |
Definition at line 271 of file rubysocket.h.
#define SockAddrStringValueWithAddrinfo | ( | v, | |
rai_ret | |||
) | rsock_sockaddr_string_value_with_addrinfo(&(v), &(rai_ret)) |
Definition at line 272 of file rubysocket.h.
#define SOCKLEN_MAX |
Definition at line 114 of file rubysocket.h.
enum sock_recv_type |
Enumerator | |
---|---|
RECV_RECV | |
RECV_IP | |
RECV_UNIX | |
RECV_SOCKET |
Definition at line 340 of file rubysocket.h.
Definition at line 651 of file option.c.
References memcpy(), and snprintf().
NORETURN | ( | void | rsock_raise_socket_errorconst char *, int | ) |
NORETURN | ( | void | rsock_sys_fail_host_portconst char *, VALUE, VALUE | ) |
NORETURN | ( | void | rsock_sys_fail_pathconst char *, VALUE | ) |
NORETURN | ( | void | rsock_sys_fail_raddrinfoconst char *, VALUE rai | ) |
NORETURN | ( | void | rsock_sys_fail_raddrinfo_or_sockaddrconst char *, VALUE addr, VALUE rai | ) |
NORETURN | ( | void | rsock_sys_fail_sockaddrconst char *, struct sockaddr *addr, socklen_t len | ) |
NORETURN | ( | void | rsock_syserr_fail_host_portint err, const char *, VALUE, VALUE | ) |
NORETURN | ( | void | rsock_syserr_fail_pathint err, const char *, VALUE | ) |
NORETURN | ( | void | rsock_syserr_fail_raddrinfoint err, const char *mesg, VALUE rai | ) |
NORETURN | ( | void | rsock_syserr_fail_raddrinfo_or_sockaddrint err, const char *mesg, VALUE addr, VALUE rai | ) |
NORETURN | ( | void | rsock_syserr_fail_sockaddrint err, const char *mesg, struct sockaddr *addr, socklen_t len | ) |
Definition at line 2628 of file raddrinfo.c.
References IS_ADDRINFO.
void rb_freeaddrinfo | ( | struct rb_addrinfo * | ai | ) |
Definition at line 396 of file raddrinfo.c.
References rb_addrinfo::ai, addrinfo::ai_addr, addrinfo::ai_next, freeaddrinfo(), and xfree.
Referenced by rsock_freeaddrinfo().
int rb_getaddrinfo | ( | const char * | node, |
const char * | service, | ||
const struct addrinfo * | hints, | ||
struct rb_addrinfo ** | res | ||
) |
Definition at line 309 of file raddrinfo.c.
int rb_getnameinfo | ( | const struct sockaddr * | sa, |
socklen_t | salen, | ||
char * | host, | ||
size_t | hostlen, | ||
char * | serv, | ||
size_t | servlen, | ||
int | flags | ||
) |
Definition at line 437 of file raddrinfo.c.
References arg, getnameinfo_arg::flags, getnameinfo(), getnameinfo_arg::host, getnameinfo_arg::hostlen, int, rb_thread_call_without_gvl(), getnameinfo_arg::sa, getnameinfo_arg::salen, getnameinfo_arg::serv, and getnameinfo_arg::servlen.
Referenced by rsock_ipaddr().
Definition at line 653 of file raddrinfo.c.
References addrinfo::ai_family, addrinfo::ai_flags, addrinfo::ai_socktype, MEMZERO, and rsock_getaddrinfo().
Definition at line 1641 of file raddrinfo.c.
Referenced by rsock_syserr_fail_raddrinfo().
VALUE rsock_addrinfo_new | ( | struct sockaddr * | addr, |
socklen_t | len, | ||
int | family, | ||
int | socktype, | ||
int | protocol, | ||
VALUE | canonname, | ||
VALUE | inspectname | ||
) |
Definition at line 910 of file raddrinfo.c.
Referenced by rsock_syserr_fail_sockaddr().
Definition at line 540 of file basicsocket.c.
References arg, argc, argv, BLOCKING_REGION_FD, rb_io_t::fd, rsock_send_arg::flags, GetOpenFile, n, NIL_P, NUM2INT, rb_io_wait_writable(), rb_scan_args, rb_str_new4, rb_sys_fail(), rsock_maybe_fd_writable, rsock_send_blocking(), rsock_sendto_blocking(), RSTRING_PTR, RSTRING_SOCKLEN, SockAddrStringValue, SSIZET2NUM, StringValue(), and rsock_send_arg::to.
Definition at line 99 of file constants.c.
References IS_IP_FAMILY.
Definition at line 412 of file init.c.
References errno, F_GETFD, fcntl(), recvfrom_arg::fd, FD_CLOEXEC, recvfrom_arg::flags, rb_bug(), and strerror().
Definition at line 42 of file constants.c.
Definition at line 640 of file raddrinfo.c.
Definition at line 2636 of file raddrinfo.c.
Referenced by rsock_io_socket_addrinfo().
Definition at line 808 of file raddrinfo.c.
References arg, Qnil, and rb_freeaddrinfo().
struct rb_addrinfo* rsock_getaddrinfo | ( | VALUE | host, |
VALUE | port, | ||
struct addrinfo * | hints, | ||
int | socktype_hack | ||
) |
Definition at line 576 of file raddrinfo.c.
References error, NI_MAXHOST, NI_MAXSERV, and NULL.
Referenced by rsock_addrinfo().
Definition at line 786 of file init.c.
References union_sockaddr::addr, AF_UNSPEC, rb_io_t::fd, FMODE_INET, FMODE_INET6, FMODE_SOCK, FMODE_UNIX, and rb_io_t::mode.
Definition at line 2681 of file raddrinfo.c.
Referenced by rsock_init_socket_init().
Definition at line 1697 of file ancdata.c.
References rb_cObject, rb_cSocket, rb_define_class_under(), rb_define_method(), and rb_define_singleton_method().
Referenced by rsock_init_socket_init().
Definition at line 704 of file basicsocket.c.
References rb_cBasicSocket, rb_cIO, rb_define_class(), rb_define_singleton_method(), and rb_undef_method().
Referenced by Init_socket().
VALUE rsock_init_inetsock | ( | VALUE | sock, |
VALUE | remote_host, | ||
VALUE | remote_serv, | ||
VALUE | local_host, | ||
VALUE | local_serv, | ||
int | type | ||
) |
Definition at line 159 of file ipsocket.c.
References arg, rb_ensure(), and inetsock_arg::sock.
Definition at line 371 of file ipsocket.c.
References rb_cBasicSocket, rb_cIPSocket, rb_define_class(), and rb_define_method().
Referenced by rsock_init_socket_init().
Definition at line 78 of file init.c.
References EBADF, rb_io_t::fd, FMODE_DUPLEX, FMODE_NOREVLOOKUP, FMODE_READWRITE, is_socket, MakeOpenFile, rb_io_t::mode, rb_io_ascii8bit_binmode(), rb_io_synchronized(), rb_reserved_fd_p(), rb_syserr_fail(), rb_update_max_fd(), and rsock_do_not_reverse_lookup.
Definition at line 140 of file constants.c.
Referenced by rsock_init_socket_init().
Definition at line 818 of file init.c.
References rb_define_class(), rb_eSocket, rb_eStandardError, rsock_init_addrinfo(), rsock_init_ancdata(), rsock_init_ipsocket(), rsock_init_socket_constants(), rsock_init_sockifaddr(), rsock_init_sockopt(), rsock_init_sockssocket(), rsock_init_tcpserver(), rsock_init_tcpsocket(), rsock_init_udpsocket(), rsock_init_unixserver(), and rsock_init_unixsocket().
Referenced by Init_socket().
Definition at line 454 of file ifaddr.c.
References rb_cData, rb_cSocket, rb_define_class_under(), rb_define_method(), rb_define_singleton_method(), and socket_s_getifaddrs.
Referenced by rsock_init_socket_init().
Definition at line 1438 of file option.c.
References rb_cObject, rb_cSocket, rb_cSockOpt, rb_define_class_under(), and rb_define_method().
Referenced by rsock_init_socket_init().
Definition at line 58 of file sockssocket.c.
References rb_cTCPSocket, rb_define_class(), and rb_define_method().
Referenced by rsock_init_socket_init().
Definition at line 106 of file tcpserver.c.
References rb_cTCPServer, rb_cTCPSocket, rb_define_class(), and rb_define_method().
Referenced by rsock_init_socket_init().
Definition at line 68 of file tcpsocket.c.
References rb_cIPSocket, rb_cTCPSocket, rb_define_class(), and rb_define_singleton_method().
Referenced by rsock_init_socket_init().
Definition at line 230 of file udpsocket.c.
References rb_cIPSocket, rb_cUDPSocket, rb_define_class(), and rb_define_method().
Referenced by rsock_init_socket_init().
Definition at line 109 of file unixserver.c.
References rb_define_class(), rb_define_method(), rb_define_private_method(), and rsock_sock_listen().
Referenced by rsock_init_socket_init().
Definition at line 576 of file unixsocket.c.
References rb_cBasicSocket, rb_define_class(), rb_define_method(), and rb_define_singleton_method().
Referenced by rsock_init_socket_init().
Definition at line 1266 of file raddrinfo.c.
References union_sockaddr::addr, AF_UNSPEC, buf, error, getnameinfo(), i, IFNAMSIZ, int, ISPRINT, ISSPACE, len, NI_NUMERICHOST, NI_NUMERICSERV, NULL, offsetof, rb_id2name(), rb_str_cat(), rb_str_cat2, rb_str_catf(), rsock_intern_family(), and rsock_raise_socket_error().
Definition at line 2655 of file raddrinfo.c.
References rb_io_t::fd, FIX2INT, GetOpenFile, len, NUM2INT, Qnil, rb_eTypeError, rb_raise(), rsock_fd_socket_addrinfo(), T_BIGNUM, T_FILE, T_FIXNUM, TYPE, and UNREACHABLE_RETURN.
Definition at line 665 of file raddrinfo.c.
References atoi(), error, id, INT2FIX, NI_NUMERICHOST, NI_NUMERICSERV, NULL, Qnil, rb_ary_new3, rb_getnameinfo(), rb_id2str, rb_str_dup(), rb_str_new2, rsock_intern_family(), rsock_raise_socket_error(), and sprintf().
Definition at line 56 of file constants.c.
References IS_IP_FAMILY.
Definition at line 638 of file init.c.
References F_SETFL, fcntl(), connect_arg::fd, O_NONBLOCK, and rb_sys_fail().
VALUE rsock_make_hostent | ( | VALUE | host, |
struct rb_addrinfo * | addr, | ||
VALUE(*)(struct sockaddr *, socklen_t) | ipaddr | ||
) |
Definition at line 816 of file raddrinfo.c.
References hostent_arg::addr, arg, hostent_arg::host, hostent_arg::ipaddr, and rb_ensure().
Definition at line 470 of file raddrinfo.c.
Definition at line 68 of file constants.c.
References IS_IP_FAMILY.
Definition at line 179 of file ipsocket.c.
References Check_Type, id, Qfalse, Qnil, Qtrue, return_norevlookup, SYM2ID, and T_SYMBOL.
Definition at line 751 of file init.c.
References arg, BLOCKING_REGION_FD, accept_arg::fd, int, len, rsock_maybe_wait_fd, and accept_arg::sockaddr.
VALUE rsock_s_accept_nonblock | ( | VALUE | klass, |
VALUE | ex, | ||
rb_io_t * | fptr, | ||
struct sockaddr * | sockaddr, | ||
socklen_t * | len | ||
) |
Definition at line 709 of file init.c.
References rb_io_set_nonblock().
VALUE rsock_s_recvfrom | ( | VALUE | sock, |
int | argc, | ||
VALUE * | argv, | ||
enum sock_recv_type | from | ||
) |
VALUE rsock_s_recvfrom_nonblock | ( | VALUE | sock, |
VALUE | len, | ||
VALUE | flg, | ||
VALUE | str, | ||
VALUE | ex, | ||
enum sock_recv_type | from | ||
) |
Definition at line 231 of file init.c.
References recvfrom_arg::alen, buf, recvfrom_arg::fd, recvfrom_arg::flags, len, NUM2INT, Qnil, and str.
Definition at line 111 of file init.c.
References arg, do_write_retry, rsock_send_arg::mesg, RSTRING_LEN, and RSTRING_PTR.
Referenced by rsock_bsock_send().
Definition at line 100 of file init.c.
References arg, do_write_retry, rsock_send_arg::mesg, RSTRING_LEN, and RSTRING_PTR.
Referenced by rsock_bsock_send().
Definition at line 130 of file constants.c.
Definition at line 653 of file socket.c.
References rb_io_t::fd, GetOpenFile, INT2FIX, log(), NUM2INT, and rb_sys_fail().
Referenced by rsock_init_unixserver().
socklen_t rsock_sockaddr_len | ( | struct sockaddr * | addr | ) |
Definition at line 2597 of file raddrinfo.c.
References IS_ADDRINFO, and v.
Referenced by rsock_sockaddr_string_value_ptr().
Definition at line 2621 of file raddrinfo.c.
References rsock_sockaddr_string_value(), RSTRING_PTR, and v.
Definition at line 2608 of file raddrinfo.c.
References IS_ADDRINFO, Qnil, and v.
Definition at line 491 of file init.c.
References recvfrom_arg::fd.
Definition at line 107 of file option.c.
References NEWOBJ_OF, obj, rb_cSockOpt, StringValue(), and T_OBJECT.
Definition at line 49 of file constants.c.
|
extern |
Definition at line 17 of file init.c.
Referenced by Init_socket(), rsock_init_basicsocket(), rsock_init_ipsocket(), and rsock_init_unixsocket().
|
extern |
Definition at line 18 of file init.c.
Referenced by rsock_init_ipsocket(), rsock_init_tcpsocket(), and rsock_init_udpsocket().
|
extern |
Definition at line 26 of file init.c.
Referenced by Init_socket(), rsock_init_ancdata(), rsock_init_sockifaddr(), and rsock_init_sockopt().
|
extern |
Definition at line 3 of file option.c.
Referenced by rsock_init_sockopt(), and rsock_sockopt_new().
|
extern |
Definition at line 20 of file init.c.
Referenced by rsock_init_tcpserver().
|
extern |
Definition at line 19 of file init.c.
Referenced by rsock_init_sockssocket(), rsock_init_tcpserver(), and rsock_init_tcpsocket().
|
extern |
Definition at line 21 of file init.c.
Referenced by rsock_init_udpsocket().
|
extern |
Definition at line 29 of file init.c.
Referenced by rsock_init_socket_init().
|
extern |
Definition at line 35 of file init.c.
Referenced by rsock_init_sock().