From: Witold Kręcicki Date: Mon, 6 Aug 2018 11:00:55 +0000 (+0200) Subject: Remove layering from isc_task, isc_app, isc_socket, isc_timer, isc_mem X-Git-Tag: v9.13.4~114^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=38a127c35b3fafa96277374d2eb99b36c9f6baa2;p=thirdparty%2Fbind9.git Remove layering from isc_task, isc_app, isc_socket, isc_timer, isc_mem --- diff --git a/bin/named/main.c b/bin/named/main.c index 171a585fa35..cf0dbe54a0a 100644 --- a/bin/named/main.c +++ b/bin/named/main.c @@ -831,7 +831,7 @@ create_managers(void) { isc_result_totext(result)); return (ISC_R_UNEXPECTED); } - isc__socketmgr_maxudp(named_g_socketmgr, maxudp); + isc_socketmgr_maxudp(named_g_socketmgr, maxudp); result = isc_socketmgr_getmaxsockets(named_g_socketmgr, &socks); if (result == ISC_R_SUCCESS) { isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL, diff --git a/bin/named/server.c b/bin/named/server.c index 57a023798b0..d94b05ef3e2 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -8120,7 +8120,7 @@ load_configuration(const char *filename, named_server_t *server, "less than 128 UDP sockets available after " "applying 'reserved-sockets' and 'maxsockets'"); } - isc__socketmgr_setreserved(named_g_socketmgr, reserved); + isc_socketmgr_setreserved(named_g_socketmgr, reserved); #ifdef HAVE_GEOIP /* diff --git a/lib/isc/app_api.c b/lib/isc/app_api.c deleted file mode 100644 index e4276f44c68..00000000000 --- a/lib/isc/app_api.c +++ /dev/null @@ -1,185 +0,0 @@ -/* - * Copyright (C) Internet Systems Consortium, Inc. ("ISC") - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * See the COPYRIGHT file distributed with this work for additional - * information regarding copyright ownership. - */ - - -#include - -#include -#include - -#include -#include -#include -#include -#include - -static isc_mutex_t createlock; -static isc_once_t once = ISC_ONCE_INIT; -static isc_appctxcreatefunc_t appctx_createfunc = NULL; -static bool is_running = false; - -#define ISCAPI_APPMETHODS_VALID(m) ISC_MAGIC_VALID(m, ISCAPI_APPMETHODS_MAGIC) - -static void -initialize(void) { - RUNTIME_CHECK(isc_mutex_init(&createlock) == ISC_R_SUCCESS); -} - -isc_result_t -isc_app_register(isc_appctxcreatefunc_t createfunc) { - isc_result_t result = ISC_R_SUCCESS; - - RUNTIME_CHECK(isc_once_do(&once, initialize) == ISC_R_SUCCESS); - - LOCK(&createlock); - if (appctx_createfunc == NULL) - appctx_createfunc = createfunc; - else - result = ISC_R_EXISTS; - UNLOCK(&createlock); - - return (result); -} - -isc_result_t -isc_appctx_create(isc_mem_t *mctx, isc_appctx_t **ctxp) { - return (isc__appctx_create(mctx, ctxp)); -} - -void -isc_appctx_destroy(isc_appctx_t **ctxp) { - REQUIRE(ctxp != NULL && ISCAPI_APPCTX_VALID(*ctxp)); - - isc__appctx_destroy(ctxp); - ENSURE(*ctxp == NULL); -} - -isc_result_t -isc_app_ctxstart(isc_appctx_t *ctx) { - REQUIRE(ISCAPI_APPCTX_VALID(ctx)); - - return (isc__app_ctxstart(ctx)); -} - -isc_result_t -isc_app_ctxrun(isc_appctx_t *ctx) { - REQUIRE(ISCAPI_APPCTX_VALID(ctx)); - - return (isc__app_ctxrun(ctx)); -} - -isc_result_t -isc_app_ctxonrun(isc_appctx_t *ctx, isc_mem_t *mctx, - isc_task_t *task, isc_taskaction_t action, - void *arg) -{ - REQUIRE(ISCAPI_APPCTX_VALID(ctx)); - - return (isc__app_ctxonrun(ctx, mctx, task, action, arg)); -} - -isc_result_t -isc_app_ctxsuspend(isc_appctx_t *ctx) { - REQUIRE(ISCAPI_APPCTX_VALID(ctx)); - - return (isc__app_ctxsuspend(ctx)); -} - -isc_result_t -isc_app_ctxshutdown(isc_appctx_t *ctx) { - REQUIRE(ISCAPI_APPCTX_VALID(ctx)); - - return (isc__app_ctxshutdown(ctx)); -} - -void -isc_app_ctxfinish(isc_appctx_t *ctx) { - REQUIRE(ISCAPI_APPCTX_VALID(ctx)); - - isc__app_ctxfinish(ctx); -} - -void -isc_appctx_settaskmgr(isc_appctx_t *ctx, isc_taskmgr_t *taskmgr) { - REQUIRE(ISCAPI_APPCTX_VALID(ctx)); - REQUIRE(taskmgr != NULL); - - isc__appctx_settaskmgr(ctx, taskmgr); -} - -void -isc_appctx_setsocketmgr(isc_appctx_t *ctx, isc_socketmgr_t *socketmgr) { - REQUIRE(ISCAPI_APPCTX_VALID(ctx)); - REQUIRE(socketmgr != NULL); - - isc__appctx_setsocketmgr(ctx, socketmgr); -} - -void -isc_appctx_settimermgr(isc_appctx_t *ctx, isc_timermgr_t *timermgr) { - REQUIRE(ISCAPI_APPCTX_VALID(ctx)); - REQUIRE(timermgr != NULL); - - isc__appctx_settimermgr(ctx, timermgr); -} - -isc_result_t -isc_app_start(void) { - return (isc__app_start()); -} - -isc_result_t -isc_app_onrun(isc_mem_t *mctx, isc_task_t *task, - isc_taskaction_t action, void *arg) -{ - return (isc__app_onrun(mctx, task, action, arg)); -} - -isc_result_t -isc_app_run() { - isc_result_t result; - - is_running = ISC_TRUE; - result = isc__app_run(); - is_running = ISC_FALSE; - - return (result); -} - -bool -isc_app_isrunning() { - return (is_running); -} - -isc_result_t -isc_app_shutdown(void) { - return (isc__app_shutdown()); -} - -isc_result_t -isc_app_reload(void) { - return (isc__app_reload()); -} - -void -isc_app_finish(void) { - isc__app_finish(); -} - -void -isc_app_block(void) { - isc__app_block(); -} - -void -isc_app_unblock(void) { - isc__app_unblock(); -} diff --git a/lib/isc/include/isc/mem.h b/lib/isc/include/isc/mem.h index 7732ff766be..f3d730badbd 100644 --- a/lib/isc/include/isc/mem.h +++ b/lib/isc/include/isc/mem.h @@ -662,30 +662,6 @@ ISCMEMPOOLFUNC(get)(isc_mempool_t * _ISC_MEM_FLARG); void ISCMEMPOOLFUNC(put)(isc_mempool_t *, void * _ISC_MEM_FLARG); -/*%< - * See isc_mem_create2() above. - */ -typedef isc_result_t -(*isc_memcreatefunc_t)(size_t init_max_size, size_t target_size, - isc_mem_t **ctxp, unsigned int flags); - -isc_result_t -isc_mem_register(isc_memcreatefunc_t createfunc); -/*%< - * Register a new memory management implementation and add it to the list of - * supported implementations. This function must be called when a different - * memory management library is used than the one contained in the ISC library. - */ - -isc_result_t -isc__mem_register(void); -/*%< - * A short cut function that specifies the memory management module in the ISC - * library for isc_mem_register(). An application that uses the ISC library - * usually do not have to care about this function: it would call - * isc_lib_register(), which internally calls this function. - */ - void isc__mem_printactive(isc_mem_t *mctx, FILE *file); /*%< diff --git a/lib/isc/include/isc/socket.h b/lib/isc/include/isc/socket.h index 943e9753d74..adc2073e0e7 100644 --- a/lib/isc/include/isc/socket.h +++ b/lib/isc/include/isc/socket.h @@ -62,55 +62,6 @@ #include #include -#ifdef WIN32 - -/* from the old namespace.h */ - -#define isc_socket_create isc__socket_create -#define isc_socket_dup isc__socket_dup -#define isc_socket_attach isc__socket_attach -#define isc_socket_detach isc__socket_detach -#define isc_socketmgr_create isc__socketmgr_create -#define isc_socketmgr_create2 isc__socketmgr_create2 -#define isc_socketmgr_destroy isc__socketmgr_destroy -#define isc_socket_open isc__socket_open -#define isc_socket_close isc__socket_close -#define isc_socket_recvv isc__socket_recvv -#define isc_socket_recv isc__socket_recv -#define isc_socket_recv2 isc__socket_recv2 -#define isc_socket_send isc__socket_send -#define isc_socket_sendto isc__socket_sendto -#define isc_socket_sendv isc__socket_sendv -#define isc_socket_sendtov isc__socket_sendtov -#define isc_socket_sendtov2 isc__socket_sendtov2 -#define isc_socket_sendto2 isc__socket_sendto2 -#define isc_socket_cleanunix isc__socket_cleanunix -#define isc_socket_permunix isc__socket_permunix -#define isc_socket_bind isc__socket_bind -#define isc_socket_filter isc__socket_filter -#define isc_socket_listen isc__socket_listen -#define isc_socket_accept isc__socket_accept -#define isc_socket_connect isc__socket_connect -#define isc_socket_getfd isc__socket_getfd -#define isc_socket_getname isc__socket_getname -#define isc_socket_gettag isc__socket_gettag -#define isc_socket_getpeername isc__socket_getpeername -#define isc_socket_getsockname isc__socket_getsockname -#define isc_socket_cancel isc__socket_cancel -#define isc_socket_gettype isc__socket_gettype -#define isc_socket_isbound isc__socket_isbound -#define isc_socket_ipv6only isc__socket_ipv6only -#define isc_socket_setname isc__socket_setname -#define isc_socketmgr_getmaxsockets isc__socketmgr_getmaxsockets -#define isc_socketmgr_setstats isc__socketmgr_setstats -#define isc_socketmgr_setreserved isc__socketmgr_setreserved -#define isc__socketmgr_maxudp isc___socketmgr_maxudp -#define isc_socket_fdwatchcreate isc__socket_fdwatchcreate -#define isc_socket_fdwatchpoke isc__socket_fdwatchpoke -#define isc_socket_dscp isc__socket_dscp - -#endif - ISC_LANG_BEGINDECLS /*** @@ -1082,7 +1033,7 @@ isc_socket_gettype(isc_socket_t *sock); /*@{*/ bool -isc__socket_isbound(isc_socket_t *sock); +isc_socket_isbound(isc_socket_t *sock); /*% * Intended for internal use in BIND9 only */ @@ -1175,13 +1126,13 @@ int isc_socket_getfd(isc_socket_t *socket); */ void -isc__socketmgr_setreserved(isc_socketmgr_t *mgr, uint32_t); +isc_socketmgr_setreserved(isc_socketmgr_t *mgr, uint32_t); /*%< * Temporary. For use by named only. */ void -isc__socketmgr_maxudp(isc_socketmgr_t *mgr, int maxudp); +isc_socketmgr_maxudp(isc_socketmgr_t *mgr, int maxudp); /*%< * Test interface. Drop UDP packet > 'maxudp'. */ @@ -1208,23 +1159,6 @@ isc_socketmgr_renderjson(isc_socketmgr_t *mgr, json_object *stats); typedef isc_result_t (*isc_socketmgrcreatefunc_t)(isc_mem_t *mctx, isc_socketmgr_t **managerp); -isc_result_t -isc_socket_register(isc_socketmgrcreatefunc_t createfunc); -/*%< - * Register a new socket I/O implementation and add it to the list of - * supported implementations. This function must be called when a different - * event library is used than the one contained in the ISC library. - */ - -isc_result_t -isc__socket_register(void); -/*%< - * A short cut function that specifies the socket I/O module in the ISC - * library for isc_socket_register(). An application that uses the ISC library - * usually do not have to care about this function: it would call - * isc_lib_register(), which internally calls this function. - */ - ISC_LANG_ENDDECLS #endif /* ISC_SOCKET_H */ diff --git a/lib/isc/include/isc/task.h b/lib/isc/include/isc/task.h index 72be4bf14b4..3e14063fae4 100644 --- a/lib/isc/include/isc/task.h +++ b/lib/isc/include/isc/task.h @@ -102,42 +102,6 @@ typedef enum { isc_taskmgrmode_privileged } isc_taskmgrmode_t; -/*% Task and task manager methods */ -typedef struct isc_taskmgrmethods { - void (*destroy)(isc_taskmgr_t **managerp); - void (*setmode)(isc_taskmgr_t *manager, - isc_taskmgrmode_t mode); - isc_taskmgrmode_t (*mode)(isc_taskmgr_t *manager); - isc_result_t (*taskcreate)(isc_taskmgr_t *manager, - unsigned int quantum, - isc_task_t **taskp); - void (*setexcltask)(isc_taskmgr_t *mgr, isc_task_t *task); - isc_result_t (*excltask)(isc_taskmgr_t *mgr, isc_task_t **taskp); -} isc_taskmgrmethods_t; - -typedef struct isc_taskmethods { - void (*attach)(isc_task_t *source, isc_task_t **targetp); - void (*detach)(isc_task_t **taskp); - void (*destroy)(isc_task_t **taskp); - void (*send)(isc_task_t *task, isc_event_t **eventp); - void (*sendanddetach)(isc_task_t **taskp, isc_event_t **eventp); - unsigned int (*unsend)(isc_task_t *task, void *sender, isc_eventtype_t type, - void *tag, isc_eventlist_t *events); - isc_result_t (*onshutdown)(isc_task_t *task, isc_taskaction_t action, - void *arg); - void (*shutdown)(isc_task_t *task); - void (*setname)(isc_task_t *task, const char *name, void *tag); - unsigned int (*purgeevents)(isc_task_t *task, void *sender, - isc_eventtype_t type, void *tag); - unsigned int (*purgerange)(isc_task_t *task, void *sender, - isc_eventtype_t first, isc_eventtype_t last, - void *tag); - isc_result_t (*beginexclusive)(isc_task_t *task); - void (*endexclusive)(isc_task_t *task); - void (*setprivilege)(isc_task_t *task, bool priv); - bool (*privilege)(isc_task_t *task); -} isc_taskmethods_t; - /*% * This structure is actually just the common prefix of a task manager * object implementation's version of an isc_taskmgr_t. @@ -150,7 +114,6 @@ typedef struct isc_taskmethods { struct isc_taskmgr { unsigned int impmagic; unsigned int magic; - isc_taskmgrmethods_t *methods; }; #define ISCAPI_TASKMGR_MAGIC ISC_MAGIC('A','t','m','g') @@ -164,7 +127,6 @@ struct isc_taskmgr { struct isc_task { unsigned int impmagic; unsigned int magic; - isc_taskmethods_t *methods; }; #define ISCAPI_TASK_MAGIC ISC_MAGIC('A','t','s','t') diff --git a/lib/isc/include/isc/timer.h b/lib/isc/include/isc/timer.h index 40aa5a678c4..cbc3153dd94 100644 --- a/lib/isc/include/isc/timer.h +++ b/lib/isc/include/isc/timer.h @@ -99,29 +99,6 @@ typedef struct isc_timerevent { #define ISC_TIMEREVENT_LIFE (ISC_EVENTCLASS_TIMER + 3) #define ISC_TIMEREVENT_LASTEVENT (ISC_EVENTCLASS_TIMER + 65535) -/*% Timer and timer manager methods */ -typedef struct { - void (*destroy)(isc_timermgr_t **managerp); - isc_result_t (*timercreate)(isc_timermgr_t *manager, - isc_timertype_t type, - const isc_time_t *expires, - const isc_interval_t *interval, - isc_task_t *task, - isc_taskaction_t action, - void *arg, - isc_timer_t **timerp); -} isc_timermgrmethods_t; - -typedef struct { - void (*attach)(isc_timer_t *timer, isc_timer_t **timerp); - void (*detach)(isc_timer_t **timerp); - isc_result_t (*reset)(isc_timer_t *timer, isc_timertype_t type, - const isc_time_t *expires, - const isc_interval_t *interval, - bool purge); - isc_result_t (*touch)(isc_timer_t *timer); -} isc_timermethods_t; - /*% * This structure is actually just the common prefix of a timer manager * object implementation's version of an isc_timermgr_t. @@ -134,7 +111,6 @@ typedef struct { struct isc_timermgr { unsigned int impmagic; unsigned int magic; - isc_timermgrmethods_t *methods; }; #define ISCAPI_TIMERMGR_MAGIC ISC_MAGIC('A','t','m','g') @@ -148,7 +124,6 @@ struct isc_timermgr { struct isc_timer { unsigned int impmagic; unsigned int magic; - isc_timermethods_t *methods; }; #define ISCAPI_TIMER_MAGIC ISC_MAGIC('A','t','m','r') diff --git a/lib/isc/lib.c b/lib/isc/lib.c index d7957b2abf4..ae5a24ba13b 100644 --- a/lib/isc/lib.c +++ b/lib/isc/lib.c @@ -79,5 +79,5 @@ isc_lib_initmsgcat(void) { void isc_lib_register(void) { - printf("ISC_LIB_REGISTER\n"); + isc_bind9 = false; } diff --git a/lib/isc/mem.c b/lib/isc/mem.c index 5fa5c746c1b..c6bf27cadc4 100644 --- a/lib/isc/mem.c +++ b/lib/isc/mem.c @@ -111,7 +111,6 @@ static ISC_LIST(isc__mem_t) contexts; static isc_once_t once = ISC_ONCE_INIT; static isc_mutex_t contextslock; -static isc_mutex_t createlock; /*% * Total size of lost memory due to a bug of external library. @@ -218,98 +217,6 @@ struct isc__mempool { static void print_active(isc__mem_t *ctx, FILE *out); -#endif /* ISC_MEM_TRACKLINES */ - -/*% - * The following are intended for internal use (indicated by "isc__" - * prefix) but are not declared as static, allowing direct access - * from unit tests, etc. - */ - -isc_result_t -isc__mem_create2(size_t init_max_size, size_t target_size, - isc_mem_t **ctxp, unsigned int flags); -void -isc__mem_attach(isc_mem_t *source, isc_mem_t **targetp); -void -isc__mem_detach(isc_mem_t **ctxp); -void -isc___mem_putanddetach(isc_mem_t **ctxp, void *ptr, size_t size FLARG); -void -isc__mem_destroy(isc_mem_t **ctxp); -void * -isc___mem_get(isc_mem_t *ctx, size_t size FLARG); -void -isc___mem_put(isc_mem_t *ctx, void *ptr, size_t size FLARG); -void -isc__mem_stats(isc_mem_t *ctx, FILE *out); -void * -isc___mem_allocate(isc_mem_t *ctx, size_t size FLARG); -void * -isc___mem_reallocate(isc_mem_t *ctx, void *ptr, size_t size FLARG); -void -isc___mem_free(isc_mem_t *ctx, void *ptr FLARG); -char * -isc___mem_strdup(isc_mem_t *mctx, const char *s FLARG); -void -isc__mem_setdestroycheck(isc_mem_t *ctx, bool flag); -void -isc__mem_setquota(isc_mem_t *ctx, size_t quota); -size_t -isc__mem_getquota(isc_mem_t *ctx); -size_t -isc__mem_inuse(isc_mem_t *ctx); -size_t -isc__mem_maxinuse(isc_mem_t *ctx); -size_t -isc__mem_total(isc_mem_t *ctx); -bool -isc__mem_isovermem(isc_mem_t *ctx); -void -isc__mem_setwater(isc_mem_t *ctx, isc_mem_water_t water, void *water_arg, - size_t hiwater, size_t lowater); -void -isc__mem_waterack(isc_mem_t *ctx0, int flag); -void -isc__mem_setname(isc_mem_t *ctx, const char *name, void *tag); -const char * -isc__mem_getname(isc_mem_t *ctx); -void * -isc__mem_gettag(isc_mem_t *ctx); -isc_result_t -isc__mempool_create(isc_mem_t *mctx, size_t size, isc_mempool_t **mpctxp); -void -isc__mempool_setname(isc_mempool_t *mpctx, const char *name); -void -isc__mempool_destroy(isc_mempool_t **mpctxp); -void -isc__mempool_associatelock(isc_mempool_t *mpctx, isc_mutex_t *lock); -void * -isc___mempool_get(isc_mempool_t *mpctx FLARG); -void -isc___mempool_put(isc_mempool_t *mpctx, void *mem FLARG); -void -isc__mempool_setfreemax(isc_mempool_t *mpctx, unsigned int limit); -unsigned int -isc__mempool_getfreemax(isc_mempool_t *mpctx); -unsigned int -isc__mempool_getfreecount(isc_mempool_t *mpctx); -void -isc__mempool_setmaxalloc(isc_mempool_t *mpctx, unsigned int limit); -unsigned int -isc__mempool_getmaxalloc(isc_mempool_t *mpctx); -unsigned int -isc__mempool_getallocated(isc_mempool_t *mpctx); -void -isc__mempool_setfillcount(isc_mempool_t *mpctx, unsigned int limit); -unsigned int -isc__mempool_getfillcount(isc_mempool_t *mpctx); -void -isc__mem_printactive(isc_mem_t *ctx0, FILE *file); -unsigned int -isc__mem_references(isc_mem_t *ctx0); - -#if ISC_MEM_TRACKLINES /*! * mctx must be locked. */ @@ -788,7 +695,6 @@ default_memfree(void *arg, void *ptr) { static void initialize_action(void) { - RUNTIME_CHECK(isc_mutex_init(&createlock) == ISC_R_SUCCESS); RUNTIME_CHECK(isc_mutex_init(&contextslock) == ISC_R_SUCCESS); ISC_LIST_INIT(contexts); totallost = 0; @@ -1026,7 +932,7 @@ destroy(isc__mem_t *ctx) { } void -isc__mem_attach(isc_mem_t *source0, isc_mem_t **targetp) { +isc_mem_attach(isc_mem_t *source0, isc_mem_t **targetp) { isc__mem_t *source = (isc__mem_t *)source0; REQUIRE(VALID_CONTEXT(source)); @@ -1038,7 +944,7 @@ isc__mem_attach(isc_mem_t *source0, isc_mem_t **targetp) { } void -isc__mem_detach(isc_mem_t **ctxp) { +isc_mem_detach(isc_mem_t **ctxp) { REQUIRE(ctxp != NULL && VALID_CONTEXT(*ctxp)); isc__mem_t *ctx = (isc__mem_t *)*ctxp; *ctxp = NULL; @@ -1060,7 +966,7 @@ isc__mem_detach(isc_mem_t **ctxp) { */ void -isc___mem_putanddetach(isc_mem_t **ctxp, void *ptr, size_t size FLARG) { +isc__mem_putanddetach(isc_mem_t **ctxp, void *ptr, size_t size FLARG) { REQUIRE(ctxp != NULL && VALID_CONTEXT(*ctxp)); REQUIRE(ptr != NULL); isc__mem_t *ctx = (isc__mem_t *)*ctxp; @@ -1101,7 +1007,7 @@ destroy: } void -isc__mem_destroy(isc_mem_t **ctxp) { +isc_mem_destroy(isc_mem_t **ctxp) { isc__mem_t *ctx; /* @@ -1127,7 +1033,7 @@ isc__mem_destroy(isc_mem_t **ctxp) { } void * -isc___mem_get(isc_mem_t *ctx0, size_t size FLARG) { +isc__mem_get(isc_mem_t *ctx0, size_t size FLARG) { isc__mem_t *ctx = (isc__mem_t *)ctx0; void *ptr; bool call_water = false; @@ -1171,7 +1077,7 @@ isc___mem_get(isc_mem_t *ctx0, size_t size FLARG) { } void -isc___mem_put(isc_mem_t *ctx0, void *ptr, size_t size FLARG) { +isc__mem_put(isc_mem_t *ctx0, void *ptr, size_t size FLARG) { isc__mem_t *ctx = (isc__mem_t *)ctx0; bool call_water = false; size_info *si; @@ -1223,7 +1129,7 @@ isc___mem_put(isc_mem_t *ctx0, void *ptr, size_t size FLARG) { } void -isc__mem_waterack(isc_mem_t *ctx0, int flag) { +isc_mem_waterack(isc_mem_t *ctx0, int flag) { isc__mem_t *ctx = (isc__mem_t *)ctx0; REQUIRE(VALID_CONTEXT(ctx)); @@ -1385,7 +1291,7 @@ mem_allocateunlocked(isc_mem_t *ctx0, size_t size) { } void * -isc___mem_allocate(isc_mem_t *ctx0, size_t size FLARG) { +isc__mem_allocate(isc_mem_t *ctx0, size_t size FLARG) { isc__mem_t *ctx = (isc__mem_t *)ctx0; size_info *si; bool call_water = false; @@ -1425,7 +1331,7 @@ isc___mem_allocate(isc_mem_t *ctx0, size_t size FLARG) { } void * -isc___mem_reallocate(isc_mem_t *ctx0, void *ptr, size_t size FLARG) { +isc__mem_reallocate(isc_mem_t *ctx0, void *ptr, size_t size FLARG) { isc__mem_t *ctx = (isc__mem_t *)ctx0; void *new_ptr = NULL; size_t oldsize, copysize; @@ -1466,7 +1372,7 @@ isc___mem_reallocate(isc_mem_t *ctx0, void *ptr, size_t size FLARG) { } void -isc___mem_free(isc_mem_t *ctx0, void *ptr FLARG) { +isc__mem_free(isc_mem_t *ctx0, void *ptr FLARG) { isc__mem_t *ctx = (isc__mem_t *)ctx0; size_info *si; size_t size; @@ -1524,7 +1430,7 @@ isc___mem_free(isc_mem_t *ctx0, void *ptr FLARG) { */ char * -isc___mem_strdup(isc_mem_t *mctx0, const char *s FLARG) { +isc__mem_strdup(isc_mem_t *mctx0, const char *s FLARG) { isc__mem_t *mctx = (isc__mem_t *)mctx0; size_t len; char *ns; @@ -1543,7 +1449,7 @@ isc___mem_strdup(isc_mem_t *mctx0, const char *s FLARG) { } void -isc__mem_setdestroycheck(isc_mem_t *ctx0, bool flag) { +isc_mem_setdestroycheck(isc_mem_t *ctx0, bool flag) { isc__mem_t *ctx = (isc__mem_t *)ctx0; REQUIRE(VALID_CONTEXT(ctx)); @@ -1586,7 +1492,7 @@ isc_mem_getquota(isc_mem_t *ctx0) { } size_t -isc__mem_inuse(isc_mem_t *ctx0) { +isc_mem_inuse(isc_mem_t *ctx0) { isc__mem_t *ctx = (isc__mem_t *)ctx0; size_t inuse; @@ -1601,7 +1507,7 @@ isc__mem_inuse(isc_mem_t *ctx0) { } size_t -isc__mem_maxinuse(isc_mem_t *ctx0) { +isc_mem_maxinuse(isc_mem_t *ctx0) { isc__mem_t *ctx = (isc__mem_t *)ctx0; size_t maxinuse; @@ -1616,7 +1522,7 @@ isc__mem_maxinuse(isc_mem_t *ctx0) { } size_t -isc__mem_total(isc_mem_t *ctx0) { +isc_mem_total(isc_mem_t *ctx0) { isc__mem_t *ctx = (isc__mem_t *)ctx0; size_t total; @@ -1631,7 +1537,7 @@ isc__mem_total(isc_mem_t *ctx0) { } void -isc__mem_setwater(isc_mem_t *ctx0, isc_mem_water_t water, void *water_arg, +isc_mem_setwater(isc_mem_t *ctx0, isc_mem_water_t water, void *water_arg, size_t hiwater, size_t lowater) { isc__mem_t *ctx = (isc__mem_t *)ctx0; @@ -1668,7 +1574,7 @@ isc__mem_setwater(isc_mem_t *ctx0, isc_mem_water_t water, void *water_arg, } bool -isc__mem_isovermem(isc_mem_t *ctx0) { +isc_mem_isovermem(isc_mem_t *ctx0) { isc__mem_t *ctx = (isc__mem_t *)ctx0; REQUIRE(VALID_CONTEXT(ctx)); @@ -1719,7 +1625,7 @@ isc_mem_gettag(isc_mem_t *ctx0) { */ isc_result_t -isc__mempool_create(isc_mem_t *mctx0, size_t size, isc_mempool_t **mpctxp) { +isc_mempool_create(isc_mem_t *mctx0, size_t size, isc_mempool_t **mpctxp) { isc__mem_t *mctx = (isc__mem_t *)mctx0; isc__mempool_t *mpctx; @@ -1768,7 +1674,7 @@ isc__mempool_create(isc_mem_t *mctx0, size_t size, isc_mempool_t **mpctxp) { } void -isc__mempool_setname(isc_mempool_t *mpctx0, const char *name) { +isc_mempool_setname(isc_mempool_t *mpctx0, const char *name) { isc__mempool_t *mpctx = (isc__mempool_t *)mpctx0; REQUIRE(name != NULL); @@ -1789,7 +1695,7 @@ isc__mempool_setname(isc_mempool_t *mpctx0, const char *name) { } void -isc__mempool_destroy(isc_mempool_t **mpctxp) { +isc_mempool_destroy(isc_mempool_t **mpctxp) { isc__mempool_t *mpctx; isc__mem_t *mctx; isc_mutex_t *lock; @@ -1853,7 +1759,7 @@ isc__mempool_destroy(isc_mempool_t **mpctxp) { } void -isc__mempool_associatelock(isc_mempool_t *mpctx0, isc_mutex_t *lock) { +isc_mempool_associatelock(isc_mempool_t *mpctx0, isc_mutex_t *lock) { isc__mempool_t *mpctx = (isc__mempool_t *)mpctx0; REQUIRE(VALID_MEMPOOL(mpctx)); @@ -1864,7 +1770,7 @@ isc__mempool_associatelock(isc_mempool_t *mpctx0, isc_mutex_t *lock) { } void * -isc___mempool_get(isc_mempool_t *mpctx0 FLARG) { +isc__mempool_get(isc_mempool_t *mpctx0 FLARG) { isc__mempool_t *mpctx = (isc__mempool_t *)mpctx0; element *item; isc__mem_t *mctx; @@ -1940,7 +1846,7 @@ isc___mempool_get(isc_mempool_t *mpctx0 FLARG) { /* coverity[+free : arg-1] */ void -isc___mempool_put(isc_mempool_t *mpctx0, void *mem FLARG) { +isc__mempool_put(isc_mempool_t *mpctx0, void *mem FLARG) { isc__mempool_t *mpctx = (isc__mempool_t *)mpctx0; isc__mem_t *mctx; element *item; @@ -1998,7 +1904,7 @@ isc___mempool_put(isc_mempool_t *mpctx0, void *mem FLARG) { */ void -isc__mempool_setfreemax(isc_mempool_t *mpctx0, unsigned int limit) { +isc_mempool_setfreemax(isc_mempool_t *mpctx0, unsigned int limit) { isc__mempool_t *mpctx = (isc__mempool_t *)mpctx0; REQUIRE(VALID_MEMPOOL(mpctx)); @@ -2049,7 +1955,7 @@ isc_mempool_getfreecount(isc_mempool_t *mpctx0) { } void -isc__mempool_setmaxalloc(isc_mempool_t *mpctx0, unsigned int limit) { +isc_mempool_setmaxalloc(isc_mempool_t *mpctx0, unsigned int limit) { isc__mempool_t *mpctx = (isc__mempool_t *)mpctx0; REQUIRE(limit > 0); @@ -2084,7 +1990,7 @@ isc_mempool_getmaxalloc(isc_mempool_t *mpctx0) { } unsigned int -isc__mempool_getallocated(isc_mempool_t *mpctx0) { +isc_mempool_getallocated(isc_mempool_t *mpctx0) { isc__mempool_t *mpctx = (isc__mempool_t *)mpctx0; unsigned int allocated; @@ -2102,7 +2008,7 @@ isc__mempool_getallocated(isc_mempool_t *mpctx0) { } void -isc__mempool_setfillcount(isc_mempool_t *mpctx0, unsigned int limit) { +isc_mempool_setfillcount(isc_mempool_t *mpctx0, unsigned int limit) { isc__mempool_t *mpctx = (isc__mempool_t *)mpctx0; REQUIRE(limit > 0); @@ -2136,13 +2042,8 @@ isc_mempool_getfillcount(isc_mempool_t *mpctx0) { return (fillcount); } -isc_result_t -isc__mem_register(void) { - return (isc_mem_register(isc_mem_create2)); -} - void -isc__mem_printactive(isc_mem_t *ctx0, FILE *file) { +isc_mem_printactive(isc_mem_t *ctx0, FILE *file) { #if ISC_MEM_TRACKLINES isc__mem_t *ctx = (isc__mem_t *)ctx0; @@ -2580,41 +2481,6 @@ isc_mem_renderjson(json_object *memobj) { } #endif /* HAVE_JSON */ -static isc_memcreatefunc_t mem_createfunc = NULL; - -isc_result_t -isc_mem_register(isc_memcreatefunc_t createfunc) { - isc_result_t result = ISC_R_SUCCESS; - - RUNTIME_CHECK(isc_once_do(&once, initialize_action) == ISC_R_SUCCESS); - - LOCK(&createlock); - if (mem_createfunc == NULL) - mem_createfunc = createfunc; - else - result = ISC_R_EXISTS; - UNLOCK(&createlock); - - return (result); -} - - -isc_result_t -isc__mem_create2(size_t init_max_size, size_t target_size, isc_mem_t **mctxp, - unsigned int flags) -{ - isc_result_t result; - - LOCK(&createlock); - - REQUIRE(mem_createfunc != NULL); - result = (*mem_createfunc)(init_max_size, target_size, mctxp, flags); - - UNLOCK(&createlock); - - return (result); -} - isc_result_t isc_mem_create(size_t init_max_size, size_t target_size, isc_mem_t **mctxp) { return (isc_mem_createx2(init_max_size, target_size, @@ -2630,210 +2496,3 @@ isc_mem_create2(size_t init_max_size, size_t target_size, isc_mem_t **mctxp, default_memalloc, default_memfree, NULL, mctxp, flags)); } - -void -isc_mem_attach(isc_mem_t *source, isc_mem_t **targetp) { - REQUIRE(ISCAPI_MCTX_VALID(source)); - REQUIRE(targetp != NULL && *targetp == NULL); - - isc__mem_attach(source, targetp); - - ENSURE(*targetp == source); -} - -void -isc_mem_detach(isc_mem_t **mctxp) { - REQUIRE(mctxp != NULL && ISCAPI_MCTX_VALID(*mctxp)); - - isc__mem_detach(mctxp); - - ENSURE(*mctxp == NULL); -} - -void -isc_mem_destroy(isc_mem_t **mctxp) { - REQUIRE(mctxp != NULL && ISCAPI_MCTX_VALID(*mctxp)); - - isc__mem_destroy(mctxp); - - ENSURE(*mctxp == NULL); -} - -void -isc_mem_setdestroycheck(isc_mem_t *mctx, bool flag) { - REQUIRE(ISCAPI_MCTX_VALID(mctx)); - - isc__mem_setdestroycheck(mctx, flag); -} - -void -isc_mem_setwater(isc_mem_t *ctx, isc_mem_water_t water, void *water_arg, - size_t hiwater, size_t lowater) -{ - REQUIRE(ISCAPI_MCTX_VALID(ctx)); - - isc__mem_setwater(ctx, water, water_arg, hiwater, lowater); -} - -void -isc_mem_waterack(isc_mem_t *ctx, int flag) { - REQUIRE(ISCAPI_MCTX_VALID(ctx)); - - isc__mem_waterack(ctx, flag); -} - -size_t -isc_mem_inuse(isc_mem_t *mctx) { - REQUIRE(ISCAPI_MCTX_VALID(mctx)); - - return (isc__mem_inuse(mctx)); -} - -size_t -isc_mem_maxinuse(isc_mem_t *mctx) { - REQUIRE(ISCAPI_MCTX_VALID(mctx)); - - return (isc__mem_maxinuse(mctx)); -} - -size_t -isc_mem_total(isc_mem_t *mctx) { - REQUIRE(ISCAPI_MCTX_VALID(mctx)); - - return (isc__mem_total(mctx)); -} - -bool -isc_mem_isovermem(isc_mem_t *mctx) { - REQUIRE(ISCAPI_MCTX_VALID(mctx)); - - return (isc__mem_isovermem(mctx)); -} - - -isc_result_t -isc_mempool_create(isc_mem_t *mctx, size_t size, isc_mempool_t **mpctxp) { - REQUIRE(ISCAPI_MCTX_VALID(mctx)); - - return (isc__mempool_create(mctx, size, mpctxp)); -} - -void -isc_mempool_destroy(isc_mempool_t **mpctxp) { - REQUIRE(mpctxp != NULL && ISCAPI_MPOOL_VALID(*mpctxp)); - - isc__mempool_destroy(mpctxp); - - ENSURE(*mpctxp == NULL); -} - -unsigned int -isc_mempool_getallocated(isc_mempool_t *mpctx) { - REQUIRE(ISCAPI_MPOOL_VALID(mpctx)); - - return (isc__mempool_getallocated(mpctx)); -} - -void -isc_mempool_setmaxalloc(isc_mempool_t *mpctx, unsigned int limit) { - REQUIRE(ISCAPI_MPOOL_VALID(mpctx)); - - isc__mempool_setmaxalloc(mpctx, limit); -} - -void -isc_mempool_setfreemax(isc_mempool_t *mpctx, unsigned int limit) { - REQUIRE(ISCAPI_MPOOL_VALID(mpctx)); - - isc__mempool_setfreemax(mpctx, limit); -} - -void -isc_mempool_setname(isc_mempool_t *mpctx, const char *name) { - REQUIRE(ISCAPI_MPOOL_VALID(mpctx)); - - isc__mempool_setname(mpctx, name); -} - -void -isc_mempool_associatelock(isc_mempool_t *mpctx, isc_mutex_t *lock) { - REQUIRE(ISCAPI_MPOOL_VALID(mpctx)); - - isc__mempool_associatelock(mpctx, lock); -} - -void -isc_mempool_setfillcount(isc_mempool_t *mpctx, unsigned int limit) { - REQUIRE(ISCAPI_MPOOL_VALID(mpctx)); - - isc__mempool_setfillcount(mpctx, limit); -} - -void * -isc__mem_get(isc_mem_t *mctx, size_t size FLARG) { - REQUIRE(ISCAPI_MCTX_VALID(mctx)); - - return (isc___mem_get(mctx, size FLARG_PASS)); - -} - -void -isc__mem_put(isc_mem_t *mctx, void *ptr, size_t size FLARG) { - REQUIRE(ISCAPI_MCTX_VALID(mctx)); - - isc___mem_put(mctx, ptr, size FLARG_PASS); -} - -void -isc__mem_putanddetach(isc_mem_t **mctxp, void *ptr, size_t size FLARG) { - REQUIRE(mctxp != NULL && ISCAPI_MCTX_VALID(*mctxp)); - - isc___mem_putanddetach(mctxp, ptr, size FLARG_PASS); - - /* - * XXX: We cannot always ensure *mctxp == NULL here - * (see lib/isc/mem.c). - */ -} - -void * -isc__mem_allocate(isc_mem_t *mctx, size_t size FLARG) { - REQUIRE(ISCAPI_MCTX_VALID(mctx)); - - return (isc___mem_allocate(mctx, size FLARG_PASS)); -} - -void * -isc__mem_reallocate(isc_mem_t *mctx, void *ptr, size_t size FLARG) { - REQUIRE(ISCAPI_MCTX_VALID(mctx)); - - return (isc___mem_reallocate(mctx, ptr, size FLARG_PASS)); -} - -char * -isc__mem_strdup(isc_mem_t *mctx, const char *s FLARG) { - REQUIRE(ISCAPI_MCTX_VALID(mctx)); - - return (isc___mem_strdup(mctx, s FLARG_PASS)); -} - -void -isc__mem_free(isc_mem_t *mctx, void *ptr FLARG) { - REQUIRE(ISCAPI_MCTX_VALID(mctx)); - - isc___mem_free(mctx, ptr FLARG_PASS); -} - -void * -isc__mempool_get(isc_mempool_t *mpctx FLARG) { - REQUIRE(ISCAPI_MPOOL_VALID(mpctx)); - - return (isc___mempool_get(mpctx FLARG_PASS)); -} - -void -isc__mempool_put(isc_mempool_t *mpctx, void *mem FLARG) { - REQUIRE(ISCAPI_MPOOL_VALID(mpctx)); - - isc___mempool_put(mpctx, mem FLARG_PASS); -} diff --git a/lib/isc/socket_api.c b/lib/isc/socket_api.c deleted file mode 100644 index b791f6ae543..00000000000 --- a/lib/isc/socket_api.c +++ /dev/null @@ -1,337 +0,0 @@ -/* - * Copyright (C) Internet Systems Consortium, Inc. ("ISC") - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * See the COPYRIGHT file distributed with this work for additional - * information regarding copyright ownership. - */ - - -#include - -#include -#include - -#include -#include -#include -#include -#include -#include - -static isc_mutex_t createlock; -static isc_once_t once = ISC_ONCE_INIT; -static isc_socketmgrcreatefunc_t socketmgr_createfunc = NULL; - -static void -initialize(void) { - RUNTIME_CHECK(isc_mutex_init(&createlock) == ISC_R_SUCCESS); -} - -isc_result_t -isc_socket_register(isc_socketmgrcreatefunc_t createfunc) { - isc_result_t result = ISC_R_SUCCESS; - - RUNTIME_CHECK(isc_once_do(&once, initialize) == ISC_R_SUCCESS); - - LOCK(&createlock); - if (socketmgr_createfunc == NULL) - socketmgr_createfunc = createfunc; - else - result = ISC_R_EXISTS; - UNLOCK(&createlock); - - return (result); -} - -isc_result_t -isc_socketmgr_createinctx(isc_mem_t *mctx, isc_appctx_t *actx, - isc_socketmgr_t **managerp) -{ - isc_result_t result; - - LOCK(&createlock); - - REQUIRE(socketmgr_createfunc != NULL); - result = (*socketmgr_createfunc)(mctx, managerp); - - UNLOCK(&createlock); - - if (result == ISC_R_SUCCESS) - isc_appctx_setsocketmgr(actx, *managerp); - - return (result); -} - -isc_result_t -isc_socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) { - return (isc__socketmgr_create(mctx, managerp)); -} - -void -isc_socketmgr_destroy(isc_socketmgr_t **managerp) { - REQUIRE(managerp != NULL && ISCAPI_SOCKETMGR_VALID(*managerp)); - - isc__socketmgr_destroy(managerp); - - ENSURE(*managerp == NULL); -} - -isc_result_t -isc_socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type, - isc_socket_t **socketp) -{ - REQUIRE(ISCAPI_SOCKETMGR_VALID(manager)); - - return (isc__socket_create(manager, pf, type, socketp)); -} - -void -isc_socket_attach(isc_socket_t *sock, isc_socket_t **socketp) { - REQUIRE(ISCAPI_SOCKET_VALID(sock)); - REQUIRE(socketp != NULL && *socketp == NULL); - - isc__socket_attach(sock, socketp); - - ENSURE(*socketp == sock); -} - -void -isc_socket_detach(isc_socket_t **socketp) { - REQUIRE(socketp != NULL && ISCAPI_SOCKET_VALID(*socketp)); - - isc__socket_detach(socketp); - - ENSURE(*socketp == NULL); -} - -isc_result_t -isc_socket_bind(isc_socket_t *sock, const isc_sockaddr_t *sockaddr, - isc_socket_options_t options) -{ - REQUIRE(ISCAPI_SOCKET_VALID(sock)); - - return (isc__socket_bind(sock, sockaddr, options)); -} - -isc_result_t -isc_socket_sendto(isc_socket_t *sock, isc_region_t *region, isc_task_t *task, - isc_taskaction_t action, void *arg, - const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo) -{ - REQUIRE(ISCAPI_SOCKET_VALID(sock)); - - return (isc__socket_sendto(sock, region, task, - action, arg, address, pktinfo)); -} - -isc_result_t -isc_socket_connect(isc_socket_t *sock, const isc_sockaddr_t *addr, - isc_task_t *task, isc_taskaction_t action, void *arg) -{ - REQUIRE(ISCAPI_SOCKET_VALID(sock)); - - return (isc__socket_connect(sock, addr, task, action, 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) -{ - REQUIRE(ISCAPI_SOCKET_VALID(sock)); - - return (isc__socket_recv(sock, region, minimum, - task, action, arg)); -} - -void -isc_socket_cancel(isc_socket_t *sock, isc_task_t *task, unsigned int how) { - REQUIRE(ISCAPI_SOCKET_VALID(sock)); - - isc__socket_cancel(sock, task, how); -} - -isc_result_t -isc_socket_getsockname(isc_socket_t *sock, isc_sockaddr_t *addressp) { - REQUIRE(ISCAPI_SOCKET_VALID(sock)); - - return (isc__socket_getsockname(sock, addressp)); -} - -void -isc_socket_ipv6only(isc_socket_t *sock, bool yes) { - REQUIRE(ISCAPI_SOCKET_VALID(sock)); - - isc__socket_ipv6only(sock, yes); -} - -void -isc_socket_dscp(isc_socket_t *sock, isc_dscp_t dscp) { - REQUIRE(ISCAPI_SOCKET_VALID(sock)); - - isc__socket_dscp(sock, dscp); -} - -isc_sockettype_t -isc_socket_gettype(isc_socket_t *sock) { - REQUIRE(ISCAPI_SOCKET_VALID(sock)); - - return (isc__socket_gettype(sock)); -} - -void -isc_socket_setname(isc_socket_t *sock, const char *name, void *tag) { - REQUIRE(ISCAPI_SOCKET_VALID(sock)); - - UNUSED(sock); /* in case REQUIRE() is empty */ - UNUSED(name); - UNUSED(tag); -} - -isc_result_t -isc_socket_fdwatchcreate(isc_socketmgr_t *manager, int fd, int flags, - isc_sockfdwatch_t callback, void *cbarg, - isc_task_t *task, isc_socket_t **socketp) -{ - REQUIRE(ISCAPI_SOCKETMGR_VALID(manager)); - - return (isc__socket_fdwatchcreate(manager, fd, flags, - callback, cbarg, - task, socketp)); -} - -isc_result_t -isc_socket_fdwatchpoke(isc_socket_t *sock, int flags) -{ - REQUIRE(ISCAPI_SOCKET_VALID(sock)); - - return (isc__socket_fdwatchpoke(sock, flags)); -} - -isc_result_t -isc_socket_dup(isc_socket_t *sock, isc_socket_t **socketp) { - REQUIRE(ISCAPI_SOCKET_VALID(sock)); - REQUIRE(socketp != NULL && *socketp == NULL); - - return (isc__socket_dup(sock, socketp)); -} - -int -isc_socket_getfd(isc_socket_t *sock) { - REQUIRE(ISCAPI_SOCKET_VALID(sock)); - - return (isc__socket_getfd(sock)); -} - -isc_result_t -isc_socket_open(isc_socket_t *sock) { - return (isc__socket_open(sock)); -} - -isc_result_t -isc_socket_close(isc_socket_t *sock) { - return (isc__socket_close(sock)); -} - -isc_result_t -isc_socketmgr_create2(isc_mem_t *mctx, isc_socketmgr_t **managerp, - unsigned int maxsocks) -{ - return (isc__socketmgr_create2(mctx, managerp, maxsocks)); -} - -isc_result_t -isc_socket_recvv(isc_socket_t *sock, isc_bufferlist_t *buflist, - unsigned int minimum, isc_task_t *task, - isc_taskaction_t action, void *arg) -{ - return (isc__socket_recvv(sock, buflist, minimum, task, action, 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) -{ - return (isc__socket_recv2(sock, region, minimum, task, event, 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) -{ - return (isc__socket_send(sock, region, task, action, arg)); -} - -isc_result_t -isc_socket_sendv(isc_socket_t *sock, isc_bufferlist_t *buflist, - isc_task_t *task, isc_taskaction_t action, void *arg) -{ - return (isc__socket_sendv(sock, buflist, task, action, 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, - const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo) -{ - return (isc__socket_sendtov(sock, buflist, task, action, arg, - address, 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, - const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo, - unsigned int flags) -{ - return (isc__socket_sendtov2(sock, buflist, task, action, arg, - address, pktinfo, flags)); -} - -isc_result_t -isc_socket_sendto2(isc_socket_t *sock, isc_region_t *region, - isc_task_t *task, - const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo, - isc_socketevent_t *event, unsigned int flags) -{ - return (isc__socket_sendto2(sock, region, task, address, pktinfo, - event, flags)); -} - -void -isc_socket_cleanunix(const isc_sockaddr_t *sockaddr, bool active) { - isc__socket_cleanunix(sockaddr, active); -} - -isc_result_t -isc_socket_permunix(const isc_sockaddr_t *sockaddr, uint32_t perm, - uint32_t owner, uint32_t group) -{ - return (isc__socket_permunix(sockaddr, perm, owner, group)); -} - -isc_result_t -isc_socket_filter(isc_socket_t *sock, const char *filter) { - return (isc__socket_filter(sock, filter)); -} - -isc_result_t -isc_socket_listen(isc_socket_t *sock, unsigned int backlog) { - return (isc__socket_listen(sock, backlog)); -} - -isc_result_t -isc_socket_accept(isc_socket_t *sock, isc_task_t *task, - isc_taskaction_t action, void *arg) -{ - return (isc__socket_accept(sock, task, action, arg)); -} - -isc_result_t -isc_socket_getpeername(isc_socket_t *sock, isc_sockaddr_t *addressp) { - return (isc__socket_getpeername(sock, addressp)); -} diff --git a/lib/isc/task.c b/lib/isc/task.c index f3a2036c818..1d03e791273 100644 --- a/lib/isc/task.c +++ b/lib/isc/task.c @@ -152,6 +152,12 @@ struct isc__taskmgr { isc__task_t *excl; }; +void +isc__taskmgr_pause(isc_taskmgr_t *manager0); +void +isc__taskmgr_resume(isc_taskmgr_t *manager0); + + #define DEFAULT_TASKMGR_QUANTUM 10 #define DEFAULT_DEFAULT_QUANTUM 5 #define FINISHED(m) ((m)->exiting && EMPTY((m)->tasks)) @@ -162,71 +168,12 @@ struct isc__taskmgr { * unit tests etc. */ -isc_result_t -isc__task_create(isc_taskmgr_t *manager0, unsigned int quantum, - isc_task_t **taskp); -void -isc__task_attach(isc_task_t *source0, isc_task_t **targetp); -void -isc__task_detach(isc_task_t **taskp); -void -isc__task_send(isc_task_t *task0, isc_event_t **eventp); -void -isc__task_sendanddetach(isc_task_t **taskp, isc_event_t **eventp); -unsigned int -isc__task_purgerange(isc_task_t *task0, void *sender, isc_eventtype_t first, - isc_eventtype_t last, void *tag); -unsigned int -isc__task_purge(isc_task_t *task, void *sender, isc_eventtype_t type, - void *tag); bool isc_task_purgeevent(isc_task_t *task0, isc_event_t *event); -unsigned int -isc__task_unsendrange(isc_task_t *task, void *sender, isc_eventtype_t first, - isc_eventtype_t last, void *tag, - isc_eventlist_t *events); -unsigned int -isc__task_unsend(isc_task_t *task, void *sender, isc_eventtype_t type, - void *tag, isc_eventlist_t *events); -isc_result_t -isc__task_onshutdown(isc_task_t *task0, isc_taskaction_t action, - void *arg); -void -isc__task_shutdown(isc_task_t *task0); -void -isc__task_destroy(isc_task_t **taskp); -void -isc__task_setname(isc_task_t *task0, const char *name, void *tag); -const char * -isc__task_getname(isc_task_t *task0); -void * -isc__task_gettag(isc_task_t *task0); -void -isc__task_getcurrenttime(isc_task_t *task0, isc_stdtime_t *t); -void -isc__task_getcurrenttimex(isc_task_t *task0, isc_time_t *t); -isc_result_t -isc__taskmgr_create(isc_mem_t *mctx, unsigned int workers, - unsigned int default_quantum, isc_taskmgr_t **managerp); -void -isc__taskmgr_destroy(isc_taskmgr_t **managerp); void isc_taskmgr_setexcltask(isc_taskmgr_t *mgr0, isc_task_t *task0); isc_result_t isc_taskmgr_excltask(isc_taskmgr_t *mgr0, isc_task_t **taskp); -isc_result_t -isc__task_beginexclusive(isc_task_t *task); -void -isc__task_endexclusive(isc_task_t *task0); -void -isc__task_setprivilege(isc_task_t *task0, bool priv); -bool -isc__task_privilege(isc_task_t *task0); -void -isc__taskmgr_setmode(isc_taskmgr_t *manager0, isc_taskmgrmode_t mode); -isc_taskmgrmode_t -isc__taskmgr_mode(isc_taskmgr_t *manager0); - static inline bool empty_readyq(isc__taskmgr_t *manager); @@ -236,49 +183,6 @@ pop_readyq(isc__taskmgr_t *manager); static inline void push_readyq(isc__taskmgr_t *manager, isc__task_t *task); -static struct isc__taskmethods { - isc_taskmethods_t methods; - - /*% - * The following are defined just for avoiding unused static functions. - */ - void *purgeevent, *unsendrange, *getname, *gettag, - *getcurrenttime, *getcurrenttimex; -} taskmethods = { - { - isc__task_attach, - isc__task_detach, - isc__task_destroy, - isc__task_send, - isc__task_sendanddetach, - isc__task_unsend, - isc__task_onshutdown, - isc__task_shutdown, - isc__task_setname, - isc__task_purge, - isc__task_purgerange, - isc__task_beginexclusive, - isc__task_endexclusive, - isc__task_setprivilege, - isc__task_privilege - }, - (void *)isc_task_purgeevent, - (void *)isc__task_unsendrange, - (void *)isc__task_getname, - (void *)isc__task_gettag, - (void *)isc__task_getcurrenttime, - (void *)isc__task_getcurrenttimex -}; - -static isc_taskmgrmethods_t taskmgrmethods = { - isc__taskmgr_destroy, - isc__taskmgr_setmode, - isc__taskmgr_mode, - isc__task_create, - isc_taskmgr_setexcltask, - isc_taskmgr_excltask -}; - /*** *** Tasks. ***/ @@ -315,7 +219,7 @@ task_finished(isc__task_t *task) { } isc_result_t -isc__task_create(isc_taskmgr_t *manager0, unsigned int quantum, +isc_task_create(isc_taskmgr_t *manager0, unsigned int quantum, isc_task_t **taskp) { isc__taskmgr_t *manager = (isc__taskmgr_t *)manager0; @@ -367,7 +271,6 @@ isc__task_create(isc_taskmgr_t *manager0, unsigned int quantum, return (ISC_R_SHUTTINGDOWN); } - task->common.methods = (isc_taskmethods_t *)&taskmethods; task->common.magic = ISCAPI_TASK_MAGIC; task->common.impmagic = TASK_MAGIC; *taskp = (isc_task_t *)task; @@ -376,7 +279,7 @@ isc__task_create(isc_taskmgr_t *manager0, unsigned int quantum, } void -isc__task_attach(isc_task_t *source0, isc_task_t **targetp) { +isc_task_attach(isc_task_t *source0, isc_task_t **targetp) { isc__task_t *source = (isc__task_t *)source0; /* @@ -442,7 +345,7 @@ task_shutdown(isc__task_t *task) { static inline void task_ready(isc__task_t *task) { isc__taskmgr_t *manager = task->manager; - bool has_privilege = isc__task_privilege((isc_task_t *) task); + bool has_privilege = isc_task_privilege((isc_task_t *) task); REQUIRE(VALID_MANAGER(manager)); REQUIRE(task->state == task_state_ready); @@ -486,7 +389,7 @@ task_detach(isc__task_t *task) { } void -isc__task_detach(isc_task_t **taskp) { +isc_task_detach(isc_task_t **taskp) { isc__task_t *task; bool was_idle; @@ -543,7 +446,7 @@ task_send(isc__task_t *task, isc_event_t **eventp) { } void -isc__task_send(isc_task_t *task0, isc_event_t **eventp) { +isc_task_send(isc_task_t *task0, isc_event_t **eventp) { isc__task_t *task = (isc__task_t *)task0; bool was_idle; @@ -585,7 +488,7 @@ isc__task_send(isc_task_t *task0, isc_event_t **eventp) { } void -isc__task_sendanddetach(isc_task_t **taskp, isc_event_t **eventp) { +isc_task_sendanddetach(isc_task_t **taskp, isc_event_t **eventp) { bool idle1, idle2; isc__task_t *task; @@ -662,13 +565,14 @@ dequeue_events(isc__task_t *task, void *sender, isc_eventtype_t first, } unsigned int -isc__task_purgerange(isc_task_t *task0, void *sender, isc_eventtype_t first, +isc_task_purgerange(isc_task_t *task0, void *sender, isc_eventtype_t first, isc_eventtype_t last, void *tag) { isc__task_t *task = (isc__task_t *)task0; unsigned int count; isc_eventlist_t events; isc_event_t *event, *next_event; + REQUIRE(VALID_TASK(task)); /* * Purge events from a task's event queue. @@ -695,16 +599,17 @@ isc__task_purgerange(isc_task_t *task0, void *sender, isc_eventtype_t first, } unsigned int -isc__task_purge(isc_task_t *task, void *sender, isc_eventtype_t type, +isc_task_purge(isc_task_t *task, void *sender, isc_eventtype_t type, void *tag) { /* * Purge events from a task's event queue. */ + REQUIRE(VALID_TASK(task)); XTRACE("isc_task_purge"); - return (isc__task_purgerange(task, sender, type, type, tag)); + return (isc_task_purgerange(task, sender, type, type, tag)); } bool @@ -752,13 +657,14 @@ isc_task_purgeevent(isc_task_t *task0, isc_event_t *event) { } unsigned int -isc__task_unsendrange(isc_task_t *task, void *sender, isc_eventtype_t first, +isc_task_unsendrange(isc_task_t *task, void *sender, isc_eventtype_t first, isc_eventtype_t last, void *tag, isc_eventlist_t *events) { /* * Remove events from a task's event queue. */ + REQUIRE(VALID_TASK(task)); XTRACE("isc_task_unsendrange"); @@ -767,7 +673,7 @@ isc__task_unsendrange(isc_task_t *task, void *sender, isc_eventtype_t first, } unsigned int -isc__task_unsend(isc_task_t *task, void *sender, isc_eventtype_t type, +isc_task_unsend(isc_task_t *task, void *sender, isc_eventtype_t type, void *tag, isc_eventlist_t *events) { /* @@ -781,7 +687,7 @@ isc__task_unsend(isc_task_t *task, void *sender, isc_eventtype_t type, } isc_result_t -isc__task_onshutdown(isc_task_t *task0, isc_taskaction_t action, +isc_task_onshutdown(isc_task_t *task0, isc_taskaction_t action, void *arg) { isc__task_t *task = (isc__task_t *)task0; @@ -821,7 +727,7 @@ isc__task_onshutdown(isc_task_t *task0, isc_taskaction_t action, } void -isc__task_shutdown(isc_task_t *task0) { +isc_task_shutdown(isc_task_t *task0) { isc__task_t *task = (isc__task_t *)task0; bool was_idle; @@ -840,7 +746,7 @@ isc__task_shutdown(isc_task_t *task0) { } void -isc__task_destroy(isc_task_t **taskp) { +isc_task_destroy(isc_task_t **taskp) { /* * Destroy '*taskp'. @@ -853,7 +759,7 @@ isc__task_destroy(isc_task_t **taskp) { } void -isc__task_setname(isc_task_t *task0, const char *name, void *tag) { +isc_task_setname(isc_task_t *task0, const char *name, void *tag) { isc__task_t *task = (isc__task_t *)task0; /* @@ -868,8 +774,9 @@ isc__task_setname(isc_task_t *task0, const char *name, void *tag) { UNLOCK(&task->lock); } + const char * -isc__task_getname(isc_task_t *task0) { +isc_task_getname(isc_task_t *task0) { isc__task_t *task = (isc__task_t *)task0; REQUIRE(VALID_TASK(task)); @@ -878,7 +785,7 @@ isc__task_getname(isc_task_t *task0) { } void * -isc__task_gettag(isc_task_t *task0) { +isc_task_gettag(isc_task_t *task0) { isc__task_t *task = (isc__task_t *)task0; REQUIRE(VALID_TASK(task)); @@ -887,7 +794,7 @@ isc__task_gettag(isc_task_t *task0) { } void -isc__task_getcurrenttime(isc_task_t *task0, isc_stdtime_t *t) { +isc_task_getcurrenttime(isc_task_t *task0, isc_stdtime_t *t) { isc__task_t *task = (isc__task_t *)task0; REQUIRE(VALID_TASK(task)); @@ -899,7 +806,7 @@ isc__task_getcurrenttime(isc_task_t *task0, isc_stdtime_t *t) { } void -isc__task_getcurrenttimex(isc_task_t *task0, isc_time_t *t) { +isc_task_getcurrenttimex(isc_task_t *task0, isc_time_t *t) { isc__task_t *task = (isc__task_t *)task0; REQUIRE(VALID_TASK(task)); @@ -1276,7 +1183,7 @@ manager_free(isc__taskmgr_t *manager) { } isc_result_t -isc__taskmgr_create(isc_mem_t *mctx, unsigned int workers, +isc_taskmgr_create(isc_mem_t *mctx, unsigned int workers, unsigned int default_quantum, isc_taskmgr_t **managerp) { isc_result_t result; @@ -1293,7 +1200,6 @@ isc__taskmgr_create(isc_mem_t *mctx, unsigned int workers, manager = isc_mem_get(mctx, sizeof(*manager)); if (manager == NULL) return (ISC_R_NOMEMORY); - manager->common.methods = &taskmgrmethods; manager->common.impmagic = TASK_MANAGER_MAGIC; manager->common.magic = ISCAPI_TASKMGR_MAGIC; manager->mode = isc_taskmgrmode_normal; @@ -1395,7 +1301,7 @@ isc__taskmgr_create(isc_mem_t *mctx, unsigned int workers, } void -isc__taskmgr_destroy(isc_taskmgr_t **managerp) { +isc_taskmgr_destroy(isc_taskmgr_t **managerp) { isc__taskmgr_t *manager; isc__task_t *task; unsigned int i; @@ -1422,7 +1328,7 @@ isc__taskmgr_destroy(isc_taskmgr_t **managerp) { */ LOCK(&manager->excl_lock); if (manager->excl != NULL) - isc__task_detach((isc_task_t **) &manager->excl); + isc_task_detach((isc_task_t **) &manager->excl); UNLOCK(&manager->excl_lock); /* @@ -1479,7 +1385,7 @@ isc__taskmgr_destroy(isc_taskmgr_t **managerp) { } void -isc__taskmgr_setmode(isc_taskmgr_t *manager0, isc_taskmgrmode_t mode) { +isc_taskmgr_setmode(isc_taskmgr_t *manager0, isc_taskmgrmode_t mode) { isc__taskmgr_t *manager = (isc__taskmgr_t *)manager0; LOCK(&manager->lock); @@ -1488,7 +1394,7 @@ isc__taskmgr_setmode(isc_taskmgr_t *manager0, isc_taskmgrmode_t mode) { } isc_taskmgrmode_t -isc__taskmgr_mode(isc_taskmgr_t *manager0) { +isc_taskmgr_mode(isc_taskmgr_t *manager0) { isc__taskmgr_t *manager = (isc__taskmgr_t *)manager0; isc_taskmgrmode_t mode; LOCK(&manager->lock); @@ -1529,8 +1435,8 @@ isc_taskmgr_setexcltask(isc_taskmgr_t *mgr0, isc_task_t *task0) { REQUIRE(VALID_TASK(task)); LOCK(&mgr->excl_lock); if (mgr->excl != NULL) - isc__task_detach((isc_task_t **) &mgr->excl); - isc__task_attach(task0, (isc_task_t **) &mgr->excl); + isc_task_detach((isc_task_t **) &mgr->excl); + isc_task_attach(task0, (isc_task_t **) &mgr->excl); UNLOCK(&mgr->excl_lock); } @@ -1544,7 +1450,7 @@ isc_taskmgr_excltask(isc_taskmgr_t *mgr0, isc_task_t **taskp) { LOCK(&mgr->excl_lock); if (mgr->excl != NULL) - isc__task_attach((isc_task_t *) mgr->excl, taskp); + isc_task_attach((isc_task_t *) mgr->excl, taskp); else result = ISC_R_NOTFOUND; UNLOCK(&mgr->excl_lock); @@ -1553,9 +1459,10 @@ isc_taskmgr_excltask(isc_taskmgr_t *mgr0, isc_task_t **taskp) { } isc_result_t -isc__task_beginexclusive(isc_task_t *task0) { +isc_task_beginexclusive(isc_task_t *task0) { isc__task_t *task = (isc__task_t *)task0; isc__taskmgr_t *manager = task->manager; + REQUIRE(VALID_TASK(task)); REQUIRE(task->state == task_state_running); /* @@ -1577,10 +1484,11 @@ isc__task_beginexclusive(isc_task_t *task0) { } void -isc__task_endexclusive(isc_task_t *task0) { +isc_task_endexclusive(isc_task_t *task0) { isc__task_t *task = (isc__task_t *)task0; isc__taskmgr_t *manager = task->manager; + REQUIRE(VALID_TASK(task)); REQUIRE(task->state == task_state_running); LOCK(&manager->lock); REQUIRE(manager->exclusive_requested); @@ -1590,7 +1498,8 @@ isc__task_endexclusive(isc_task_t *task0) { } void -isc__task_setprivilege(isc_task_t *task0, bool priv) { +isc_task_setprivilege(isc_task_t *task0, bool priv) { + REQUIRE(ISCAPI_TASK_VALID(task0)); isc__task_t *task = (isc__task_t *)task0; isc__taskmgr_t *manager = task->manager; bool oldpriv; @@ -1617,9 +1526,10 @@ isc__task_setprivilege(isc_task_t *task0, bool priv) { } bool -isc__task_privilege(isc_task_t *task0) { +isc_task_privilege(isc_task_t *task0) { isc__task_t *task = (isc__task_t *)task0; bool priv; + REQUIRE(VALID_TASK(task)); LOCK(&task->lock); priv = (task->flags & TASK_F_PRIVILEGED); @@ -1627,11 +1537,6 @@ isc__task_privilege(isc_task_t *task0) { return (priv); } -isc_result_t -isc__task_register(void) { - return (isc_task_register(isc__taskmgr_create)); -} - bool isc_task_exiting(isc_task_t *t) { isc__task_t *task = (isc__task_t *)t; @@ -1837,31 +1742,6 @@ isc_taskmgr_renderjson(isc_taskmgr_t *mgr0, json_object *tasks) { #endif -static isc_mutex_t createlock; -static isc_once_t once = ISC_ONCE_INIT; -static isc_taskmgrcreatefunc_t taskmgr_createfunc = NULL; - -static void -initialize(void) { - RUNTIME_CHECK(isc_mutex_init(&createlock) == ISC_R_SUCCESS); -} - -isc_result_t -isc_task_register(isc_taskmgrcreatefunc_t createfunc) { - isc_result_t result = ISC_R_SUCCESS; - - RUNTIME_CHECK(isc_once_do(&once, initialize) == ISC_R_SUCCESS); - - LOCK(&createlock); - if (taskmgr_createfunc == NULL) - taskmgr_createfunc = createfunc; - else - result = ISC_R_EXISTS; - UNLOCK(&createlock); - - return (result); -} - isc_result_t isc_taskmgr_createinctx(isc_mem_t *mctx, isc_appctx_t *actx, unsigned int workers, unsigned int default_quantum, @@ -1869,189 +1749,12 @@ isc_taskmgr_createinctx(isc_mem_t *mctx, isc_appctx_t *actx, { isc_result_t result; - LOCK(&createlock); - - REQUIRE(taskmgr_createfunc != NULL); - result = (*taskmgr_createfunc)(mctx, workers, default_quantum, + result = isc_taskmgr_create(mctx, workers, default_quantum, managerp); - UNLOCK(&createlock); - if (result == ISC_R_SUCCESS) isc_appctx_settaskmgr(actx, *managerp); return (result); } -isc_result_t -isc_taskmgr_create(isc_mem_t *mctx, unsigned int workers, - unsigned int default_quantum, isc_taskmgr_t **managerp) -{ - return (isc__taskmgr_create(mctx, workers, - default_quantum, managerp)); -} - -void -isc_taskmgr_destroy(isc_taskmgr_t **managerp) { - REQUIRE(managerp != NULL && ISCAPI_TASKMGR_VALID(*managerp)); - - isc__taskmgr_destroy(managerp); - - ENSURE(*managerp == NULL); -} - -void -isc_taskmgr_setmode(isc_taskmgr_t *manager, isc_taskmgrmode_t mode) { - REQUIRE(ISCAPI_TASKMGR_VALID(manager)); - - isc__taskmgr_setmode(manager, mode); -} - -isc_taskmgrmode_t -isc_taskmgr_mode(isc_taskmgr_t *manager) { - REQUIRE(ISCAPI_TASKMGR_VALID(manager)); - - return (isc__taskmgr_mode(manager)); -} - -isc_result_t -isc_task_create(isc_taskmgr_t *manager, unsigned int quantum, - isc_task_t **taskp) -{ - REQUIRE(ISCAPI_TASKMGR_VALID(manager)); - REQUIRE(taskp != NULL && *taskp == NULL); - - return (isc__task_create(manager, quantum, taskp)); -} - -void -isc_task_attach(isc_task_t *source, isc_task_t **targetp) { - REQUIRE(ISCAPI_TASK_VALID(source)); - REQUIRE(targetp != NULL && *targetp == NULL); - - isc__task_attach(source, targetp); - - ENSURE(*targetp == source); -} - -void -isc_task_detach(isc_task_t **taskp) { - REQUIRE(taskp != NULL && ISCAPI_TASK_VALID(*taskp)); - - isc__task_detach(taskp); - - ENSURE(*taskp == NULL); -} - -void -isc_task_send(isc_task_t *task, isc_event_t **eventp) { - REQUIRE(ISCAPI_TASK_VALID(task)); - REQUIRE(eventp != NULL && *eventp != NULL); - - isc__task_send(task, eventp); -} - -void -isc_task_sendanddetach(isc_task_t **taskp, isc_event_t **eventp) { - REQUIRE(taskp != NULL && ISCAPI_TASK_VALID(*taskp)); - REQUIRE(eventp != NULL && *eventp != NULL); - - isc__task_sendanddetach(taskp, eventp); - - ENSURE(*taskp == NULL); -} - -unsigned int -isc_task_unsend(isc_task_t *task, void *sender, isc_eventtype_t type, - void *tag, isc_eventlist_t *events) -{ - REQUIRE(ISCAPI_TASK_VALID(task)); - - return (isc__task_unsend(task, sender, type, tag, events)); -} - -isc_result_t -isc_task_onshutdown(isc_task_t *task, isc_taskaction_t action, void *arg) -{ - REQUIRE(ISCAPI_TASK_VALID(task)); - - return (isc__task_onshutdown(task, action, arg)); -} - -void -isc_task_shutdown(isc_task_t *task) { - REQUIRE(ISCAPI_TASK_VALID(task)); - - isc__task_shutdown(task); -} - -void -isc_task_destroy(isc_task_t **taskp) { - isc__task_destroy(taskp); -} - -void -isc_task_setname(isc_task_t *task, const char *name, void *tag) { - REQUIRE(ISCAPI_TASK_VALID(task)); - - isc__task_setname(task, name, tag); -} - -unsigned int -isc_task_purge(isc_task_t *task, void *sender, isc_eventtype_t type, void *tag) -{ - REQUIRE(ISCAPI_TASK_VALID(task)); - - return (isc__task_purge(task, sender, type, tag)); -} - -isc_result_t -isc_task_beginexclusive(isc_task_t *task) { - REQUIRE(ISCAPI_TASK_VALID(task)); - - return (isc__task_beginexclusive(task)); -} - -void -isc_task_endexclusive(isc_task_t *task) { - REQUIRE(ISCAPI_TASK_VALID(task)); - - isc__task_endexclusive(task); -} - -void -isc_task_setprivilege(isc_task_t *task, bool priv) { - REQUIRE(ISCAPI_TASK_VALID(task)); - - isc__task_setprivilege(task, priv); -} - -bool -isc_task_privilege(isc_task_t *task) { - REQUIRE(ISCAPI_TASK_VALID(task)); - - return (isc__task_privilege(task)); -} - -void -isc_task_getcurrenttime(isc_task_t *task, isc_stdtime_t *t) { - isc__task_getcurrenttime(task, t); -} - -void -isc_task_getcurrenttimex(isc_task_t *task, isc_time_t *t) { - isc__task_getcurrenttimex(task, t); -} - -/*% - * This is necessary for libisc's internal timer implementation. Other - * implementation might skip implementing this. - */ -unsigned int -isc_task_purgerange(isc_task_t *task, void *sender, isc_eventtype_t first, - isc_eventtype_t last, void *tag) -{ - REQUIRE(ISCAPI_TASK_VALID(task)); - - return (isc__task_purgerange(task, sender, first, last, tag)); -} diff --git a/lib/isc/tests/mem_test.c b/lib/isc/tests/mem_test.c index d9d23841496..d19228bb700 100644 --- a/lib/isc/tests/mem_test.c +++ b/lib/isc/tests/mem_test.c @@ -288,7 +288,7 @@ ATF_TC_BODY(isc_mem_noflags, tc) { isc_mem_debugging = 0; ptr = isc_mem_get(mctx2, 2048); ATF_CHECK(ptr != NULL); - isc__mem_printactive(mctx2, f); + isc_mem_printactive(mctx2, f); isc_mem_put(mctx2, ptr, 2048); isc_mem_destroy(&mctx2); isc_stdio_close(f); @@ -339,7 +339,7 @@ ATF_TC_BODY(isc_mem_recordflag, tc) { ATF_REQUIRE_EQ(result, ISC_R_SUCCESS); ptr = isc_mem_get(mctx2, 2048); ATF_CHECK(ptr != NULL); - isc__mem_printactive(mctx2, f); + isc_mem_printactive(mctx2, f); isc_mem_put(mctx2, ptr, 2048); isc_mem_destroy(&mctx2); isc_stdio_close(f); @@ -390,7 +390,7 @@ ATF_TC_BODY(isc_mem_traceflag, tc) { ATF_REQUIRE_EQ(result, ISC_R_SUCCESS); ptr = isc_mem_get(mctx2, 2048); ATF_CHECK(ptr != NULL); - isc__mem_printactive(mctx2, f); + isc_mem_printactive(mctx2, f); isc_mem_put(mctx2, ptr, 2048); isc_mem_destroy(&mctx2); isc_stdio_close(f); diff --git a/lib/isc/timer.c b/lib/isc/timer.c index dc00768385b..f75ea186439 100644 --- a/lib/isc/timer.c +++ b/lib/isc/timer.c @@ -97,35 +97,8 @@ struct isc__timermgr { isc_heap_t * heap; }; -/*% - * The following are intended for internal use (indicated by "isc__" - * prefix) but are not declared as static, allowing direct access from - * unit tests etc. - */ - -isc_result_t -isc__timer_create(isc_timermgr_t *manager, isc_timertype_t type, - const isc_time_t *expires, const isc_interval_t *interval, - isc_task_t *task, isc_taskaction_t action, void *arg, - isc_timer_t **timerp); -isc_result_t -isc__timer_reset(isc_timer_t *timer, isc_timertype_t type, - const isc_time_t *expires, const isc_interval_t *interval, - bool purge); -isc_timertype_t -isc_timer_gettype(isc_timer_t *timer); -isc_result_t -isc__timer_touch(isc_timer_t *timer); -void -isc__timer_attach(isc_timer_t *timer0, isc_timer_t **timerp); -void -isc__timer_detach(isc_timer_t **timerp); -isc_result_t -isc__timermgr_create(isc_mem_t *mctx, isc_timermgr_t **managerp); void isc_timermgr_poke(isc_timermgr_t *manager0); -void -isc__timermgr_destroy(isc_timermgr_t **managerp); static inline isc_result_t schedule(isc__timer_t *timer, isc_time_t *now, bool signal_ok) { @@ -268,10 +241,10 @@ destroy(isc__timer_t *timer) { } isc_result_t -isc__timer_create(isc_timermgr_t *manager0, isc_timertype_t type, - const isc_time_t *expires, const isc_interval_t *interval, - isc_task_t *task, isc_taskaction_t action, void *arg, - isc_timer_t **timerp) +isc_timer_create(isc_timermgr_t *manager0, isc_timertype_t type, + const isc_time_t *expires, const isc_interval_t *interval, + isc_task_t *task, isc_taskaction_t action, void *arg, + isc_timer_t **timerp) { isc__timermgr_t *manager = (isc__timermgr_t *)manager0; isc__timer_t *timer; @@ -389,7 +362,7 @@ isc__timer_create(isc_timermgr_t *manager0, isc_timertype_t type, } isc_result_t -isc__timer_reset(isc_timer_t *timer0, isc_timertype_t type, +isc_timer_reset(isc_timer_t *timer0, isc_timertype_t type, const isc_time_t *expires, const isc_interval_t *interval, bool purge) { @@ -479,7 +452,7 @@ isc_timer_gettype(isc_timer_t *timer0) { } isc_result_t -isc__timer_touch(isc_timer_t *timer0) { +isc_timer_touch(isc_timer_t *timer0) { isc__timer_t *timer = (isc__timer_t *)timer0; isc_result_t result; isc_time_t now; @@ -510,7 +483,7 @@ isc__timer_touch(isc_timer_t *timer0) { } void -isc__timer_attach(isc_timer_t *timer0, isc_timer_t **timerp) { +isc_timer_attach(isc_timer_t *timer0, isc_timer_t **timerp) { isc__timer_t *timer = (isc__timer_t *)timer0; /* @@ -528,7 +501,7 @@ isc__timer_attach(isc_timer_t *timer0, isc_timer_t **timerp) { } void -isc__timer_detach(isc_timer_t **timerp) { +isc_timer_detach(isc_timer_t **timerp) { isc__timer_t *timer; bool free_timer = false; @@ -742,7 +715,7 @@ set_index(void *what, unsigned int index) { } isc_result_t -isc__timermgr_create(isc_mem_t *mctx, isc_timermgr_t **managerp) { +isc_timermgr_create(isc_mem_t *mctx, isc_timermgr_t **managerp) { isc__timermgr_t *manager; isc_result_t result; @@ -818,7 +791,7 @@ isc_timermgr_poke(isc_timermgr_t *manager0) { } void -isc__timermgr_destroy(isc_timermgr_t **managerp) { +isc_timermgr_destroy(isc_timermgr_t **managerp) { isc__timermgr_t *manager; isc_mem_t *mctx; @@ -866,114 +839,16 @@ isc__timermgr_destroy(isc_timermgr_t **managerp) { } -isc_result_t -isc__timer_register(void) { - return (isc_timer_register(isc__timermgr_create)); -} - -static isc_mutex_t createlock; -static isc_once_t once = ISC_ONCE_INIT; -static isc_timermgrcreatefunc_t timermgr_createfunc = NULL; - -static void -initialize(void) { - RUNTIME_CHECK(isc_mutex_init(&createlock) == ISC_R_SUCCESS); -} - -isc_result_t -isc_timer_register(isc_timermgrcreatefunc_t createfunc) { - isc_result_t result = ISC_R_SUCCESS; - - RUNTIME_CHECK(isc_once_do(&once, initialize) == ISC_R_SUCCESS); - - LOCK(&createlock); - if (timermgr_createfunc == NULL) - timermgr_createfunc = createfunc; - else - result = ISC_R_EXISTS; - UNLOCK(&createlock); - - return (result); -} - isc_result_t isc_timermgr_createinctx(isc_mem_t *mctx, isc_appctx_t *actx, isc_timermgr_t **managerp) { isc_result_t result; - LOCK(&createlock); - - REQUIRE(timermgr_createfunc != NULL); - result = (*timermgr_createfunc)(mctx, managerp); - - UNLOCK(&createlock); + result = isc_timermgr_create(mctx, managerp); if (result == ISC_R_SUCCESS) isc_appctx_settimermgr(actx, *managerp); return (result); } - -isc_result_t -isc_timermgr_create(isc_mem_t *mctx, isc_timermgr_t **managerp) { - return (isc__timermgr_create(mctx, managerp)); -} - -void -isc_timermgr_destroy(isc_timermgr_t **managerp) { - REQUIRE(*managerp != NULL && ISCAPI_TIMERMGR_VALID(*managerp)); - - isc__timermgr_destroy(managerp); - - ENSURE(*managerp == NULL); -} - -isc_result_t -isc_timer_create(isc_timermgr_t *manager, isc_timertype_t type, - const isc_time_t *expires, const isc_interval_t *interval, - isc_task_t *task, isc_taskaction_t action, void *arg, - isc_timer_t **timerp) -{ - REQUIRE(ISCAPI_TIMERMGR_VALID(manager)); - - return (isc__timer_create(manager, type, expires, interval, - task, action, arg, timerp)); -} - -void -isc_timer_attach(isc_timer_t *timer, isc_timer_t **timerp) { - REQUIRE(ISCAPI_TIMER_VALID(timer)); - REQUIRE(timerp != NULL && *timerp == NULL); - - isc__timer_attach(timer, timerp); - - ENSURE(*timerp == timer); -} - -void -isc_timer_detach(isc_timer_t **timerp) { - REQUIRE(timerp != NULL && ISCAPI_TIMER_VALID(*timerp)); - - isc__timer_detach(timerp); - - ENSURE(*timerp == NULL); -} - -isc_result_t -isc_timer_reset(isc_timer_t *timer, isc_timertype_t type, - const isc_time_t *expires, const isc_interval_t *interval, - bool purge) -{ - REQUIRE(ISCAPI_TIMER_VALID(timer)); - - return (isc__timer_reset(timer, type, expires, - interval, purge)); -} - -isc_result_t -isc_timer_touch(isc_timer_t *timer) { - REQUIRE(ISCAPI_TIMER_VALID(timer)); - - return (isc__timer_touch(timer)); -} diff --git a/lib/isc/unix/app.c b/lib/isc/unix/app.c index 58c23714180..ea691d41271 100644 --- a/lib/isc/unix/app.c +++ b/lib/isc/unix/app.c @@ -51,34 +51,7 @@ * as an event loop dispatching various events. */ static pthread_t blockedthread; - -/*% - * The following are intended for internal use (indicated by "isc__" - * prefix) but are not declared as static, allowing direct access from - * unit tests etc. - */ -isc_result_t isc__app_start(void); -isc_result_t isc__app_ctxstart(isc_appctx_t *ctx); -isc_result_t isc__app_onrun(isc_mem_t *mctx, isc_task_t *task, - isc_taskaction_t action, void *arg); -isc_result_t isc__app_ctxrun(isc_appctx_t *ctx); -isc_result_t isc__app_run(void); -isc_result_t isc__app_ctxshutdown(isc_appctx_t *ctx); -isc_result_t isc__app_shutdown(void); -isc_result_t isc__app_reload(void); -isc_result_t isc__app_ctxsuspend(isc_appctx_t *ctx); -void isc__app_ctxfinish(isc_appctx_t *ctx); -void isc__app_finish(void); -void isc__app_block(void); -void isc__app_unblock(void); -isc_result_t isc__appctx_create(isc_mem_t *mctx, isc_appctx_t **ctxp); -void isc__appctx_destroy(isc_appctx_t **ctxp); -void isc__appctx_settaskmgr(isc_appctx_t *ctx, isc_taskmgr_t *taskmgr); -void isc__appctx_setsocketmgr(isc_appctx_t *ctx, isc_socketmgr_t *socketmgr); -void isc__appctx_settimermgr(isc_appctx_t *ctx, isc_timermgr_t *timermgr); -isc_result_t isc__app_ctxonrun(isc_appctx_t *ctx, isc_mem_t *mctx, - isc_task_t *task, isc_taskaction_t action, - void *arg); +static bool is_running; /* * The application context of this module. This implementation actually @@ -152,7 +125,7 @@ handle_signal(int sig, void (*handler)(int)) { } isc_result_t -isc__app_ctxstart(isc_appctx_t *ctx0) { +isc_app_ctxstart(isc_appctx_t *ctx0) { isc__appctx_t *ctx = (isc__appctx_t *)ctx0; isc_result_t result; int presult; @@ -270,25 +243,25 @@ isc__app_ctxstart(isc_appctx_t *ctx0) { } isc_result_t -isc__app_start(void) { +isc_app_start(void) { isc_g_appctx.common.impmagic = APPCTX_MAGIC; isc_g_appctx.common.magic = ISCAPI_APPCTX_MAGIC; isc_g_appctx.mctx = NULL; /* The remaining members will be initialized in ctxstart() */ - return (isc__app_ctxstart((isc_appctx_t *)&isc_g_appctx)); + return (isc_app_ctxstart((isc_appctx_t *)&isc_g_appctx)); } isc_result_t -isc__app_onrun(isc_mem_t *mctx, isc_task_t *task, isc_taskaction_t action, +isc_app_onrun(isc_mem_t *mctx, isc_task_t *task, isc_taskaction_t action, void *arg) { - return (isc__app_ctxonrun((isc_appctx_t *)&isc_g_appctx, mctx, + return (isc_app_ctxonrun((isc_appctx_t *)&isc_g_appctx, mctx, task, action, arg)); } isc_result_t -isc__app_ctxonrun(isc_appctx_t *ctx0, isc_mem_t *mctx, isc_task_t *task, +isc_app_ctxonrun(isc_appctx_t *ctx0, isc_mem_t *mctx, isc_task_t *task, isc_taskaction_t action, void *arg) { isc__appctx_t *ctx = (isc__appctx_t *)ctx0; @@ -327,7 +300,7 @@ isc__app_ctxonrun(isc_appctx_t *ctx0, isc_mem_t *mctx, isc_task_t *task, } isc_result_t -isc__app_ctxrun(isc_appctx_t *ctx0) { +isc_app_ctxrun(isc_appctx_t *ctx0) { isc__appctx_t *ctx = (isc__appctx_t *)ctx0; int result; isc_event_t *event, *next_event; @@ -474,12 +447,21 @@ isc__app_ctxrun(isc_appctx_t *ctx0) { } isc_result_t -isc__app_run(void) { - return (isc__app_ctxrun((isc_appctx_t *)&isc_g_appctx)); +isc_app_run(void) { + isc_result_t result; + is_running = true; + result = isc_app_ctxrun((isc_appctx_t *)&isc_g_appctx); + is_running = false; + return result; +} + +bool +isc_app_isrunning() { + return (is_running); } isc_result_t -isc__app_ctxshutdown(isc_appctx_t *ctx0) { +isc_app_ctxshutdown(isc_appctx_t *ctx0) { isc__appctx_t *ctx = (isc__appctx_t *)ctx0; bool want_kill = true; char strbuf[ISC_STRERRORSIZE]; @@ -527,12 +509,12 @@ isc__app_ctxshutdown(isc_appctx_t *ctx0) { } isc_result_t -isc__app_shutdown(void) { - return (isc__app_ctxshutdown((isc_appctx_t *)&isc_g_appctx)); +isc_app_shutdown(void) { + return (isc_app_ctxshutdown((isc_appctx_t *)&isc_g_appctx)); } isc_result_t -isc__app_ctxsuspend(isc_appctx_t *ctx0) { +isc_app_ctxsuspend(isc_appctx_t *ctx0) { isc__appctx_t *ctx = (isc__appctx_t *)ctx0; bool want_kill = true; char strbuf[ISC_STRERRORSIZE]; @@ -582,12 +564,12 @@ isc__app_ctxsuspend(isc_appctx_t *ctx0) { } isc_result_t -isc__app_reload(void) { - return (isc__app_ctxsuspend((isc_appctx_t *)&isc_g_appctx)); +isc_app_reload(void) { + return (isc_app_ctxsuspend((isc_appctx_t *)&isc_g_appctx)); } void -isc__app_ctxfinish(isc_appctx_t *ctx0) { +isc_app_ctxfinish(isc_appctx_t *ctx0) { isc__appctx_t *ctx = (isc__appctx_t *)ctx0; REQUIRE(VALID_APPCTX(ctx)); @@ -596,12 +578,12 @@ isc__app_ctxfinish(isc_appctx_t *ctx0) { } void -isc__app_finish(void) { - isc__app_ctxfinish((isc_appctx_t *)&isc_g_appctx); +isc_app_finish(void) { + isc_app_ctxfinish((isc_appctx_t *)&isc_g_appctx); } void -isc__app_block(void) { +isc_app_block(void) { sigset_t sset; REQUIRE(isc_g_appctx.running); REQUIRE(!isc_g_appctx.blocked); @@ -615,7 +597,7 @@ isc__app_block(void) { } void -isc__app_unblock(void) { +isc_app_unblock(void) { sigset_t sset; REQUIRE(isc_g_appctx.running); @@ -632,7 +614,7 @@ isc__app_unblock(void) { } isc_result_t -isc__appctx_create(isc_mem_t *mctx, isc_appctx_t **ctxp) { +isc_appctx_create(isc_mem_t *mctx, isc_appctx_t **ctxp) { isc__appctx_t *ctx; REQUIRE(mctx != NULL); @@ -658,7 +640,7 @@ isc__appctx_create(isc_mem_t *mctx, isc_appctx_t **ctxp) { } void -isc__appctx_destroy(isc_appctx_t **ctxp) { +isc_appctx_destroy(isc_appctx_t **ctxp) { isc__appctx_t *ctx; REQUIRE(ctxp != NULL); @@ -671,7 +653,7 @@ isc__appctx_destroy(isc_appctx_t **ctxp) { } void -isc__appctx_settaskmgr(isc_appctx_t *ctx0, isc_taskmgr_t *taskmgr) { +isc_appctx_settaskmgr(isc_appctx_t *ctx0, isc_taskmgr_t *taskmgr) { isc__appctx_t *ctx = (isc__appctx_t *)ctx0; REQUIRE(VALID_APPCTX(ctx)); @@ -680,7 +662,7 @@ isc__appctx_settaskmgr(isc_appctx_t *ctx0, isc_taskmgr_t *taskmgr) { } void -isc__appctx_setsocketmgr(isc_appctx_t *ctx0, isc_socketmgr_t *socketmgr) { +isc_appctx_setsocketmgr(isc_appctx_t *ctx0, isc_socketmgr_t *socketmgr) { isc__appctx_t *ctx = (isc__appctx_t *)ctx0; REQUIRE(VALID_APPCTX(ctx)); @@ -689,17 +671,10 @@ isc__appctx_setsocketmgr(isc_appctx_t *ctx0, isc_socketmgr_t *socketmgr) { } void -isc__appctx_settimermgr(isc_appctx_t *ctx0, isc_timermgr_t *timermgr) { +isc_appctx_settimermgr(isc_appctx_t *ctx0, isc_timermgr_t *timermgr) { isc__appctx_t *ctx = (isc__appctx_t *)ctx0; REQUIRE(VALID_APPCTX(ctx)); ctx->timermgr = timermgr; } - -isc_result_t -isc__app_register(void) { - return (isc_app_register(isc__appctx_create)); -} - -#include "../app_api.c" diff --git a/lib/isc/unix/socket.c b/lib/isc/unix/socket.c index 4097e591357..20601d6622e 100644 --- a/lib/isc/unix/socket.c +++ b/lib/isc/unix/socket.c @@ -37,6 +37,7 @@ #include #include +#include #include #include #include @@ -477,135 +478,6 @@ static void build_msghdr_recv(isc__socket_t *, char *, isc_socketevent_t *, static bool process_ctlfd(isc__socketmgr_t *manager); static void setdscp(isc__socket_t *sock, isc_dscp_t dscp); -/*% - * The following are intended for internal use (indicated by "isc__" - * prefix) but are not declared as static, allowing direct access from - * unit tests etc. - */ - -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 -isc__socket_attach(isc_socket_t *sock, isc_socket_t **socketp); -void -isc__socket_detach(isc_socket_t **socketp); -isc_result_t -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, - const 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, - const 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, - const 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, - const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo, - isc_socketevent_t *event, unsigned int flags); -isc_socketevent_t * -isc_socket_socketevent(isc_mem_t *mctx, void *sender, - isc_eventtype_t eventtype, isc_taskaction_t action, - void *arg); - -void -isc__socket_cleanunix(const isc_sockaddr_t *sockaddr, bool active); -isc_result_t -isc__socket_permunix(const isc_sockaddr_t *sockaddr, uint32_t perm, - uint32_t owner, uint32_t group); -isc_result_t -isc__socket_bind(isc_socket_t *sock, const isc_sockaddr_t *sockaddr, - isc_socket_options_t options); -isc_result_t -isc__socket_filter(isc_socket_t *sock, const char *filter); -isc_result_t -isc__socket_listen(isc_socket_t *sock, unsigned int backlog); -isc_result_t -isc__socket_accept(isc_socket_t *sock, - isc_task_t *task, isc_taskaction_t action, void *arg); -isc_result_t -isc__socket_connect(isc_socket_t *sock, const 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); -bool -isc__socket_isbound(isc_socket_t *sock); -void -isc__socket_ipv6only(isc_socket_t *sock, bool yes); -void -isc__socket_dscp(isc_socket_t *sock, isc_dscp_t dscp); -isc_result_t -isc__socket_fdwatchcreate(isc_socketmgr_t *manager, int fd, int flags, - isc_sockfdwatch_t callback, void *cbarg, - isc_task_t *task, isc_socket_t **socketp); -isc_result_t -isc__socket_fdwatchpoke(isc_socket_t *sock, int flags); -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_mem_t *mctx, isc_socketmgr_t **managerp); -isc_result_t -isc__socketmgr_create2(isc_mem_t *mctx, isc_socketmgr_t **managerp, - unsigned int maxsocks); -isc_result_t -isc_socketmgr_getmaxsockets(isc_socketmgr_t *manager0, unsigned int *nsockp); -void -isc_socketmgr_setstats(isc_socketmgr_t *manager0, isc_stats_t *stats); -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); - -#ifdef HAVE_LIBXML2 -void -isc__socketmgr_renderxml(isc_socketmgr_t *mgr0, xmlTextWriterPtr writer); -#endif -#ifdef HAVE_JSON -isc_result_t -isc__socketmgr_renderjson(isc_socketmgr_t *mgr0, json_object *stats); -#endif - #define SELECT_POKE_SHUTDOWN (-1) #define SELECT_POKE_NOTHING (-2) #define SELECT_POKE_READ (-3) @@ -2893,7 +2765,7 @@ socket_create(isc_socketmgr_t *manager0, int pf, isc_sockettype_t type, * in 'socketp'. */ isc_result_t -isc__socket_create(isc_socketmgr_t *manager0, int pf, isc_sockettype_t type, +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)); @@ -2904,7 +2776,7 @@ isc__socket_create(isc_socketmgr_t *manager0, int pf, isc_sockettype_t type, * in 'socketp'. */ isc_result_t -isc__socket_dup(isc_socket_t *sock0, isc_socket_t **socketp) { +isc_socket_dup(isc_socket_t *sock0, isc_socket_t **socketp) { isc__socket_t *sock = (isc__socket_t *)sock0; REQUIRE(VALID_SOCKET(sock)); @@ -2916,7 +2788,7 @@ isc__socket_dup(isc_socket_t *sock0, isc_socket_t **socketp) { } isc_result_t -isc__socket_open(isc_socket_t *sock0) { +isc_socket_open(isc_socket_t *sock0) { isc_result_t result; isc__socket_t *sock = (isc__socket_t *)sock0; @@ -2969,7 +2841,7 @@ isc__socket_open(isc_socket_t *sock0) { * in 'socketp'. */ isc_result_t -isc__socket_fdwatchcreate(isc_socketmgr_t *manager0, int fd, int flags, +isc_socket_fdwatchcreate(isc_socketmgr_t *manager0, int fd, int flags, isc_sockfdwatch_t callback, void *cbarg, isc_task_t *task, isc_socket_t **socketp) { @@ -3039,7 +2911,7 @@ isc__socket_fdwatchcreate(isc_socketmgr_t *manager0, int fd, int flags, */ isc_result_t -isc__socket_fdwatchpoke(isc_socket_t *sock0, int flags) +isc_socket_fdwatchpoke(isc_socket_t *sock0, int flags) { isc__socket_t *sock = (isc__socket_t *)sock0; @@ -3073,7 +2945,7 @@ isc__socket_fdwatchpoke(isc_socket_t *sock0, int flags) * Attach to a socket. Caller must explicitly detach when it is done. */ void -isc__socket_attach(isc_socket_t *sock0, isc_socket_t **socketp) { +isc_socket_attach(isc_socket_t *sock0, isc_socket_t **socketp) { isc__socket_t *sock = (isc__socket_t *)sock0; REQUIRE(VALID_SOCKET(sock)); @@ -3091,7 +2963,7 @@ isc__socket_attach(isc_socket_t *sock0, isc_socket_t **socketp) { * up by destroying the socket. */ void -isc__socket_detach(isc_socket_t **socketp) { +isc_socket_detach(isc_socket_t **socketp) { isc__socket_t *sock; bool kill_socket = false; @@ -3113,7 +2985,7 @@ isc__socket_detach(isc_socket_t **socketp) { } isc_result_t -isc__socket_close(isc_socket_t *sock0) { +isc_socket_close(isc_socket_t *sock0) { isc__socket_t *sock = (isc__socket_t *)sock0; int fd; isc__socketmgr_t *manager; @@ -4224,7 +4096,7 @@ watcher(void *uap) { } void -isc__socketmgr_setreserved(isc_socketmgr_t *manager0, uint32_t reserved) { +isc_socketmgr_setreserved(isc_socketmgr_t *manager0, uint32_t reserved) { isc__socketmgr_t *manager = (isc__socketmgr_t *)manager0; REQUIRE(VALID_MANAGER(manager)); @@ -4233,7 +4105,7 @@ isc__socketmgr_setreserved(isc_socketmgr_t *manager0, uint32_t reserved) { } void -isc__socketmgr_maxudp(isc_socketmgr_t *manager0, int maxudp) { +isc_socketmgr_maxudp(isc_socketmgr_t *manager0, int maxudp) { isc__socketmgr_t *manager = (isc__socketmgr_t *)manager0; REQUIRE(VALID_MANAGER(manager)); @@ -4445,12 +4317,12 @@ cleanup_watcher(isc_mem_t *mctx, isc__socketmgr_t *manager) { } isc_result_t -isc__socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) { - return (isc__socketmgr_create2(mctx, managerp, 0)); +isc_socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) { + return (isc_socketmgr_create2(mctx, managerp, 0)); } isc_result_t -isc__socketmgr_create2(isc_mem_t *mctx, isc_socketmgr_t **managerp, +isc_socketmgr_create2(isc_mem_t *mctx, isc_socketmgr_t **managerp, unsigned int maxsocks) { int i; @@ -4637,7 +4509,7 @@ isc_socketmgr_setstats(isc_socketmgr_t *manager0, isc_stats_t *stats) { } void -isc__socketmgr_destroy(isc_socketmgr_t **managerp) { +isc_socketmgr_destroy(isc_socketmgr_t **managerp) { isc__socketmgr_t *manager; int i; isc_mem_t *mctx; @@ -4797,7 +4669,7 @@ socket_recv(isc__socket_t *sock, isc_socketevent_t *dev, isc_task_t *task, } isc_result_t -isc__socket_recvv(isc_socket_t *sock0, isc_bufferlist_t *buflist, +isc_socket_recvv(isc_socket_t *sock0, isc_bufferlist_t *buflist, unsigned int minimum, isc_task_t *task, isc_taskaction_t action, void *arg) { @@ -4852,7 +4724,7 @@ isc__socket_recvv(isc_socket_t *sock0, isc_bufferlist_t *buflist, } isc_result_t -isc__socket_recv(isc_socket_t *sock0, isc_region_t *region, +isc_socket_recv(isc_socket_t *sock0, isc_region_t *region, unsigned int minimum, isc_task_t *task, isc_taskaction_t action, void *arg) { @@ -4873,11 +4745,11 @@ isc__socket_recv(isc_socket_t *sock0, isc_region_t *region, if (dev == NULL) return (ISC_R_NOMEMORY); - return (isc__socket_recv2(sock0, region, minimum, task, dev, 0)); + return (isc_socket_recv2(sock0, region, minimum, task, dev, 0)); } isc_result_t -isc__socket_recv2(isc_socket_t *sock0, isc_region_t *region, +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) { @@ -5001,18 +4873,18 @@ 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_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, + 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_socket_sendto(isc_socket_t *sock0, isc_region_t *region, isc_task_t *task, isc_taskaction_t action, void *arg, const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo) { @@ -5041,24 +4913,24 @@ isc__socket_sendto(isc_socket_t *sock0, isc_region_t *region, } isc_result_t -isc__socket_sendv(isc_socket_t *sock, isc_bufferlist_t *buflist, +isc_socket_sendv(isc_socket_t *sock, isc_bufferlist_t *buflist, isc_task_t *task, isc_taskaction_t action, void *arg) { - return (isc__socket_sendtov2(sock, buflist, task, action, arg, NULL, + return (isc_socket_sendtov2(sock, buflist, task, action, arg, NULL, NULL, 0)); } isc_result_t -isc__socket_sendtov(isc_socket_t *sock, isc_bufferlist_t *buflist, +isc_socket_sendtov(isc_socket_t *sock, isc_bufferlist_t *buflist, isc_task_t *task, isc_taskaction_t action, void *arg, const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo) { - return (isc__socket_sendtov2(sock, buflist, task, action, arg, address, + 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_socket_sendtov2(isc_socket_t *sock0, isc_bufferlist_t *buflist, isc_task_t *task, isc_taskaction_t action, void *arg, const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo, unsigned int flags) @@ -5100,7 +4972,7 @@ 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_socket_sendto2(isc_socket_t *sock0, isc_region_t *region, isc_task_t *task, const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo, isc_socketevent_t *event, unsigned int flags) @@ -5123,7 +4995,7 @@ isc__socket_sendto2(isc_socket_t *sock0, isc_region_t *region, } void -isc__socket_cleanunix(const isc_sockaddr_t *sockaddr, bool active) { +isc_socket_cleanunix(const isc_sockaddr_t *sockaddr, bool active) { #ifdef ISC_PLATFORM_HAVESYSUNH int s; struct stat sb; @@ -5253,7 +5125,7 @@ isc__socket_cleanunix(const isc_sockaddr_t *sockaddr, bool active) { } isc_result_t -isc__socket_permunix(const isc_sockaddr_t *sockaddr, uint32_t perm, +isc_socket_permunix(const isc_sockaddr_t *sockaddr, uint32_t perm, uint32_t owner, uint32_t group) { #ifdef ISC_PLATFORM_HAVESYSUNH @@ -5309,7 +5181,7 @@ isc__socket_permunix(const isc_sockaddr_t *sockaddr, uint32_t perm, } isc_result_t -isc__socket_bind(isc_socket_t *sock0, const isc_sockaddr_t *sockaddr, +isc_socket_bind(isc_socket_t *sock0, const isc_sockaddr_t *sockaddr, isc_socket_options_t options) { isc__socket_t *sock = (isc__socket_t *)sock0; @@ -5386,7 +5258,7 @@ isc__socket_bind(isc_socket_t *sock0, const isc_sockaddr_t *sockaddr, #undef ENABLE_ACCEPTFILTER isc_result_t -isc__socket_filter(isc_socket_t *sock0, const char *filter) { +isc_socket_filter(isc_socket_t *sock0, const char *filter) { isc__socket_t *sock = (isc__socket_t *)sock0; #if defined(SO_ACCEPTFILTER) && defined(ENABLE_ACCEPTFILTER) char strbuf[ISC_STRERRORSIZE]; @@ -5489,7 +5361,7 @@ set_tcp_fastopen(isc__socket_t *sock, unsigned int backlog) { * as well keep things simple rather than having to track them. */ isc_result_t -isc__socket_listen(isc_socket_t *sock0, unsigned int backlog) { +isc_socket_listen(isc_socket_t *sock0, unsigned int backlog) { isc__socket_t *sock = (isc__socket_t *)sock0; char strbuf[ISC_STRERRORSIZE]; @@ -5526,7 +5398,7 @@ isc__socket_listen(isc_socket_t *sock0, unsigned int backlog) { * This should try to do aggressive accept() XXXMLG */ isc_result_t -isc__socket_accept(isc_socket_t *sock0, +isc_socket_accept(isc_socket_t *sock0, isc_task_t *task, isc_taskaction_t action, void *arg) { isc__socket_t *sock = (isc__socket_t *)sock0; @@ -5601,7 +5473,7 @@ isc__socket_accept(isc_socket_t *sock0, } isc_result_t -isc__socket_connect(isc_socket_t *sock0, const isc_sockaddr_t *addr, +isc_socket_connect(isc_socket_t *sock0, const isc_sockaddr_t *addr, isc_task_t *task, isc_taskaction_t action, void *arg) { isc__socket_t *sock = (isc__socket_t *)sock0; @@ -5880,7 +5752,7 @@ internal_connect(isc_task_t *me, isc_event_t *ev) { } isc_result_t -isc__socket_getpeername(isc_socket_t *sock0, isc_sockaddr_t *addressp) { +isc_socket_getpeername(isc_socket_t *sock0, isc_sockaddr_t *addressp) { isc__socket_t *sock = (isc__socket_t *)sock0; isc_result_t result; @@ -5902,7 +5774,7 @@ isc__socket_getpeername(isc_socket_t *sock0, isc_sockaddr_t *addressp) { } isc_result_t -isc__socket_getsockname(isc_socket_t *sock0, isc_sockaddr_t *addressp) { +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; @@ -5941,7 +5813,7 @@ isc__socket_getsockname(isc_socket_t *sock0, isc_sockaddr_t *addressp) { * queued for task "task" of type "how". "how" is a bitmask. */ void -isc__socket_cancel(isc_socket_t *sock0, isc_task_t *task, unsigned int how) { +isc_socket_cancel(isc_socket_t *sock0, isc_task_t *task, unsigned int how) { isc__socket_t *sock = (isc__socket_t *)sock0; REQUIRE(VALID_SOCKET(sock)); @@ -6061,7 +5933,7 @@ 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_gettype(isc_socket_t *sock0) { isc__socket_t *sock = (isc__socket_t *)sock0; REQUIRE(VALID_SOCKET(sock)); @@ -6069,22 +5941,8 @@ isc__socket_gettype(isc_socket_t *sock0) { return (sock->type); } -bool -isc__socket_isbound(isc_socket_t *sock0) { - isc__socket_t *sock = (isc__socket_t *)sock0; - bool val; - - REQUIRE(VALID_SOCKET(sock)); - - LOCK(&sock->lock); - val = ((sock->bound) ? true : false); - UNLOCK(&sock->lock); - - return (val); -} - void -isc__socket_ipv6only(isc_socket_t *sock0, bool yes) { +isc_socket_ipv6only(isc_socket_t *sock0, bool yes) { isc__socket_t *sock = (isc__socket_t *)sock0; #if defined(IPV6_V6ONLY) int onoff = yes ? 1 : 0; @@ -6160,7 +6018,7 @@ setdscp(isc__socket_t *sock, isc_dscp_t dscp) { } void -isc__socket_dscp(isc_socket_t *sock0, isc_dscp_t dscp) { +isc_socket_dscp(isc_socket_t *sock0, isc_dscp_t dscp) { isc__socket_t *sock = (isc__socket_t *)sock0; REQUIRE(VALID_SOCKET(sock)); @@ -6194,7 +6052,7 @@ isc_socket_socketevent(isc_mem_t *mctx, void *sender, } void -isc__socket_setname(isc_socket_t *socket0, const char *name, void *tag) { +isc_socket_setname(isc_socket_t *socket0, const char *name, void *tag) { isc__socket_t *sock = (isc__socket_t *)socket0; /* @@ -6210,26 +6068,21 @@ isc__socket_setname(isc_socket_t *socket0, const char *name, void *tag) { } const char * -isc__socket_getname(isc_socket_t *socket0) { +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_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_getfd(isc_socket_t *socket0) { isc__socket_t *sock = (isc__socket_t *)socket0; return ((short) sock->fd); @@ -6491,4 +6344,16 @@ isc_socketmgr_renderjson(isc_socketmgr_t *mgr0, json_object *stats) { } #endif /* HAVE_JSON */ -#include "../socket_api.c" +isc_result_t +isc_socketmgr_createinctx(isc_mem_t *mctx, isc_appctx_t *actx, + isc_socketmgr_t **managerp) +{ + isc_result_t result; + + result = isc_socketmgr_create(mctx, managerp); + + if (result == ISC_R_SUCCESS) + isc_appctx_setsocketmgr(actx, *managerp); + + return (result); +} diff --git a/lib/isc/win32/app.c b/lib/isc/win32/app.c index 35274a27151..e2ad0b0eb5f 100644 --- a/lib/isc/win32/app.c +++ b/lib/isc/win32/app.c @@ -40,39 +40,8 @@ */ static isc_thread_t blockedthread; +static bool is_running; -/*% - * The following are intended for internal use (indicated by "isc__" - * prefix) but are not declared as static, allowing direct access from - * unit tests etc. - */ -isc_result_t isc__app_start(void); -isc_result_t isc__app_ctxstart(isc_appctx_t *ctx); -isc_result_t isc__app_onrun(isc_mem_t *mctx, isc_task_t *task, - isc_taskaction_t action, void *arg); -isc_result_t isc__app_ctxrun(isc_appctx_t *ctx); -isc_result_t isc__app_run(void); -isc_result_t isc__app_ctxshutdown(isc_appctx_t *ctx); -isc_result_t isc__app_shutdown(void); -isc_result_t isc__app_reload(void); -isc_result_t isc__app_ctxsuspend(isc_appctx_t *ctx); -void isc__app_ctxfinish(isc_appctx_t *ctx); -void isc__app_finish(void); -void isc__app_block(void); -void isc__app_unblock(void); -isc_result_t isc__appctx_create(isc_mem_t *mctx, isc_appctx_t **ctxp); -void isc__appctx_destroy(isc_appctx_t **ctxp); -void isc__appctx_settaskmgr(isc_appctx_t *ctx, isc_taskmgr_t *taskmgr); -void isc__appctx_setsocketmgr(isc_appctx_t *ctx, isc_socketmgr_t *socketmgr); -void isc__appctx_settimermgr(isc_appctx_t *ctx, isc_timermgr_t *timermgr); -isc_result_t isc__app_ctxonrun(isc_appctx_t *ctx, isc_mem_t *mctx, - isc_task_t *task, isc_taskaction_t action, - void *arg); - -/* - * The application context of this module. This implementation actually - * doesn't use it. (This may change in the future). - */ #define APPCTX_MAGIC ISC_MAGIC('A', 'p', 'c', 'x') #define VALID_APPCTX(c) ISC_MAGIC_VALID(c, APPCTX_MAGIC) @@ -112,42 +81,13 @@ typedef struct isc__appctx { static isc__appctx_t isc_g_appctx; -static struct { - isc_appmethods_t methods; - - /*% - * The following are defined just for avoiding unused static functions. - */ - void *run, *shutdown, *start, *reload, *finish, *block, *unblock; -} appmethods = { - { - isc__appctx_destroy, - isc__app_ctxstart, - isc__app_ctxrun, - isc__app_ctxsuspend, - isc__app_ctxshutdown, - isc__app_ctxfinish, - isc__appctx_settaskmgr, - isc__appctx_setsocketmgr, - isc__appctx_settimermgr, - isc__app_ctxonrun - }, - (void *)isc__app_run, - (void *)isc__app_shutdown, - (void *)isc__app_start, - (void *)isc__app_reload, - (void *)isc__app_finish, - (void *)isc__app_block, - (void *)isc__app_unblock -}; - /* * We need to remember which thread is the main thread... */ static isc_thread_t main_thread; isc_result_t -isc__app_ctxstart(isc_appctx_t *ctx0) { +isc_app_ctxstart(isc_appctx_t *ctx0) { isc__appctx_t *ctx = (isc__appctx_t *)ctx0; isc_result_t result; @@ -180,26 +120,26 @@ isc__app_ctxstart(isc_appctx_t *ctx0) { } isc_result_t -isc__app_start(void) { +isc_app_start(void) { isc_g_appctx.common.impmagic = APPCTX_MAGIC; isc_g_appctx.common.magic = ISCAPI_APPCTX_MAGIC; isc_g_appctx.common.methods = &appmethods.methods; isc_g_appctx.mctx = NULL; /* The remaining members will be initialized in ctxstart() */ - return (isc__app_ctxstart((isc_appctx_t *)&isc_g_appctx)); + return (isc_app_ctxstart((isc_appctx_t *)&isc_g_appctx)); } isc_result_t -isc__app_onrun(isc_mem_t *mctx, isc_task_t *task, isc_taskaction_t action, +isc_app_onrun(isc_mem_t *mctx, isc_task_t *task, isc_taskaction_t action, void *arg) { - return (isc__app_ctxonrun((isc_appctx_t *)&isc_g_appctx, mctx, + return (isc_app_ctxonrun((isc_appctx_t *)&isc_g_appctx, mctx, task, action, arg)); } isc_result_t -isc__app_ctxonrun(isc_appctx_t *ctx0, isc_mem_t *mctx, isc_task_t *task, +isc_app_ctxonrun(isc_appctx_t *ctx0, isc_mem_t *mctx, isc_task_t *task, isc_taskaction_t action, void *arg) { isc__appctx_t *ctx = (isc__appctx_t *)ctx0; @@ -238,7 +178,7 @@ isc__app_ctxonrun(isc_appctx_t *ctx0, isc_mem_t *mctx, isc_task_t *task, } isc_result_t -isc__app_ctxrun(isc_appctx_t *ctx0) { +isc_app_ctxrun(isc_appctx_t *ctx0) { isc__appctx_t *ctx = (isc__appctx_t *)ctx0; isc_event_t *event, *next_event; isc_task_t *task; @@ -311,12 +251,21 @@ isc__app_ctxrun(isc_appctx_t *ctx0) { } isc_result_t -isc__app_run(void) { - return (isc__app_ctxrun((isc_appctx_t *)&isc_g_appctx)); +isc_app_run(void) { + isc_result_t result; + is_running = ISC_TRUE; + result = isc_app_ctxrun((isc_appctx_t *)&isc_g_appctx); + is_running = ISC_FALSE; + return result; +} + +bool +isc_app_isrunning() { + return (is_running); } isc_result_t -isc__app_ctxshutdown(isc_appctx_t *ctx0) { +isc_app_ctxshutdown(isc_appctx_t *ctx0) { isc__appctx_t *ctx = (isc__appctx_t *)ctx0; bool want_kill = true; @@ -340,12 +289,12 @@ isc__app_ctxshutdown(isc_appctx_t *ctx0) { } isc_result_t -isc__app_shutdown(void) { - return (isc__app_ctxshutdown((isc_appctx_t *)&isc_g_appctx)); +isc_app_shutdown(void) { + return (isc_app_ctxshutdown((isc_appctx_t *)&isc_g_appctx)); } isc_result_t -isc__app_ctxsuspend(isc_appctx_t *ctx0) { +isc_app_ctxsuspend(isc_appctx_t *ctx0) { isc__appctx_t *ctx = (isc__appctx_t *)ctx0; bool want_kill = true; @@ -370,12 +319,12 @@ isc__app_ctxsuspend(isc_appctx_t *ctx0) { } isc_result_t -isc__app_reload(void) { - return (isc__app_ctxsuspend((isc_appctx_t *)&isc_g_appctx)); +isc_app_reload(void) { + return (isc_app_ctxsuspend((isc_appctx_t *)&isc_g_appctx)); } void -isc__app_ctxfinish(isc_appctx_t *ctx0) { +isc_app_ctxfinish(isc_appctx_t *ctx0) { isc__appctx_t *ctx = (isc__appctx_t *)ctx0; REQUIRE(VALID_APPCTX(ctx)); @@ -384,12 +333,12 @@ isc__app_ctxfinish(isc_appctx_t *ctx0) { } void -isc__app_finish(void) { - isc__app_ctxfinish((isc_appctx_t *)&isc_g_appctx); +isc_app_finish(void) { + isc_app_ctxfinish((isc_appctx_t *)&isc_g_appctx); } void -isc__app_block(void) { +isc_app_block(void) { REQUIRE(isc_g_appctx.running); REQUIRE(!isc_g_appctx.blocked); @@ -398,7 +347,7 @@ isc__app_block(void) { } void -isc__app_unblock(void) { +isc_app_unblock(void) { REQUIRE(isc_g_appctx.running); REQUIRE(isc_g_appctx.blocked); @@ -407,7 +356,7 @@ isc__app_unblock(void) { } isc_result_t -isc__appctx_create(isc_mem_t *mctx, isc_appctx_t **ctxp) { +isc_appctx_create(isc_mem_t *mctx, isc_appctx_t **ctxp) { isc__appctx_t *ctx; REQUIRE(mctx != NULL); @@ -434,7 +383,7 @@ isc__appctx_create(isc_mem_t *mctx, isc_appctx_t **ctxp) { } void -isc__appctx_destroy(isc_appctx_t **ctxp) { +isc_appctx_destroy(isc_appctx_t **ctxp) { isc__appctx_t *ctx; REQUIRE(ctxp != NULL); @@ -447,7 +396,7 @@ isc__appctx_destroy(isc_appctx_t **ctxp) { } void -isc__appctx_settaskmgr(isc_appctx_t *ctx0, isc_taskmgr_t *taskmgr) { +isc_appctx_settaskmgr(isc_appctx_t *ctx0, isc_taskmgr_t *taskmgr) { isc__appctx_t *ctx = (isc__appctx_t *)ctx0; REQUIRE(VALID_APPCTX(ctx)); @@ -456,7 +405,7 @@ isc__appctx_settaskmgr(isc_appctx_t *ctx0, isc_taskmgr_t *taskmgr) { } void -isc__appctx_setsocketmgr(isc_appctx_t *ctx0, isc_socketmgr_t *socketmgr) { +isc_appctx_setsocketmgr(isc_appctx_t *ctx0, isc_socketmgr_t *socketmgr) { isc__appctx_t *ctx = (isc__appctx_t *)ctx0; REQUIRE(VALID_APPCTX(ctx)); @@ -465,7 +414,7 @@ isc__appctx_setsocketmgr(isc_appctx_t *ctx0, isc_socketmgr_t *socketmgr) { } void -isc__appctx_settimermgr(isc_appctx_t *ctx0, isc_timermgr_t *timermgr) { +isc_appctx_settimermgr(isc_appctx_t *ctx0, isc_timermgr_t *timermgr) { isc__appctx_t *ctx = (isc__appctx_t *)ctx0; REQUIRE(VALID_APPCTX(ctx)); @@ -474,7 +423,7 @@ isc__appctx_settimermgr(isc_appctx_t *ctx0, isc_timermgr_t *timermgr) { } isc_result_t -isc__app_register(void) { +isc_app_register(void) { return (isc_app_register(isc__appctx_create)); } diff --git a/lib/isc/win32/libisc.def.in b/lib/isc/win32/libisc.def.in index c6b835f2c8c..59119b3dea6 100644 --- a/lib/isc/win32/libisc.def.in +++ b/lib/isc/win32/libisc.def.in @@ -9,25 +9,25 @@ closelog getpassphrase @END PKCS11 isc___socketmgr_maxudp -isc__app_block -isc__app_ctxfinish -isc__app_ctxonrun -isc__app_ctxrun -isc__app_ctxshutdown -isc__app_ctxstart -isc__app_ctxsuspend -isc__app_finish -isc__app_onrun -isc__app_reload -isc__app_run -isc__app_shutdown -isc__app_start -isc__app_unblock -isc__appctx_create -isc__appctx_destroy -isc__appctx_setsocketmgr -isc__appctx_settaskmgr -isc__appctx_settimermgr +isc_app_block +isc_app_ctxfinish +isc_app_ctxonrun +isc_app_ctxrun +isc_app_ctxshutdown +isc_app_ctxstart +isc_app_ctxsuspend +isc_app_finish +isc_app_onrun +isc_app_reload +isc_app_run +isc_app_shutdown +isc_app_start +isc_app_unblock +isc_appctx_create +isc_appctx_destroy +isc_appctx_setsocketmgr +isc_appctx_settaskmgr +isc_appctx_settimermgr isc__buffer_activeregion isc__buffer_add isc__buffer_availableregion @@ -51,60 +51,61 @@ isc__buffer_remainingregion isc__buffer_setactive isc__buffer_subtract isc__buffer_usedregion -isc__mem_allocate -isc__mem_free -isc__mem_get -isc__mem_printactive -isc__mem_put -isc__mem_putanddetach -isc__mem_reallocate -isc__mem_strdup -isc__mempool_get -isc__mempool_put -isc__socket_accept -isc__socket_attach -isc__socket_bind -isc__socket_cancel -isc__socket_cleanunix -isc__socket_close -isc__socket_connect -isc__socket_create -isc__socket_detach -isc__socket_dscp -isc__socket_dup -isc__socket_filter -isc__socket_getfd -isc__socket_getname -isc__socket_getpeername -isc__socket_getsockname -isc__socket_gettag -isc__socket_gettype -isc__socket_ipv6only -isc__socket_isbound -isc__socket_listen -isc__socket_open -isc__socket_permunix -isc__socket_recv -isc__socket_recv2 -isc__socket_recvv -isc__socket_register -isc__socket_send -isc__socket_sendto -isc__socket_sendto2 -isc__socket_sendtov -isc__socket_sendtov2 -isc__socket_sendv -isc__socket_setname -isc__socketmgr_create -isc__socketmgr_create2 -isc__socketmgr_destroy -isc__socketmgr_getmaxsockets -isc__socketmgr_setreserved -isc__socketmgr_setstats -isc__task_getname -isc__task_gettag -isc__task_unsendrange -isc__taskmgr_mode +isc_mem_allocate +isc_mem_free +isc_mem_get +isc_mem_printactive +isc_mem_put +isc_mem_putanddetach +isc_mem_reallocate +isc_mem_strdup +isc_mempool_get +isc_mempool_put +isc_socket_accept +isc_socket_attach +isc_socket_bind +isc_socket_cancel +isc_socket_cleanunix +isc_socket_close +isc_socket_connect +isc_socket_create +isc_socket_detach +isc_socket_dscp +isc_socket_dup +isc_socket_filter +isc_socket_getfd +isc_socket_getname +isc_socket_getpeername +isc_socket_getsockname +isc_socket_gettag +isc_socket_gettype +isc_socket_ipv6only +isc_socket_isbound +isc_socket_listen +isc_socket_open +isc_socket_permunix +isc_socket_recv +isc_socket_recv2 +isc_socket_recvv +isc_socket_register +isc_socket_send +isc_socket_sendto +isc_socket_sendto2 +isc_socket_sendtov +isc_socket_sendtov2 +isc_socket_sendv +isc_socket_setname +isc_socketmgr_create +isc_socketmgr_create2 +isc_socketmgr_destroy +isc_socketmgr_getmaxsockets +isc_socketmgr_setreserved +isc_socketmgr_setstats +isc__strerror +isc_task_getname +isc_task_gettag +isc_task_unsendrange +isc_taskmgr_mode isc__taskmgr_pause isc__taskmgr_resume isc_aes128_crypt diff --git a/lib/isc/win32/socket.c b/lib/isc/win32/socket.c index 22aa74fb86e..009c8c8f177 100644 --- a/lib/isc/win32/socket.c +++ b/lib/isc/win32/socket.c @@ -1799,19 +1799,19 @@ socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type, if (dup_socket) { #ifndef ISC_ALLOW_MAPPED - isc__socket_ipv6only(sock, true); + isc_socket_ipv6only(sock, true); #endif if (dup_socket->bound) { isc_sockaddr_t local; - result = isc__socket_getsockname(dup_socket, &local); + result = isc_socket_getsockname(dup_socket, &local); if (result != ISC_R_SUCCESS) { isc_socket_close(sock); return (result); } - result = isc__socket_bind(sock, &local, - ISC_SOCKET_REUSEADDRESS); + result = isc_socket_bind(sock, &local, + ISC_SOCKET_REUSEADDRESS); if (result != ISC_R_SUCCESS) { isc_socket_close(sock); return (result); @@ -1837,14 +1837,14 @@ socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type, } isc_result_t -isc__socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type, +isc_socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type, isc_socket_t **socketp) { return (socket_create(manager, pf, type, socketp, NULL)); } isc_result_t -isc__socket_dup(isc_socket_t *sock, isc_socket_t **socketp) { +isc_socket_dup(isc_socket_t *sock, isc_socket_t **socketp) { REQUIRE(VALID_SOCKET(sock)); REQUIRE(socketp != NULL && *socketp == NULL); @@ -1864,7 +1864,7 @@ isc_socket_open(isc_socket_t *sock) { * Attach to a socket. Caller must explicitly detach when it is done. */ void -isc__socket_attach(isc_socket_t *sock, isc_socket_t **socketp) { +isc_socket_attach(isc_socket_t *sock, isc_socket_t **socketp) { REQUIRE(VALID_SOCKET(sock)); REQUIRE(socketp != NULL && *socketp == NULL); @@ -1881,7 +1881,7 @@ isc__socket_attach(isc_socket_t *sock, isc_socket_t **socketp) { * up by destroying the socket. */ void -isc__socket_detach(isc_socket_t **socketp) { +isc_socket_detach(isc_socket_t **socketp) { isc_socket_t *sock; REQUIRE(socketp != NULL); @@ -2639,12 +2639,12 @@ SocketIoThread(LPVOID ThreadContext) { * Create a new socket manager. */ isc_result_t -isc__socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) { +isc_socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) { return (isc_socketmgr_create2(mctx, managerp, 0)); } isc_result_t -isc__socketmgr_create2(isc_mem_t *mctx, isc_socketmgr_t **managerp, +isc_socketmgr_create2(isc_mem_t *mctx, isc_socketmgr_t **managerp, unsigned int maxsocks) { isc_socketmgr_t *manager; @@ -2712,7 +2712,7 @@ isc_socketmgr_setstats(isc_socketmgr_t *manager, isc_stats_t *stats) { } void -isc__socketmgr_destroy(isc_socketmgr_t **managerp) { +isc_socketmgr_destroy(isc_socketmgr_t **managerp) { isc_socketmgr_t *manager; int i; isc_mem_t *mctx; @@ -2837,7 +2837,7 @@ socket_recv(isc_socket_t *sock, isc_socketevent_t *dev, isc_task_t *task, } isc_result_t -isc__socket_recvv(isc_socket_t *sock, isc_bufferlist_t *buflist, +isc;_socket_recvv(isc_socket_t *sock, isc_bufferlist_t *buflist, unsigned int minimum, isc_task_t *task, isc_taskaction_t action, void *arg) { @@ -2908,7 +2908,7 @@ isc__socket_recvv(isc_socket_t *sock, isc_bufferlist_t *buflist, } isc_result_t -isc__socket_recv(isc_socket_t *sock, isc_region_t *region, +isc_socket_recv(isc_socket_t *sock, isc_region_t *region, unsigned int minimum, isc_task_t *task, isc_taskaction_t action, void *arg) { @@ -2947,7 +2947,7 @@ isc__socket_recv(isc_socket_t *sock, isc_region_t *region, } isc_result_t -isc__socket_recv2(isc_socket_t *sock, isc_region_t *region, +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) { @@ -3058,7 +3058,7 @@ 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_socket_send(isc_socket_t *sock, isc_region_t *region, isc_task_t *task, isc_taskaction_t action, void *arg) { /* @@ -3069,7 +3069,7 @@ isc__socket_send(isc_socket_t *sock, isc_region_t *region, } isc_result_t -isc__socket_sendto(isc_socket_t *sock, isc_region_t *region, +isc_socket_sendto(isc_socket_t *sock, isc_region_t *region, isc_task_t *task, isc_taskaction_t action, void *arg, const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo) { @@ -3113,7 +3113,7 @@ isc__socket_sendto(isc_socket_t *sock, isc_region_t *region, } isc_result_t -isc__socket_sendv(isc_socket_t *sock, isc_bufferlist_t *buflist, +isc_socket_sendv(isc_socket_t *sock, isc_bufferlist_t *buflist, isc_task_t *task, isc_taskaction_t action, void *arg) { return (isc_socket_sendtov2(sock, buflist, task, action, arg, NULL, @@ -3121,8 +3121,8 @@ 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_socket_sendtov(isc_socket_t *sock, isc_bufferlist_t *buflist, + isc_task_t *task, isc_taskaction_t action, void *arg, const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo) { return (isc_socket_sendtov2(sock, buflist, task, action, arg, address, @@ -3130,10 +3130,10 @@ isc__socket_sendtov(isc_socket_t *sock, isc_bufferlist_t *buflist, } 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_socket_sendtov2(isc_socket_t *sock, isc_bufferlist_t *buflist, + isc_task_t *task, isc_taskaction_t action, void *arg, const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo, - unsigned int flags) + unsigned int flags) { isc_socketevent_t *dev; isc_socketmgr_t *manager; @@ -3187,9 +3187,9 @@ isc__socket_sendtov2(isc_socket_t *sock, isc_bufferlist_t *buflist, } isc_result_t -isc__socket_sendto2(isc_socket_t *sock, isc_region_t *region, isc_task_t *task, - const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo, - isc_socketevent_t *event, unsigned int flags) +isc_socket_sendto2(isc_socket_t *sock, isc_region_t *region, isc_task_t *task, + const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo, + isc_socketevent_t *event, unsigned int flags) { isc_result_t ret; @@ -3221,8 +3221,8 @@ isc__socket_sendto2(isc_socket_t *sock, isc_region_t *region, isc_task_t *task, } isc_result_t -isc__socket_bind(isc_socket_t *sock, const isc_sockaddr_t *sockaddr, - isc_socket_options_t options) +isc_socket_bind(isc_socket_t *sock, const isc_sockaddr_t *sockaddr, + isc_socket_options_t options) { int bind_errno; char strbuf[ISC_STRERRORSIZE]; @@ -3289,7 +3289,7 @@ isc__socket_bind(isc_socket_t *sock, const isc_sockaddr_t *sockaddr, } isc_result_t -isc__socket_filter(isc_socket_t *sock, const char *filter) { +isc_socket_filter(isc_socket_t *sock, const char *filter) { UNUSED(sock); UNUSED(filter); @@ -3308,7 +3308,7 @@ isc__socket_filter(isc_socket_t *sock, const char *filter) { * as well keep things simple rather than having to track them. */ isc_result_t -isc__socket_listen(isc_socket_t *sock, unsigned int backlog) { +isc_socket_listen(isc_socket_t *sock, unsigned int backlog) { char strbuf[ISC_STRERRORSIZE]; #if defined(ENABLE_TCP_FASTOPEN) && defined(TCP_FASTOPEN) char on = 1; @@ -3367,8 +3367,8 @@ isc__socket_listen(isc_socket_t *sock, unsigned int backlog) { * This should try to do aggressive accept() XXXMLG */ isc_result_t -isc__socket_accept(isc_socket_t *sock, - isc_task_t *task, isc_taskaction_t action, void *arg) +isc_socket_accept(isc_socket_t *sock, + isc_task_t *task, isc_taskaction_t action, void *arg) { isc_socket_newconnev_t *adev; isc_socketmgr_t *manager; @@ -3485,8 +3485,8 @@ isc__socket_accept(isc_socket_t *sock, } isc_result_t -isc__socket_connect(isc_socket_t *sock, const isc_sockaddr_t *addr, - isc_task_t *task, isc_taskaction_t action, void *arg) +isc_socket_connect(isc_socket_t *sock, const isc_sockaddr_t *addr, + isc_task_t *task, isc_taskaction_t action, void *arg) { char strbuf[ISC_STRERRORSIZE]; isc_socket_connev_t *cdev; @@ -3616,7 +3616,7 @@ isc__socket_connect(isc_socket_t *sock, const isc_sockaddr_t *addr, } isc_result_t -isc__socket_getpeername(isc_socket_t *sock, isc_sockaddr_t *addressp) { +isc_socket_getpeername(isc_socket_t *sock, isc_sockaddr_t *addressp) { isc_result_t result; REQUIRE(VALID_SOCKET(sock)); @@ -3646,7 +3646,7 @@ 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) { +isc_socket_getsockname(isc_socket_t *sock, isc_sockaddr_t *addressp) { socklen_t len; isc_result_t result; char strbuf[ISC_STRERRORSIZE]; @@ -3693,7 +3693,7 @@ isc__socket_getsockname(isc_socket_t *sock, isc_sockaddr_t *addressp) { * queued for task "task" of type "how". "how" is a bitmask. */ void -isc__socket_cancel(isc_socket_t *sock, isc_task_t *task, unsigned int how) { +isc_socket_cancel(isc_socket_t *sock, isc_task_t *task, unsigned int how) { REQUIRE(VALID_SOCKET(sock)); @@ -3819,7 +3819,7 @@ 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_socket_gettype(isc_socket_t *sock) { isc_sockettype_t type; REQUIRE(VALID_SOCKET(sock)); @@ -3839,31 +3839,8 @@ isc__socket_gettype(isc_socket_t *sock) { return (type); } -bool -isc__socket_isbound(isc_socket_t *sock) { - bool val; - - REQUIRE(VALID_SOCKET(sock)); - - LOCK(&sock->lock); - CONSISTENT(sock); - - /* - * make sure that the socket's not closed - */ - if (sock->fd == INVALID_SOCKET) { - UNLOCK(&sock->lock); - return (false); - } - - val = ((sock->bound) ? true : false); - UNLOCK(&sock->lock); - - return (val); -} - void -isc__socket_ipv6only(isc_socket_t *sock, bool yes) { +isc_socket_ipv6only(isc_socket_t *sock, bool yes) { #if defined(IPV6_V6ONLY) int onoff = yes ? 1 : 0; #else @@ -3881,7 +3858,7 @@ isc__socket_ipv6only(isc_socket_t *sock, bool yes) { } void -isc__socket_dscp(isc_socket_t *sock, isc_dscp_t dscp) { +isc_socket_dscp(isc_socket_t *sock, isc_dscp_t dscp) { #if !defined(IP_TOS) && !defined(IPV6_TCLASS) UNUSED(dscp); #else @@ -3909,14 +3886,14 @@ isc__socket_dscp(isc_socket_t *sock, isc_dscp_t dscp) { } void -isc__socket_cleanunix(const isc_sockaddr_t *addr, bool active) { +isc_socket_cleanunix(const isc_sockaddr_t *addr, bool active) { UNUSED(addr); UNUSED(active); } isc_result_t -isc__socket_permunix(const isc_sockaddr_t *addr, uint32_t perm, - uint32_t owner, uint32_t group) +isc_socket_permunix(const isc_sockaddr_t *addr, uint32_t perm, + uint32_t owner, uint32_t group) { UNUSED(addr); UNUSED(perm); @@ -3926,7 +3903,7 @@ isc__socket_permunix(const isc_sockaddr_t *addr, uint32_t perm, } void -isc__socket_setname(isc_socket_t *socket, const char *name, void *tag) { +isc_socket_setname(isc_socket_t *socket, const char *name, void *tag) { /* * Name 'socket'. @@ -3941,33 +3918,26 @@ isc__socket_setname(isc_socket_t *socket, const char *name, void *tag) { } const char * -isc__socket_getname(isc_socket_t *socket) { +isc_socket_getname(isc_socket_t *socket) { return (socket->name); } void * -isc__socket_gettag(isc_socket_t *socket) { +isc_socket_gettag(isc_socket_t *socket) { return (socket->tag); } int -isc__socket_getfd(isc_socket_t *socket) { +isc_socket_getfd(isc_socket_t *socket) { return ((short) socket->fd); } void -isc__socketmgr_setreserved(isc_socketmgr_t *manager, uint32_t reserved) { +isc_socketmgr_setreserved(isc_socketmgr_t *manager, uint32_t reserved) { UNUSED(manager); UNUSED(reserved); } -void -isc___socketmgr_maxudp(isc_socketmgr_t *manager, int maxudp) { - - UNUSED(manager); - UNUSED(maxudp); -} - isc_socketevent_t * isc_socket_socketevent(isc_mem_t *mctx, void *sender, isc_eventtype_t eventtype, isc_taskaction_t action, @@ -4235,15 +4205,6 @@ isc_socketmgr_renderjson(isc_socketmgr_t *mgr, json_object *stats) { } #endif /* HAVE_JSON */ -/* - * Replace ../socket_api.c - */ - -isc_result_t -isc__socket_register(void) { - return (ISC_R_SUCCESS); -} - isc_result_t isc_socketmgr_createinctx(isc_mem_t *mctx, isc_appctx_t *actx, isc_socketmgr_t **managerp) diff --git a/util/copyrights b/util/copyrights index 649b3f80b96..9256bd84834 100644 --- a/util/copyrights +++ b/util/copyrights @@ -3325,7 +3325,6 @@ ./lib/isc/Kyuafile X 2017,2018 ./lib/isc/aes.c C 2014,2016,2017,2018 ./lib/isc/api X 1999,2000,2001,2006,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018 -./lib/isc/app_api.c C 2009,2013,2014,2015,2016,2018 ./lib/isc/assertions.c C 1997,1998,1999,2000,2001,2004,2005,2007,2008,2009,2015,2016,2018 ./lib/isc/backtrace-emptytbl.c C 2009,2016,2018 ./lib/isc/backtrace.c C 2009,2013,2014,2015,2016,2018 @@ -3486,7 +3485,6 @@ ./lib/isc/sha1.c C 2000,2001,2003,2004,2005,2007,2009,2011,2012,2014,2016,2017,2018 ./lib/isc/sha2.c C 2005,2006,2007,2009,2011,2012,2014,2016,2017,2018 ./lib/isc/sockaddr.c C 1999,2000,2001,2002,2003,2004,2005,2006,2007,2010,2011,2012,2014,2015,2016,2017,2018 -./lib/isc/socket_api.c C 2009,2011,2012,2013,2014,2015,2016,2018 ./lib/isc/stats.c C 2009,2012,2013,2014,2015,2016,2017,2018 ./lib/isc/string.c C 1999,2000,2001,2003,2004,2005,2006,2007,2011,2012,2014,2015,2016,2018 ./lib/isc/symtab.c C 1996,1997,1998,1999,2000,2001,2004,2005,2007,2011,2012,2013,2016,2018