diff options
| author | 2020-01-20 18:43:21 +0000 | |
|---|---|---|
| committer | 2020-01-20 18:43:21 +0000 | |
| commit | 95dfa548bee9da1241813dfd7e8c7be4d099a7b1 (patch) | |
| tree | ca43d01f2a4bead5d2dbbf6d91d599256d952401 /usr.sbin/bind/lib/isc/mem.c | |
| parent | Fix a address family desynchronisation between lwres_conf and (diff) | |
| download | wireguard-openbsd-95dfa548bee9da1241813dfd7e8c7be4d099a7b1.tar.xz wireguard-openbsd-95dfa548bee9da1241813dfd7e8c7be4d099a7b1.zip | |
We are not using json, xml nor httpd.
OK millert
Diffstat (limited to 'usr.sbin/bind/lib/isc/mem.c')
| -rw-r--r-- | usr.sbin/bind/lib/isc/mem.c | 327 |
1 files changed, 2 insertions, 325 deletions
diff --git a/usr.sbin/bind/lib/isc/mem.c b/usr.sbin/bind/lib/isc/mem.c index a03dfb0a99a..eec2360fefc 100644 --- a/usr.sbin/bind/lib/isc/mem.c +++ b/usr.sbin/bind/lib/isc/mem.c @@ -25,7 +25,7 @@ #include <limits.h> #include <isc/bind9.h> -#include <isc/json.h> + #include <isc/magic.h> #include <isc/mem.h> #include <isc/msgs.h> @@ -35,7 +35,7 @@ #include <isc/mutex.h> #include <isc/util.h> -#include <isc/xml.h> + #define MCTXLOCK(m, l) if (((m)->flags & ISC_MEMFLAG_NOLOCK) == 0) LOCK(l) #define MCTXUNLOCK(m, l) if (((m)->flags & ISC_MEMFLAG_NOLOCK) == 0) UNLOCK(l) @@ -2331,329 +2331,6 @@ typedef struct summarystat { uint64_t contextsize; } summarystat_t; -#ifdef HAVE_LIBXML2 -#define TRY0(a) do { xmlrc = (a); if (xmlrc < 0) goto error; } while(0) -static int -xml_renderctx(isc__mem_t *ctx, summarystat_t *summary, - xmlTextWriterPtr writer) -{ - int xmlrc; - - REQUIRE(VALID_CONTEXT(ctx)); - - MCTXLOCK(ctx, &ctx->lock); - - TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "context")); - - TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "id")); - TRY0(xmlTextWriterWriteFormatString(writer, "%p", ctx)); - TRY0(xmlTextWriterEndElement(writer)); /* id */ - - if (ctx->name[0] != 0) { - TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "name")); - TRY0(xmlTextWriterWriteFormatString(writer, "%s", ctx->name)); - TRY0(xmlTextWriterEndElement(writer)); /* name */ - } - - summary->contextsize += sizeof(*ctx) + - (ctx->max_size + 1) * sizeof(struct stats) + - ctx->max_size * sizeof(element *) + - ctx->basic_table_count * sizeof(char *); -#if ISC_MEM_TRACKLINES - if (ctx->debuglist != NULL) { - summary->contextsize += - (ctx->max_size + 1) * sizeof(debuglist_t) + - ctx->debuglistcnt * sizeof(debuglink_t); - } -#endif - TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "references")); - TRY0(xmlTextWriterWriteFormatString(writer, "%d", ctx->references)); - TRY0(xmlTextWriterEndElement(writer)); /* references */ - - summary->total += ctx->total; - TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "total")); - TRY0(xmlTextWriterWriteFormatString(writer, - "%llu", - (uint64_t)ctx->total)); - TRY0(xmlTextWriterEndElement(writer)); /* total */ - - summary->inuse += ctx->inuse; - TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "inuse")); - TRY0(xmlTextWriterWriteFormatString(writer, - "%llu", - (uint64_t)ctx->inuse)); - TRY0(xmlTextWriterEndElement(writer)); /* inuse */ - - TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "maxinuse")); - TRY0(xmlTextWriterWriteFormatString(writer, - "%llu", - (uint64_t)ctx->maxinuse)); - TRY0(xmlTextWriterEndElement(writer)); /* maxinuse */ - - TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "blocksize")); - if ((ctx->flags & ISC_MEMFLAG_INTERNAL) != 0) { - summary->blocksize += ctx->basic_table_count * - NUM_BASIC_BLOCKS * ctx->mem_target; - TRY0(xmlTextWriterWriteFormatString(writer, - "%llu", - (uint64_t) - ctx->basic_table_count * - NUM_BASIC_BLOCKS * - ctx->mem_target)); - } else - TRY0(xmlTextWriterWriteFormatString(writer, "%s", "-")); - TRY0(xmlTextWriterEndElement(writer)); /* blocksize */ - - TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "pools")); - TRY0(xmlTextWriterWriteFormatString(writer, "%u", ctx->poolcnt)); - TRY0(xmlTextWriterEndElement(writer)); /* pools */ - summary->contextsize += ctx->poolcnt * sizeof(isc_mempool_t); - - TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "hiwater")); - TRY0(xmlTextWriterWriteFormatString(writer, - "%llu", - (uint64_t)ctx->hi_water)); - TRY0(xmlTextWriterEndElement(writer)); /* hiwater */ - - TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "lowater")); - TRY0(xmlTextWriterWriteFormatString(writer, - "%llu", - (uint64_t)ctx->lo_water)); - TRY0(xmlTextWriterEndElement(writer)); /* lowater */ - - TRY0(xmlTextWriterEndElement(writer)); /* context */ - - error: - MCTXUNLOCK(ctx, &ctx->lock); - - return (xmlrc); -} - -int -isc_mem_renderxml(xmlTextWriterPtr writer) { - isc__mem_t *ctx; - summarystat_t summary; - uint64_t lost; - int xmlrc; - - memset(&summary, 0, sizeof(summary)); - - TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "contexts")); - - RUNTIME_CHECK(isc_once_do(&once, initialize_action) == ISC_R_SUCCESS); - - LOCK(&contextslock); - lost = totallost; - for (ctx = ISC_LIST_HEAD(contexts); - ctx != NULL; - ctx = ISC_LIST_NEXT(ctx, link)) { - xmlrc = xml_renderctx(ctx, &summary, writer); - if (xmlrc < 0) { - UNLOCK(&contextslock); - goto error; - } - } - UNLOCK(&contextslock); - - TRY0(xmlTextWriterEndElement(writer)); /* contexts */ - - TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "summary")); - - TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "TotalUse")); - TRY0(xmlTextWriterWriteFormatString(writer, - "%llu", - summary.total)); - TRY0(xmlTextWriterEndElement(writer)); /* TotalUse */ - - TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "InUse")); - TRY0(xmlTextWriterWriteFormatString(writer, - "%llu", - summary.inuse)); - TRY0(xmlTextWriterEndElement(writer)); /* InUse */ - - TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "BlockSize")); - TRY0(xmlTextWriterWriteFormatString(writer, - "%llu", - summary.blocksize)); - TRY0(xmlTextWriterEndElement(writer)); /* BlockSize */ - - TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "ContextSize")); - TRY0(xmlTextWriterWriteFormatString(writer, - "%llu", - summary.contextsize)); - TRY0(xmlTextWriterEndElement(writer)); /* ContextSize */ - - TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "Lost")); - TRY0(xmlTextWriterWriteFormatString(writer, - "%llu", - lost)); - TRY0(xmlTextWriterEndElement(writer)); /* Lost */ - - TRY0(xmlTextWriterEndElement(writer)); /* summary */ - error: - return (xmlrc); -} - -#endif /* HAVE_LIBXML2 */ - -#ifdef HAVE_JSON -#define CHECKMEM(m) do { \ - if (m == NULL) { \ - result = ISC_R_NOMEMORY;\ - goto error;\ - } \ -} while(0) - -static isc_result_t -json_renderctx(isc__mem_t *ctx, summarystat_t *summary, json_object *array) { - isc_result_t result = ISC_R_FAILURE; - json_object *ctxobj, *obj; - char buf[1024]; - - REQUIRE(VALID_CONTEXT(ctx)); - REQUIRE(summary != NULL); - REQUIRE(array != NULL); - - MCTXLOCK(ctx, &ctx->lock); - - summary->contextsize += sizeof(*ctx) + - (ctx->max_size + 1) * sizeof(struct stats) + - ctx->max_size * sizeof(element *) + - ctx->basic_table_count * sizeof(char *); - summary->total += ctx->total; - summary->inuse += ctx->inuse; - if ((ctx->flags & ISC_MEMFLAG_INTERNAL) != 0) - summary->blocksize += ctx->basic_table_count * - NUM_BASIC_BLOCKS * ctx->mem_target; -#if ISC_MEM_TRACKLINES - if (ctx->debuglist != NULL) { - summary->contextsize += - (ctx->max_size + 1) * sizeof(debuglist_t) + - ctx->debuglistcnt * sizeof(debuglink_t); - } -#endif - - ctxobj = json_object_new_object(); - CHECKMEM(ctxobj); - - snprintf(buf, sizeof(buf), "%p", ctx); - obj = json_object_new_string(buf); - CHECKMEM(obj); - json_object_object_add(ctxobj, "id", obj); - - if (ctx->name[0] != 0) { - obj = json_object_new_string(ctx->name); - CHECKMEM(obj); - json_object_object_add(ctxobj, "name", obj); - } - - obj = json_object_new_int64(ctx->references); - CHECKMEM(obj); - json_object_object_add(ctxobj, "references", obj); - - obj = json_object_new_int64(ctx->total); - CHECKMEM(obj); - json_object_object_add(ctxobj, "total", obj); - - obj = json_object_new_int64(ctx->inuse); - CHECKMEM(obj); - json_object_object_add(ctxobj, "inuse", obj); - - obj = json_object_new_int64(ctx->maxinuse); - CHECKMEM(obj); - json_object_object_add(ctxobj, "maxinuse", obj); - - if ((ctx->flags & ISC_MEMFLAG_INTERNAL) != 0) { - uint64_t blocksize; - blocksize = ctx->basic_table_count * NUM_BASIC_BLOCKS * - ctx->mem_target; - obj = json_object_new_int64(blocksize); - CHECKMEM(obj); - json_object_object_add(ctxobj, "blocksize", obj); - } - - obj = json_object_new_int64(ctx->poolcnt); - CHECKMEM(obj); - json_object_object_add(ctxobj, "pools", obj); - - summary->contextsize += ctx->poolcnt * sizeof(isc_mempool_t); - - obj = json_object_new_int64(ctx->hi_water); - CHECKMEM(obj); - json_object_object_add(ctxobj, "hiwater", obj); - - obj = json_object_new_int64(ctx->lo_water); - CHECKMEM(obj); - json_object_object_add(ctxobj, "lowater", obj); - - MCTXUNLOCK(ctx, &ctx->lock); - json_object_array_add(array, ctxobj); - return (ISC_R_SUCCESS); - - error: - MCTXUNLOCK(ctx, &ctx->lock); - if (ctxobj != NULL) - json_object_put(ctxobj); - return (result); -} - -isc_result_t -isc_mem_renderjson(json_object *memobj) { - isc_result_t result = ISC_R_SUCCESS; - isc__mem_t *ctx; - summarystat_t summary; - uint64_t lost; - json_object *ctxarray, *obj; - - memset(&summary, 0, sizeof(summary)); - RUNTIME_CHECK(isc_once_do(&once, initialize_action) == ISC_R_SUCCESS); - - ctxarray = json_object_new_array(); - CHECKMEM(ctxarray); - - LOCK(&contextslock); - lost = totallost; - for (ctx = ISC_LIST_HEAD(contexts); - ctx != NULL; - ctx = ISC_LIST_NEXT(ctx, link)) { - result = json_renderctx(ctx, &summary, ctxarray); - if (result != ISC_R_SUCCESS) { - UNLOCK(&contextslock); - goto error; - } - } - UNLOCK(&contextslock); - - obj = json_object_new_int64(summary.total); - CHECKMEM(obj); - json_object_object_add(memobj, "TotalUse", obj); - - obj = json_object_new_int64(summary.inuse); - CHECKMEM(obj); - json_object_object_add(memobj, "InUse", obj); - - obj = json_object_new_int64(summary.blocksize); - CHECKMEM(obj); - json_object_object_add(memobj, "BlockSize", obj); - - obj = json_object_new_int64(summary.contextsize); - CHECKMEM(obj); - json_object_object_add(memobj, "ContextSize", obj); - - obj = json_object_new_int64(lost); - CHECKMEM(obj); - json_object_object_add(memobj, "Lost", obj); - - json_object_object_add(memobj, "contexts", ctxarray); - return (ISC_R_SUCCESS); - - error: - if (ctxarray != NULL) - json_object_put(ctxarray); - return (result); -} -#endif /* HAVE_JSON */ - static isc_memcreatefunc_t mem_createfunc = NULL; isc_result_t |
