diff options
| author | 2020-01-26 11:26:54 +0000 | |
|---|---|---|
| committer | 2020-01-26 11:26:54 +0000 | |
| commit | 05861d9ba4b3d983596883a1d15b75543dcbf285 (patch) | |
| tree | 4a142e5f3d3b2343e0aec6e6685a06ff912ab76b /usr.sbin/bind/lib/isc/unix/socket.c | |
| parent | reduce isc/stdio to what is used (diff) | |
| download | wireguard-openbsd-05861d9ba4b3d983596883a1d15b75543dcbf285.tar.xz wireguard-openbsd-05861d9ba4b3d983596883a1d15b75543dcbf285.zip | |
Remove unused code from socket.c
OK tedu
Diffstat (limited to 'usr.sbin/bind/lib/isc/unix/socket.c')
| -rw-r--r-- | usr.sbin/bind/lib/isc/unix/socket.c | 608 |
1 files changed, 18 insertions, 590 deletions
diff --git a/usr.sbin/bind/lib/isc/unix/socket.c b/usr.sbin/bind/lib/isc/unix/socket.c index 2c18d2b2cad..a3cd07937c2 100644 --- a/usr.sbin/bind/lib/isc/unix/socket.c +++ b/usr.sbin/bind/lib/isc/unix/socket.c @@ -172,8 +172,6 @@ struct isc__socket { unsigned int references; int fd; int pf; - char name[16]; - void * tag; ISC_LIST(isc_socketevent_t) send_list; ISC_LIST(isc_socketevent_t) recv_list; @@ -194,7 +192,6 @@ struct isc__socket { connected : 1, connecting : 1, /* connect pending */ bound : 1, /* bound to local addr */ - dupped : 1, active : 1, /* currently active */ pktdscp : 1; /* per packet dscp */ unsigned int dscp; @@ -219,9 +216,7 @@ struct isc__socketmgr { fd_set *write_fds; fd_set *write_fds_copy; int maxfd; - int reserved; /* unlocked */ unsigned int refs; - int maxudp; }; static isc__socketmgr_t *socketmgr = NULL; @@ -238,8 +233,7 @@ static isc__socketmgr_t *socketmgr = NULL; static isc_result_t socket_create(isc_socketmgr_t *manager0, int pf, isc_sockettype_t type, - isc_socket_t **socketp, - isc_socket_t *dup_socket); + isc_socket_t **socketp); static void send_recvdone_event(isc__socket_t *, isc_socketevent_t **); static void send_senddone_event(isc__socket_t *, isc_socketevent_t **); static void free_socket(isc__socket_t **); @@ -254,7 +248,6 @@ static void build_msghdr_send(isc__socket_t *, char *, isc_socketevent_t *, struct msghdr *, struct iovec *, size_t *); static void build_msghdr_recv(isc__socket_t *, char *, isc_socketevent_t *, struct msghdr *, struct iovec *, size_t *); -static void setdscp(isc__socket_t *sock, isc_dscp_t dscp); /*% * The following are intended for internal use (indicated by "isc__" @@ -263,10 +256,6 @@ static void setdscp(isc__socket_t *sock, isc_dscp_t dscp); */ isc_result_t -isc__socket_open(isc_socket_t *sock0); -isc_result_t -isc__socket_close(isc_socket_t *sock0); -isc_result_t isc__socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type, isc_socket_t **socketp); void @@ -278,69 +267,22 @@ isc__socket_recvv(isc_socket_t *sock, isc_bufferlist_t *buflist, unsigned int minimum, isc_task_t *task, isc_taskaction_t action, void *arg); isc_result_t -isc__socket_recv(isc_socket_t *sock, isc_region_t *region, - unsigned int minimum, isc_task_t *task, - isc_taskaction_t action, void *arg); -isc_result_t -isc__socket_recv2(isc_socket_t *sock, isc_region_t *region, - unsigned int minimum, isc_task_t *task, - isc_socketevent_t *event, unsigned int flags); -isc_result_t -isc__socket_send(isc_socket_t *sock, isc_region_t *region, - isc_task_t *task, isc_taskaction_t action, void *arg); -isc_result_t -isc__socket_sendto(isc_socket_t *sock, isc_region_t *region, - isc_task_t *task, isc_taskaction_t action, void *arg, - isc_sockaddr_t *address, struct in6_pktinfo *pktinfo); -isc_result_t isc__socket_sendv(isc_socket_t *sock, isc_bufferlist_t *buflist, isc_task_t *task, isc_taskaction_t action, void *arg); isc_result_t -isc__socket_sendtov(isc_socket_t *sock, isc_bufferlist_t *buflist, - isc_task_t *task, isc_taskaction_t action, void *arg, - isc_sockaddr_t *address, struct in6_pktinfo *pktinfo); -isc_result_t isc__socket_sendtov2(isc_socket_t *sock, isc_bufferlist_t *buflist, isc_task_t *task, isc_taskaction_t action, void *arg, isc_sockaddr_t *address, struct in6_pktinfo *pktinfo, unsigned int flags); isc_result_t -isc__socket_sendto2(isc_socket_t *sock, isc_region_t *region, - isc_task_t *task, - isc_sockaddr_t *address, struct in6_pktinfo *pktinfo, - isc_socketevent_t *event, unsigned int flags); -isc_socketevent_t * -isc_socket_socketevent(void *sender, - isc_eventtype_t eventtype, isc_taskaction_t action, - void *arg); - -isc_result_t isc__socket_bind(isc_socket_t *sock, isc_sockaddr_t *sockaddr, unsigned int options); isc_result_t -isc__socket_filter(isc_socket_t *sock, const char *filter); -isc_result_t isc__socket_connect(isc_socket_t *sock, isc_sockaddr_t *addr, isc_task_t *task, isc_taskaction_t action, void *arg); -isc_result_t -isc__socket_getpeername(isc_socket_t *sock, isc_sockaddr_t *addressp); -isc_result_t -isc__socket_getsockname(isc_socket_t *sock, isc_sockaddr_t *addressp); void isc__socket_cancel(isc_socket_t *sock, isc_task_t *task, unsigned int how); -isc_sockettype_t -isc__socket_gettype(isc_socket_t *sock); -isc_boolean_t -isc__socket_isbound(isc_socket_t *sock); -void -isc__socket_ipv6only(isc_socket_t *sock, isc_boolean_t yes); -void -isc__socket_dscp(isc_socket_t *sock, isc_dscp_t dscp); -isc_result_t -isc__socket_dup(isc_socket_t *sock, isc_socket_t **socketp); -int -isc__socket_getfd(isc_socket_t *sock); isc_result_t isc__socketmgr_create(isc_socketmgr_t **managerp); @@ -351,12 +293,6 @@ isc_result_t isc_socketmgr_getmaxsockets(isc_socketmgr_t *manager0, unsigned int *nsockp); void isc__socketmgr_destroy(isc_socketmgr_t **managerp); -void -isc__socket_setname(isc_socket_t *socket0, const char *name, void *tag); -const char * -isc__socket_getname(isc_socket_t *socket0); -void * -isc__socket_gettag(isc_socket_t *socket0); static struct { isc_socketmethods_t methods; @@ -364,28 +300,17 @@ static struct { /*% * The following are defined just for avoiding unused static functions. */ - void *recvv, *send, *sendv, *sendto2, *isbound; + void *recvv, *sendv; } socketmethods = { { isc__socket_attach, isc__socket_detach, isc__socket_bind, - isc__socket_sendto, - isc__socket_sendto2, isc__socket_connect, - isc__socket_recv, - isc__socket_recv2, isc__socket_cancel, - isc__socket_getsockname, - isc__socket_gettype, - isc__socket_ipv6only, - isc__socket_dup, - isc__socket_getfd, - isc__socket_dscp }, - (void *)isc__socket_recvv, (void *)isc__socket_send, - (void *)isc__socket_sendv, (void *)isc__socket_sendto2, - (void *)isc__socket_isbound + (void *)isc__socket_recvv, + (void *)isc__socket_sendv, }; static isc_socketmgrmethods_t socketmgrmethods = { @@ -1111,12 +1036,6 @@ doio_recv(isc__socket_t *sock, isc_socketevent_t *dev) { } return (DOIO_SOFT); } - /* - * Simulate a firewall blocking UDP responses bigger than - * 'maxudp' bytes. - */ - if (sock->manager->maxudp != 0 && cc > sock->manager->maxudp) - return (DOIO_SOFT); } socket_log(sock, &dev->address, IOEVENT, @@ -1199,12 +1118,7 @@ doio_send(isc__socket_t *sock, isc_socketevent_t *dev) { build_msghdr_send(sock, cmsgbuf, dev, &msghdr, iov, &write_count); resend: - if (sock->type == isc_sockettype_udp && - sock->manager->maxudp != 0 && - write_count > (size_t)sock->manager->maxudp) - cc = write_count; - else - cc = sendmsg(sock->fd, &msghdr, 0); + cc = sendmsg(sock->fd, &msghdr, 0); send_errno = errno; /* @@ -1370,15 +1284,10 @@ allocate_socket(isc__socketmgr_t *manager, isc_sockettype_t type, sock->type = type; sock->fd = -1; sock->dscp = 0; /* TOS/TCLASS is zero until set. */ - sock->dupped = 0; sock->active = 0; ISC_LINK_INIT(sock, link); - - memset(sock->name, 0, sizeof(sock->name)); - sock->tag = NULL; - /* * Set up list of readers and writers to be initially empty. */ @@ -1455,58 +1364,20 @@ set_tcp_maxseg(isc__socket_t *sock, int size) { } static isc_result_t -opensocket(isc__socketmgr_t *manager, isc__socket_t *sock, - isc__socket_t *dup_socket) +opensocket(isc__socket_t *sock) { isc_result_t result; char strbuf[ISC_STRERRORSIZE]; const char *err = "socket"; int on = 1; - if (dup_socket == NULL) { - switch (sock->type) { - case isc_sockettype_udp: - sock->fd = socket(sock->pf, SOCK_DGRAM | SOCK_DNS, IPPROTO_UDP); - break; - case isc_sockettype_tcp: - sock->fd = socket(sock->pf, SOCK_STREAM | SOCK_DNS, IPPROTO_TCP); - break; - } - } else { - sock->fd = dup(dup_socket->fd); - sock->dupped = 1; - sock->bound = dup_socket->bound; - } - - /* - * Leave a space for stdio and TCP to work in. - */ - if (manager->reserved != 0 && sock->type == isc_sockettype_udp && - sock->fd >= 0 && sock->fd < manager->reserved) { - int newfd, tmp; - newfd = fcntl(sock->fd, F_DUPFD, manager->reserved); - tmp = errno; - (void)close(sock->fd); - errno = tmp; - sock->fd = newfd; - err = "isc_socket_create: fcntl/reserved"; - } else if (sock->fd >= 0 && sock->fd < 20) { - int newfd, tmp; - newfd = fcntl(sock->fd, F_DUPFD, 20); - tmp = errno; - (void)close(sock->fd); - errno = tmp; - sock->fd = newfd; - err = "isc_socket_create: fcntl"; - } - - if (sock->fd >= (int)manager->maxsocks) { - (void)close(sock->fd); - isc_log_write(isc_lctx, ISC_LOGCATEGORY_GENERAL, - ISC_LOGMODULE_SOCKET, ISC_LOG_ERROR, - "socket: file descriptor exceeds limit (%d/%u)", - sock->fd, manager->maxsocks); - return (ISC_R_NORESOURCES); + switch (sock->type) { + case isc_sockettype_udp: + sock->fd = socket(sock->pf, SOCK_DGRAM | SOCK_DNS, IPPROTO_UDP); + break; + case isc_sockettype_tcp: + sock->fd = socket(sock->pf, SOCK_STREAM | SOCK_DNS, IPPROTO_TCP); + break; } if (sock->fd < 0) { @@ -1540,9 +1411,6 @@ opensocket(isc__socketmgr_t *manager, isc__socket_t *sock, } } - if (dup_socket != NULL) - goto setup_done; - result = make_nonblock(sock->fd); if (result != ISC_R_SUCCESS) { (void)close(sock->fd); @@ -1581,7 +1449,6 @@ opensocket(isc__socketmgr_t *manager, isc__socket_t *sock, } } -setup_done: if (sock->active == 0) { sock->active = 1; } @@ -1590,14 +1457,14 @@ setup_done: } /* - * Create a 'type' socket or duplicate an existing socket, managed + * Create a 'type' socket managed * by 'manager'. Events will be posted to 'task' and when dispatched * 'action' will be called with 'arg' as the arg value. The new * socket is returned in 'socketp'. */ static isc_result_t socket_create(isc_socketmgr_t *manager0, int pf, isc_sockettype_t type, - isc_socket_t **socketp, isc_socket_t *dup_socket) + isc_socket_t **socketp) { isc__socket_t *sock = NULL; isc__socketmgr_t *manager = (isc__socketmgr_t *)manager0; @@ -1624,7 +1491,7 @@ socket_create(isc_socketmgr_t *manager0, int pf, isc_sockettype_t type, sock->pf = pf; - result = opensocket(manager, sock, (isc__socket_t *)dup_socket); + result = opensocket(sock); if (result != ISC_R_SUCCESS) { free_socket(&sock); return (result); @@ -1647,7 +1514,7 @@ socket_create(isc_socketmgr_t *manager0, int pf, isc_sockettype_t type, if (manager->maxfd < sock->fd) manager->maxfd = sock->fd; - socket_log(sock, NULL, CREATION, dup_socket != NULL ? "dupped" : "created"); + socket_log(sock, NULL, CREATION, "created"); return (ISC_R_SUCCESS); } @@ -1662,53 +1529,7 @@ isc_result_t isc__socket_create(isc_socketmgr_t *manager0, int pf, isc_sockettype_t type, isc_socket_t **socketp) { - return (socket_create(manager0, pf, type, socketp, NULL)); -} - -/*% - * Duplicate an existing socket. The new socket is returned - * in 'socketp'. - */ -isc_result_t -isc__socket_dup(isc_socket_t *sock0, isc_socket_t **socketp) { - isc__socket_t *sock = (isc__socket_t *)sock0; - - REQUIRE(VALID_SOCKET(sock)); - REQUIRE(socketp != NULL && *socketp == NULL); - - return (socket_create((isc_socketmgr_t *) sock->manager, - sock->pf, sock->type, socketp, - sock0)); -} - -isc_result_t -isc__socket_open(isc_socket_t *sock0) { - isc_result_t result; - isc__socket_t *sock = (isc__socket_t *)sock0; - - REQUIRE(VALID_SOCKET(sock)); - - REQUIRE(sock->references == 1); - /* - * We don't need to retain the lock hereafter, since no one else has - * this socket. - */ - REQUIRE(sock->fd == -1); - - result = opensocket(sock->manager, sock, NULL); - if (result != ISC_R_SUCCESS) - sock->fd = -1; - - if (result == ISC_R_SUCCESS) { - - sock->manager->fds[sock->fd] = sock; - sock->manager->fdstate[sock->fd] = MANAGED; - - if (sock->manager->maxfd < sock->fd) - sock->manager->maxfd = sock->fd; - } - - return (result); + return (socket_create(manager0, pf, type, socketp)); } /* @@ -1750,43 +1571,6 @@ isc__socket_detach(isc_socket_t **socketp) { *socketp = NULL; } -isc_result_t -isc__socket_close(isc_socket_t *sock0) { - isc__socket_t *sock = (isc__socket_t *)sock0; - int fd; - isc__socketmgr_t *manager; - - fflush(stdout); - REQUIRE(VALID_SOCKET(sock)); - - - REQUIRE(sock->references == 1); - REQUIRE(sock->fd >= 0 && sock->fd < (int)sock->manager->maxsocks); - - INSIST(!sock->connecting); - INSIST(!sock->pending_recv); - INSIST(!sock->pending_send); - INSIST(ISC_LIST_EMPTY(sock->recv_list)); - INSIST(ISC_LIST_EMPTY(sock->send_list)); - INSIST(sock->connect_ev == NULL); - - manager = sock->manager; - fd = sock->fd; - sock->fd = -1; - sock->dupped = 0; - memset(sock->name, 0, sizeof(sock->name)); - sock->tag = NULL; - sock->connected = 0; - sock->connecting = 0; - sock->bound = 0; - isc_sockaddr_any(&sock->peer_address); - - - socketclose(manager, sock, fd); - - return (ISC_R_SUCCESS); -} - /* * I/O is possible on a given socket. Schedule an event to this task that * will call an internal function to do the I/O. This will charge the @@ -2098,24 +1882,6 @@ process_fds(isc__socketmgr_t *manager, int maxfd, fd_set *readfds, } } -void -isc__socketmgr_setreserved(isc_socketmgr_t *manager0, uint32_t reserved) { - isc__socketmgr_t *manager = (isc__socketmgr_t *)manager0; - - REQUIRE(VALID_MANAGER(manager)); - - manager->reserved = reserved; -} - -void -isc__socketmgr_maxudp(isc_socketmgr_t *manager0, int maxudp) { - isc__socketmgr_t *manager = (isc__socketmgr_t *)manager0; - - REQUIRE(VALID_MANAGER(manager)); - - manager->maxudp = maxudp; -} - /* * Create a new socket manager. */ @@ -2208,8 +1974,6 @@ isc__socketmgr_create2(isc_socketmgr_t **managerp, /* zero-clear so that necessary cleanup on failure will be easy */ memset(manager, 0, sizeof(*manager)); manager->maxsocks = maxsocks; - manager->reserved = 0; - manager->maxudp = 0; manager->fds = malloc(manager->maxsocks * sizeof(isc__socket_t *)); if (manager->fds == NULL) { result = ISC_R_NOMEMORY; @@ -2257,17 +2021,6 @@ free_manager: return (result); } -isc_result_t -isc_socketmgr_getmaxsockets(isc_socketmgr_t *manager0, unsigned int *nsockp) { - isc__socketmgr_t *manager = (isc__socketmgr_t *)manager0; - REQUIRE(VALID_MANAGER(manager)); - REQUIRE(nsockp != NULL); - - *nsockp = manager->maxsocks; - - return (ISC_R_SUCCESS); -} - void isc__socketmgr_destroy(isc_socketmgr_t **managerp) { isc__socketmgr_t *manager; @@ -2438,61 +2191,6 @@ isc__socket_recvv(isc_socket_t *sock0, isc_bufferlist_t *buflist, return (socket_recv(sock, dev, task, 0)); } -isc_result_t -isc__socket_recv(isc_socket_t *sock0, isc_region_t *region, - unsigned int minimum, isc_task_t *task, - isc_taskaction_t action, void *arg) -{ - isc__socket_t *sock = (isc__socket_t *)sock0; - isc_socketevent_t *dev; - isc__socketmgr_t *manager; - - REQUIRE(VALID_SOCKET(sock)); - REQUIRE(action != NULL); - - manager = sock->manager; - REQUIRE(VALID_MANAGER(manager)); - - INSIST(sock->bound); - - dev = allocate_socketevent(sock, - ISC_SOCKEVENT_RECVDONE, action, arg); - if (dev == NULL) - return (ISC_R_NOMEMORY); - - return (isc__socket_recv2(sock0, region, minimum, task, dev, 0)); -} - -isc_result_t -isc__socket_recv2(isc_socket_t *sock0, isc_region_t *region, - unsigned int minimum, isc_task_t *task, - isc_socketevent_t *event, unsigned int flags) -{ - isc__socket_t *sock = (isc__socket_t *)sock0; - - event->ev_sender = sock; - event->result = ISC_R_UNSET; - ISC_LIST_INIT(event->bufferlist); - event->region = *region; - event->n = 0; - event->offset = 0; - event->attributes = 0; - - /* - * UDP sockets are always partial read. - */ - if (sock->type == isc_sockettype_udp) - event->minimum = 1; - else { - if (minimum == 0) - event->minimum = region->length; - else - event->minimum = minimum; - } - - return (socket_recv(sock, event, task, flags)); -} - static isc_result_t socket_send(isc__socket_t *sock, isc_socketevent_t *dev, isc_task_t *task, isc_sockaddr_t *address, struct in6_pktinfo *pktinfo, @@ -2575,46 +2273,6 @@ socket_send(isc__socket_t *sock, isc_socketevent_t *dev, isc_task_t *task, } isc_result_t -isc__socket_send(isc_socket_t *sock, isc_region_t *region, - isc_task_t *task, isc_taskaction_t action, void *arg) -{ - /* - * REQUIRE() checking is performed in isc_socket_sendto(). - */ - return (isc__socket_sendto(sock, region, task, action, arg, NULL, - NULL)); -} - -isc_result_t -isc__socket_sendto(isc_socket_t *sock0, isc_region_t *region, - isc_task_t *task, isc_taskaction_t action, void *arg, - isc_sockaddr_t *address, struct in6_pktinfo *pktinfo) -{ - isc__socket_t *sock = (isc__socket_t *)sock0; - isc_socketevent_t *dev; - isc__socketmgr_t *manager; - - REQUIRE(VALID_SOCKET(sock)); - REQUIRE(region != NULL); - REQUIRE(task != NULL); - REQUIRE(action != NULL); - - manager = sock->manager; - REQUIRE(VALID_MANAGER(manager)); - - INSIST(sock->bound); - - dev = allocate_socketevent(sock, - ISC_SOCKEVENT_SENDDONE, action, arg); - if (dev == NULL) - return (ISC_R_NOMEMORY); - - dev->region = *region; - - return (socket_send(sock, dev, task, address, pktinfo, 0)); -} - -isc_result_t isc__socket_sendv(isc_socket_t *sock, isc_bufferlist_t *buflist, isc_task_t *task, isc_taskaction_t action, void *arg) { @@ -2623,15 +2281,6 @@ isc__socket_sendv(isc_socket_t *sock, isc_bufferlist_t *buflist, } isc_result_t -isc__socket_sendtov(isc_socket_t *sock, isc_bufferlist_t *buflist, - isc_task_t *task, isc_taskaction_t action, void *arg, - isc_sockaddr_t *address, struct in6_pktinfo *pktinfo) -{ - return (isc__socket_sendtov2(sock, buflist, task, action, arg, address, - pktinfo, 0)); -} - -isc_result_t isc__socket_sendtov2(isc_socket_t *sock0, isc_bufferlist_t *buflist, isc_task_t *task, isc_taskaction_t action, void *arg, isc_sockaddr_t *address, struct in6_pktinfo *pktinfo, @@ -2674,30 +2323,6 @@ isc__socket_sendtov2(isc_socket_t *sock0, isc_bufferlist_t *buflist, } isc_result_t -isc__socket_sendto2(isc_socket_t *sock0, isc_region_t *region, - isc_task_t *task, - isc_sockaddr_t *address, struct in6_pktinfo *pktinfo, - isc_socketevent_t *event, unsigned int flags) -{ - isc__socket_t *sock = (isc__socket_t *)sock0; - - REQUIRE(VALID_SOCKET(sock)); - REQUIRE((flags & ~(ISC_SOCKFLAG_IMMEDIATE|ISC_SOCKFLAG_NORETRY)) == 0); - if ((flags & ISC_SOCKFLAG_NORETRY) != 0) - REQUIRE(sock->type == isc_sockettype_udp); - event->ev_sender = sock; - event->result = ISC_R_UNSET; - ISC_LIST_INIT(event->bufferlist); - event->region = *region; - event->n = 0; - event->offset = 0; - event->attributes &= ~ISC_SOCKEVENTATTR_ATTACHED; - - return (socket_send(sock, event, task, address, pktinfo, flags)); -} - - -isc_result_t isc__socket_bind(isc_socket_t *sock0, isc_sockaddr_t *sockaddr, unsigned int options) { isc__socket_t *sock = (isc__socket_t *)sock0; @@ -2707,7 +2332,6 @@ isc__socket_bind(isc_socket_t *sock0, isc_sockaddr_t *sockaddr, REQUIRE(VALID_SOCKET(sock)); INSIST(!sock->bound); - INSIST(!sock->dupped); if (sock->pf != sockaddr->type.sa.sa_family) { return (ISC_R_FAMILYMISMATCH); @@ -2749,17 +2373,6 @@ isc__socket_bind(isc_socket_t *sock0, isc_sockaddr_t *sockaddr, } isc_result_t -isc__socket_filter(isc_socket_t *sock0, const char *filter) { - isc__socket_t *sock = (isc__socket_t *)sock0; - UNUSED(sock); - UNUSED(filter); - - REQUIRE(VALID_SOCKET(sock)); - - return (ISC_R_NOTIMPLEMENTED); -} - -isc_result_t isc__socket_connect(isc_socket_t *sock0, isc_sockaddr_t *addr, isc_task_t *task, isc_taskaction_t action, void *arg) { @@ -2993,55 +2606,6 @@ internal_connect(isc_task_t *me, isc_event_t *ev) { isc_task_sendanddetach(&task, ISC_EVENT_PTR(&dev)); } -isc_result_t -isc__socket_getpeername(isc_socket_t *sock0, isc_sockaddr_t *addressp) { - isc__socket_t *sock = (isc__socket_t *)sock0; - isc_result_t result; - - REQUIRE(VALID_SOCKET(sock)); - REQUIRE(addressp != NULL); - - if (sock->connected) { - *addressp = sock->peer_address; - result = ISC_R_SUCCESS; - } else { - result = ISC_R_NOTCONNECTED; - } - - return (result); -} - -isc_result_t -isc__socket_getsockname(isc_socket_t *sock0, isc_sockaddr_t *addressp) { - isc__socket_t *sock = (isc__socket_t *)sock0; - socklen_t len; - isc_result_t result; - char strbuf[ISC_STRERRORSIZE]; - - REQUIRE(VALID_SOCKET(sock)); - REQUIRE(addressp != NULL); - - if (!sock->bound) { - result = ISC_R_NOTBOUND; - goto out; - } - - result = ISC_R_SUCCESS; - - len = sizeof(addressp->type); - if (getsockname(sock->fd, &addressp->type.sa, (void *)&len) < 0) { - isc__strerror(errno, strbuf, sizeof(strbuf)); - UNEXPECTED_ERROR(__FILE__, __LINE__, "getsockname: %s", - strbuf); - result = ISC_R_UNEXPECTED; - goto out; - } - addressp->length = (unsigned int)len; - - out: - return (result); -} - /* * Run through the list of events on this socket, and cancel the ones * queued for task "task" of type "how". "how" is a bitmask. @@ -3135,102 +2699,6 @@ isc__socket_cancel(isc_socket_t *sock0, isc_task_t *task, unsigned int how) { } -isc_sockettype_t -isc__socket_gettype(isc_socket_t *sock0) { - isc__socket_t *sock = (isc__socket_t *)sock0; - - REQUIRE(VALID_SOCKET(sock)); - - return (sock->type); -} - -isc_boolean_t -isc__socket_isbound(isc_socket_t *sock0) { - isc__socket_t *sock = (isc__socket_t *)sock0; - isc_boolean_t val; - - REQUIRE(VALID_SOCKET(sock)); - - val = ((sock->bound) ? ISC_TRUE : ISC_FALSE); - return (val); -} - -void -isc__socket_ipv6only(isc_socket_t *sock0, isc_boolean_t yes) { - isc__socket_t *sock = (isc__socket_t *)sock0; - int onoff = yes ? 1 : 0; - - REQUIRE(VALID_SOCKET(sock)); - INSIST(!sock->dupped); - - if (sock->pf == AF_INET6) { - if (setsockopt(sock->fd, IPPROTO_IPV6, IPV6_V6ONLY, - (void *)&onoff, sizeof(int)) < 0) { - char strbuf[ISC_STRERRORSIZE]; - isc__strerror(errno, strbuf, sizeof(strbuf)); - UNEXPECTED_ERROR(__FILE__, __LINE__, - "setsockopt(%d, IPV6_V6ONLY) " - "%s: %s", sock->fd, "failed", - strbuf); - } - } -} - -static void -setdscp(isc__socket_t *sock, isc_dscp_t dscp) { - int value = dscp << 2; - - sock->dscp = dscp; - - if (sock->pf == AF_INET) { - if (setsockopt(sock->fd, IPPROTO_IP, IP_TOS, - (void *)&value, sizeof(value)) < 0) { - char strbuf[ISC_STRERRORSIZE]; - isc__strerror(errno, strbuf, sizeof(strbuf)); - UNEXPECTED_ERROR(__FILE__, __LINE__, - "setsockopt(%d, IP_TOS, %.02x) " - "%s: %s", sock->fd, value >> 2, - "failed", strbuf); - } - } - if (sock->pf == AF_INET6) { - if (setsockopt(sock->fd, IPPROTO_IPV6, IPV6_TCLASS, - (void *)&value, sizeof(value)) < 0) { - char strbuf[ISC_STRERRORSIZE]; - isc__strerror(errno, strbuf, sizeof(strbuf)); - UNEXPECTED_ERROR(__FILE__, __LINE__, - "setsockopt(%d, IPV6_TCLASS, %.02x) " - "%s: %s", sock->fd, dscp >> 2, - "failed", strbuf); - } - } -} - -void -isc__socket_dscp(isc_socket_t *sock0, isc_dscp_t dscp) { - isc__socket_t *sock = (isc__socket_t *)sock0; - - REQUIRE(VALID_SOCKET(sock)); - REQUIRE(dscp < 0x40); - - if (dscp < 0) - return; - - /* The DSCP value must not be changed once it has been set. */ - if (isc_dscp_check_value != -1) - INSIST(dscp == isc_dscp_check_value); - - setdscp(sock, dscp); -} - -isc_socketevent_t * -isc_socket_socketevent(void *sender, - isc_eventtype_t eventtype, isc_taskaction_t action, - void *arg) -{ - return (allocate_socketevent(sender, eventtype, action, arg)); -} - /* * In our assumed scenario, we can simply use a single static object. * XXX: this is not true if the application uses multiple threads with @@ -3282,44 +2750,4 @@ isc__socketmgr_dispatch(isc_socketmgr_t *manager0, isc_socketwait_t *swait) { return (ISC_R_SUCCESS); } -void -isc__socket_setname(isc_socket_t *socket0, const char *name, void *tag) { - isc__socket_t *sock = (isc__socket_t *)socket0; - - /* - * Name 'sock'. - */ - - REQUIRE(VALID_SOCKET(sock)); - - strlcpy(sock->name, name, sizeof(sock->name)); - sock->tag = tag; -} - -const char * -isc__socket_getname(isc_socket_t *socket0) { - isc__socket_t *sock = (isc__socket_t *)socket0; - - return (sock->name); -} - -void * -isc__socket_gettag(isc_socket_t *socket0) { - isc__socket_t *sock = (isc__socket_t *)socket0; - - return (sock->tag); -} - -isc_result_t -isc__socket_register(void) { - return (isc_socket_register(isc__socketmgr_create)); -} - -int -isc__socket_getfd(isc_socket_t *socket0) { - isc__socket_t *sock = (isc__socket_t *)socket0; - - return ((short) sock->fd); -} - #include "../socket_api.c" |
