Module Name: src
Committed By: christos
Date: Thu Jan 10 17:41:48 UTC 2019
Modified Files:
src/external/mpl/dhcp: Makefile.inc
src/external/mpl/dhcp/dist/common: dns.c
src/external/mpl/dhcp/dist/omapip: buffer.c connection.c dispatch.c
isclib.c
src/external/mpl/dhcp/dist/server: dhcpv6.c mdb6.c
src/external/mpl/dhcp/include: config.h
Log Message:
Gut omapip support since the socket stuff to support it is gone, and
adjust to the new isc library reality.
To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/external/mpl/dhcp/Makefile.inc
cvs rdiff -u -r1.2 -r1.3 src/external/mpl/dhcp/dist/common/dns.c
cvs rdiff -u -r1.2 -r1.3 src/external/mpl/dhcp/dist/omapip/buffer.c \
src/external/mpl/dhcp/dist/omapip/connection.c \
src/external/mpl/dhcp/dist/omapip/dispatch.c \
src/external/mpl/dhcp/dist/omapip/isclib.c
cvs rdiff -u -r1.2 -r1.3 src/external/mpl/dhcp/dist/server/dhcpv6.c \
src/external/mpl/dhcp/dist/server/mdb6.c
cvs rdiff -u -r1.1 -r1.2 src/external/mpl/dhcp/include/config.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/external/mpl/dhcp/Makefile.inc
diff -u src/external/mpl/dhcp/Makefile.inc:1.4 src/external/mpl/dhcp/Makefile.inc:1.5
--- src/external/mpl/dhcp/Makefile.inc:1.4 Sun Aug 12 11:39:22 2018
+++ src/external/mpl/dhcp/Makefile.inc Thu Jan 10 12:41:47 2019
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.inc,v 1.4 2018/08/12 15:39:22 christos Exp $
+# $NetBSD: Makefile.inc,v 1.5 2019/01/10 17:41:47 christos Exp $
WARNS?= 1 # XXX -Wshadow -Wcast-qual -Wsign-compare
@@ -10,7 +10,7 @@ CWARNFLAGS.clang+= -Wno-tautological-com
-Wno-format-security -Wno-error=unused-const-variable
DIST:= ${.PARSEDIR}/dist
-BIND:= ${.PARSEDIR}/../../bsd/bind/dist
+BIND:= ${.PARSEDIR}/../../mpl/bind/dist
.PATH: ${DIST}/${DHCPSRCDIR}
COBJDIR!=cd ${.PARSEDIR}/lib/common && ${PRINTOBJDIR}
Index: src/external/mpl/dhcp/dist/common/dns.c
diff -u src/external/mpl/dhcp/dist/common/dns.c:1.2 src/external/mpl/dhcp/dist/common/dns.c:1.3
--- src/external/mpl/dhcp/dist/common/dns.c:1.2 Sat Apr 7 18:37:29 2018
+++ src/external/mpl/dhcp/dist/common/dns.c Thu Jan 10 12:41:47 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: dns.c,v 1.2 2018/04/07 22:37:29 christos Exp $ */
+/* $NetBSD: dns.c,v 1.3 2019/01/10 17:41:47 christos Exp $ */
/* dns.c
@@ -29,14 +29,13 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: dns.c,v 1.2 2018/04/07 22:37:29 christos Exp $");
+__RCSID("$NetBSD: dns.c,v 1.3 2019/01/10 17:41:47 christos Exp $");
/*! \file common/dns.c
*/
#include "dhcpd.h"
#include "arpa/nameser.h"
-#include <isc/md5.h>
-#include <isc/sha2.h>
+#include <isc/md.h>
#include <dns/result.h>
/*
@@ -1482,8 +1481,9 @@ static int get_std_dhcid(dhcp_ddns_cb_t
unsigned id_len)
{
struct data_string *id = &ddns_cb->dhcid;
- isc_sha256_t sha256;
- unsigned char buf[ISC_SHA256_DIGESTLENGTH];
+ isc_md_t *md;
+ isc_result_t result;
+ unsigned char buf[256]; // XXX: big enough > 32
unsigned char fwd_buf[256];
unsigned fwd_buflen = 0;
@@ -1491,6 +1491,11 @@ static int get_std_dhcid(dhcp_ddns_cb_t
if (type < 0 || type > 65535)
return (0);
+ md = isc_md_new();
+ if (md == NULL) {
+ return (0);
+ }
+
/* We need to convert the fwd name to wire representation */
if (MRns_name_pton((char *)ddns_cb->fwd_name.data, fwd_buf, 256) == -1)
return (0);
@@ -1511,17 +1516,41 @@ static int get_std_dhcid(dhcp_ddns_cb_t
/* The next is the digest type, SHA-256 is 1 */
putUChar(id->buffer->data + 2, 1u);
+
/* Computing the digest */
- isc_sha256_init(&sha256);
- isc_sha256_update(&sha256, identifier, id_len);
- isc_sha256_update(&sha256, fwd_buf, fwd_buflen);
- isc_sha256_final(buf, &sha256);
+ result = isc_md_init(md, ISC_MD_SHA256);
+ if (result != ISC_R_SUCCESS) {
+ goto end;
+ }
+
+ result = isc_md_update(md, identifier, id_len);
+ if (result != ISC_R_SUCCESS) {
+ goto end;
+ }
+
+ result = isc_md_update(md, fwd_buf, fwd_buflen);
+ if (result != ISC_R_SUCCESS) {
+ goto end;
+ }
+
+ result = isc_md_final(md, buf, &id_len);
+ if (result != ISC_R_SUCCESS) {
+ goto end;
+ }
+
+ isc_md_free(md);
+ md = NULL;
memcpy(id->buffer->data + 3, &buf, ISC_SHA256_DIGESTLENGTH);
id->len = ISC_SHA256_DIGESTLENGTH + 2 + 1;
return (1);
+end:
+ if (md != NULL) {
+ isc_md_free(md);
+ }
+ return (0);
}
/*!
@@ -1551,8 +1580,9 @@ static int get_int_dhcid (dhcp_ddns_cb_t
unsigned len)
{
struct data_string *id = &ddns_cb->dhcid;
- unsigned char buf[ISC_MD5_DIGESTLENGTH];
- isc_md5_t md5;
+ unsigned char buf[256]; // XXX: big enough (> 16)
+ isc_md_t *md;
+ isc_result_t result;
int i;
/* Types can only be 0..(2^16)-1. */
@@ -1584,9 +1614,28 @@ static int get_int_dhcid (dhcp_ddns_cb_t
id->buffer->data[2] = "0123456789abcdef"[type % 15];
/* Mash together an MD5 hash of the identifier. */
- isc_md5_init(&md5);
- isc_md5_update(&md5, data, len);
- isc_md5_final(&md5, buf);
+ md = isc_md_new();
+ if (md == NULL) {
+ return (0);
+ }
+
+ result = isc_md_init(md, ISC_MD_MD5);
+ if (result != ISC_R_SUCCESS) {
+ goto end;
+ }
+
+ result = isc_md_update(md, data, len);
+ if (result != ISC_R_SUCCESS) {
+ goto end;
+ }
+
+ result = isc_md_final(md, buf, &len);
+ if (result != ISC_R_SUCCESS) {
+ goto end;
+ }
+
+ isc_md_free(md);
+ md = NULL;
/* Convert into ASCII. */
for (i = 0; i < ISC_MD5_DIGESTLENGTH; i++) {
@@ -1601,6 +1650,11 @@ static int get_int_dhcid (dhcp_ddns_cb_t
id->terminated = 1;
return (1);
+end:
+ if (md != NULL) {
+ isc_md_free(md);
+ }
+ return (0);
}
int get_dhcid(dhcp_ddns_cb_t *ddns_cb,
Index: src/external/mpl/dhcp/dist/omapip/buffer.c
diff -u src/external/mpl/dhcp/dist/omapip/buffer.c:1.2 src/external/mpl/dhcp/dist/omapip/buffer.c:1.3
--- src/external/mpl/dhcp/dist/omapip/buffer.c:1.2 Sat Apr 7 18:37:30 2018
+++ src/external/mpl/dhcp/dist/omapip/buffer.c Thu Jan 10 12:41:47 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: buffer.c,v 1.2 2018/04/07 22:37:30 christos Exp $ */
+/* $NetBSD: buffer.c,v 1.3 2019/01/10 17:41:47 christos Exp $ */
/* buffer.c
@@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: buffer.c,v 1.2 2018/04/07 22:37:30 christos Exp $");
+__RCSID("$NetBSD: buffer.c,v 1.3 2019/01/10 17:41:47 christos Exp $");
#include "dhcpd.h"
@@ -341,6 +341,7 @@ isc_result_t omapi_connection_copyin (om
status = ISC_R_SUCCESS;
leave:
+#if 0
/*
* If we have any bytes to send and we have a proper io object
* inform the socket code that we would like to know when we
@@ -354,6 +355,7 @@ isc_result_t omapi_connection_copyin (om
ISC_SOCKFDWATCH_WRITE);
}
}
+#endif
return (status);
}
Index: src/external/mpl/dhcp/dist/omapip/connection.c
diff -u src/external/mpl/dhcp/dist/omapip/connection.c:1.2 src/external/mpl/dhcp/dist/omapip/connection.c:1.3
--- src/external/mpl/dhcp/dist/omapip/connection.c:1.2 Sat Apr 7 18:37:30 2018
+++ src/external/mpl/dhcp/dist/omapip/connection.c Thu Jan 10 12:41:47 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: connection.c,v 1.2 2018/04/07 22:37:30 christos Exp $ */
+/* $NetBSD: connection.c,v 1.3 2019/01/10 17:41:47 christos Exp $ */
/* connection.c
@@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: connection.c,v 1.2 2018/04/07 22:37:30 christos Exp $");
+__RCSID("$NetBSD: connection.c,v 1.3 2019/01/10 17:41:47 christos Exp $");
#include "dhcpd.h"
#include <isc/util.h>
@@ -843,7 +843,8 @@ isc_result_t omapi_connection_sign_data
/* Create the context for the dst module */
if (mode & SIG_MODE_INIT) {
- status = dst_context_create(key, dhcp_gbl_ctx.mctx, dctx);
+ status = dst_context_create(key, dhcp_gbl_ctx.mctx,
+ ISC_LOGCATEGORY_GENERAL, false, 0, dctx);
if (status != ISC_R_SUCCESS) {
return status;
}
Index: src/external/mpl/dhcp/dist/omapip/dispatch.c
diff -u src/external/mpl/dhcp/dist/omapip/dispatch.c:1.2 src/external/mpl/dhcp/dist/omapip/dispatch.c:1.3
--- src/external/mpl/dhcp/dist/omapip/dispatch.c:1.2 Sat Apr 7 18:37:30 2018
+++ src/external/mpl/dhcp/dist/omapip/dispatch.c Thu Jan 10 12:41:47 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: dispatch.c,v 1.2 2018/04/07 22:37:30 christos Exp $ */
+/* $NetBSD: dispatch.c,v 1.3 2019/01/10 17:41:47 christos Exp $ */
/* dispatch.c
@@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: dispatch.c,v 1.2 2018/04/07 22:37:30 christos Exp $");
+__RCSID("$NetBSD: dispatch.c,v 1.3 2019/01/10 17:41:47 christos Exp $");
#include "dhcpd.h"
@@ -121,6 +121,7 @@ trigger_event(struct eventqueue **queue)
* 1 is delete, 0 is leave in place
*/
#define SOCKDELETE 1
+#ifdef ISC_SOCKFDWATCH_READ
static int
omapi_iscsock_cb(isc_task_t *task,
isc_socket_t *socket,
@@ -197,6 +198,7 @@ omapi_iscsock_cb(isc_task_t *task,
*/
return (0);
}
+#endif
/* Register an I/O handle so that we can do asynchronous I/O on it. */
@@ -212,7 +214,9 @@ isc_result_t omapi_register_io_object (o
{
isc_result_t status;
omapi_io_object_t *obj, *p;
+#ifdef ISC_SOCKFDWATCH_READ
int fd_flags = 0, fd = 0;
+#endif
/* omapi_io_states is a static object. If its reference count
is zero, this is the first I/O handle to be registered, so
@@ -250,6 +254,7 @@ isc_result_t omapi_register_io_object (o
* a write socket we asssume they are the same socket.
*/
+#ifdef ISC_SOCKFDWATCH_READ
if (readfd) {
fd_flags |= ISC_SOCKFDWATCH_READ;
fd = readfd(h);
@@ -278,6 +283,7 @@ isc_result_t omapi_register_io_object (o
return (status);
}
}
+#endif
/* Find the last I/O state, if there are any. */
@@ -318,7 +324,9 @@ isc_result_t omapi_reregister_io_object
(omapi_object_t *))
{
omapi_io_object_t *obj;
+#ifdef ISC_SOCKFDWATCH_READ
int fd_flags = 0;
+#endif
if ((!h -> outer) || (h -> outer -> type != omapi_type_io_object)) {
/*
@@ -344,6 +352,7 @@ isc_result_t omapi_reregister_io_object
obj->writer = writer;
obj->reaper = reaper;
+#ifdef ISC_SOCKFDWATCH_READ
if (readfd) {
fd_flags |= ISC_SOCKFDWATCH_READ;
}
@@ -353,6 +362,7 @@ isc_result_t omapi_reregister_io_object
}
isc_socket_fdwatchpoke(obj->fd, fd_flags);
+#endif
return (ISC_R_SUCCESS);
}
Index: src/external/mpl/dhcp/dist/omapip/isclib.c
diff -u src/external/mpl/dhcp/dist/omapip/isclib.c:1.2 src/external/mpl/dhcp/dist/omapip/isclib.c:1.3
--- src/external/mpl/dhcp/dist/omapip/isclib.c:1.2 Sat Apr 7 18:37:30 2018
+++ src/external/mpl/dhcp/dist/omapip/isclib.c Thu Jan 10 12:41:47 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: isclib.c,v 1.2 2018/04/07 22:37:30 christos Exp $ */
+/* $NetBSD: isclib.c,v 1.3 2019/01/10 17:41:47 christos Exp $ */
/*
* Copyright(c) 2009-2017 by Internet Systems Consortium, Inc.("ISC")
@@ -24,7 +24,7 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: isclib.c,v 1.2 2018/04/07 22:37:30 christos Exp $");
+__RCSID("$NetBSD: isclib.c,v 1.3 2019/01/10 17:41:47 christos Exp $");
/*Trying to figure out what we need to define to get things to work.
It looks like we want/need the library but need the fdwatchcommand
@@ -159,9 +159,11 @@ dhcp_context_create(int flags,
isc_lib_register();
+#if 0
/* get the current time for use as the random seed */
gettimeofday(&cur_tv, (struct timezone *)0);
isc_random_seed(cur_tv.tv_sec);
+#endif
/* we need to create the memory context before
* the lib inits in case we aren't doing NSUPDATE
@@ -351,7 +353,7 @@ void dhcp_signal_handler(int signal) {
shutdown_signal = signal;
/* Use reload (aka suspend) for easier dispatch() reenter. */
- if (ctx && ctx->methods && ctx->methods->ctxsuspend) {
+ if (ctx) {
(void) isc_app_ctxsuspend(ctx);
}
}
@@ -359,7 +361,7 @@ void dhcp_signal_handler(int signal) {
isc_result_t dns_client_init() {
isc_result_t result;
if (dhcp_gbl_ctx.dnsclient == NULL) {
- result = dns_client_createx2(dhcp_gbl_ctx.mctx,
+ result = dns_client_createx(dhcp_gbl_ctx.mctx,
dhcp_gbl_ctx.actx,
dhcp_gbl_ctx.taskmgr,
dhcp_gbl_ctx.socketmgr,
Index: src/external/mpl/dhcp/dist/server/dhcpv6.c
diff -u src/external/mpl/dhcp/dist/server/dhcpv6.c:1.2 src/external/mpl/dhcp/dist/server/dhcpv6.c:1.3
--- src/external/mpl/dhcp/dist/server/dhcpv6.c:1.2 Sat Apr 7 18:37:30 2018
+++ src/external/mpl/dhcp/dist/server/dhcpv6.c Thu Jan 10 12:41:47 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: dhcpv6.c,v 1.2 2018/04/07 22:37:30 christos Exp $ */
+/* $NetBSD: dhcpv6.c,v 1.3 2019/01/10 17:41:47 christos Exp $ */
/*
* Copyright (C) 2006-2017 by Internet Systems Consortium, Inc. ("ISC")
@@ -17,7 +17,7 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: dhcpv6.c,v 1.2 2018/04/07 22:37:30 christos Exp $");
+__RCSID("$NetBSD: dhcpv6.c,v 1.3 2019/01/10 17:41:47 christos Exp $");
/*! \file server/dhcpv6.c */
@@ -1036,7 +1036,7 @@ static void check_pool6_threshold(struct
pond->low_threshold = 0;
pond->logged = 0;
log_error("Pool threshold reset - shared subnet: %s; "
- "address: %s; low threshold %llu/%llu.",
+ "address: %s; low threshold %" PRIu64 "/%" PRIu64 ".",
shared_name,
inet_ntop(AF_INET6, &lease->addr,
tmp_addr, sizeof(tmp_addr)),
@@ -1069,7 +1069,7 @@ static void check_pool6_threshold(struct
/* we've exceeded it, output a message */
log_error("Pool threshold exceeded - shared subnet: %s; "
- "address: %s; high threshold %d%% %llu/%llu.",
+ "address: %s; high threshold %d%% %" PRIu64 "/%" PRIu64 ".",
shared_name,
inet_ntop(AF_INET6, &lease->addr, tmp_addr, sizeof(tmp_addr)),
poolhigh, used, count);
@@ -1441,12 +1441,12 @@ pick_v6_address(struct reply_state *repl
if (jumbo_range != 0) {
log_debug("Unable to pick client address: "
"no addresses available - shared network %s: "
- " 2^64-1 < total, %llu active, %llu abandoned",
+ " 2^64-1 < total, %" PRIu64 " active, %" PRIu64 " abandoned",
shared_name, active - abandoned, abandoned);
} else {
log_debug("Unable to pick client address: "
"no addresses available - shared network %s: "
- "%llu total, %llu active, %llu abandoned",
+ "%" PRIu64 " total, %" PRIu64 " active, %" PRIu64 " abandoned",
shared_name, total, active - abandoned, abandoned);
}
Index: src/external/mpl/dhcp/dist/server/mdb6.c
diff -u src/external/mpl/dhcp/dist/server/mdb6.c:1.2 src/external/mpl/dhcp/dist/server/mdb6.c:1.3
--- src/external/mpl/dhcp/dist/server/mdb6.c:1.2 Sat Apr 7 18:37:30 2018
+++ src/external/mpl/dhcp/dist/server/mdb6.c Thu Jan 10 12:41:47 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: mdb6.c,v 1.2 2018/04/07 22:37:30 christos Exp $ */
+/* $NetBSD: mdb6.c,v 1.3 2019/01/10 17:41:47 christos Exp $ */
/*
* Copyright (C) 2007-2017 by Internet Systems Consortium, Inc. ("ISC")
@@ -17,7 +17,7 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: mdb6.c,v 1.2 2018/04/07 22:37:30 christos Exp $");
+__RCSID("$NetBSD: mdb6.c,v 1.3 2019/01/10 17:41:47 christos Exp $");
/*!
@@ -181,7 +181,7 @@ __RCSID("$NetBSD: mdb6.c,v 1.2 2018/04/0
#include "dhcpd.h"
#include "omapip/omapip.h"
#include "omapip/hash.h"
-#include <isc/md5.h>
+#include <isc/md.h>
HASH_FUNCTIONS(ia, unsigned char *, struct ia_xx, ia_hash_t,
ia_reference, ia_dereference, do_string_hash)
@@ -819,20 +819,13 @@ static void
build_address6(struct in6_addr *addr,
const struct in6_addr *net_start_addr, int net_bits,
const struct data_string *input) {
- isc_md5_t ctx;
int net_bytes;
int i;
+ unsigned int len;
char *str;
const char *net_str;
- /*
- * Use MD5 to get a nice 128 bit hash of the input.
- * Yes, we know MD5 isn't cryptographically sound.
- * No, we don't care.
- */
- isc_md5_init(&ctx);
- isc_md5_update(&ctx, input->data, input->len);
- isc_md5_final(&ctx, (unsigned char *)addr);
+ isc_md(ISC_MD_MD5, input->data, input->len, (void *)addr, &len);
/*
* Copy the [0..128] network bits over.
@@ -946,25 +939,22 @@ build_temporary6(struct in6_addr *addr,
const struct data_string *input) {
static u_int32_t history[2];
static u_int32_t counter = 0;
- isc_md5_t ctx;
unsigned char md[16];
+ unsigned int len;
/*
* First time/time to reseed.
* Please use a good pseudo-random generator here!
*/
if (counter == 0) {
- isc_random_get(&history[0]);
- isc_random_get(&history[1]);
+ history[0] = arc4random();
+ history[1] = arc4random();
}
/*
* Use MD5 as recommended by RFC 4941.
*/
- isc_md5_init(&ctx);
- isc_md5_update(&ctx, (unsigned char *)&history[0], 8UL);
- isc_md5_update(&ctx, input->data, input->len);
- isc_md5_final(&ctx, md);
+ isc_md(ISC_MD_MD5, input->data, input->len, (void *)&history[0], &len);
/*
* Build the address.
@@ -1819,9 +1809,9 @@ build_prefix6(struct in6_addr *pref,
const struct in6_addr *net_start_pref,
int pool_bits, int pref_bits,
const struct data_string *input) {
- isc_md5_t ctx;
int net_bytes;
int i;
+ unsigned int len;
char *str;
const char *net_str;
@@ -1830,9 +1820,7 @@ build_prefix6(struct in6_addr *pref,
* Yes, we know MD5 isn't cryptographically sound.
* No, we don't care.
*/
- isc_md5_init(&ctx);
- isc_md5_update(&ctx, input->data, input->len);
- isc_md5_final(&ctx, (unsigned char *)pref);
+ isc_md(ISC_MD_MD5, input->data, input->len, (void *)&pref, &len);
/*
* Copy the network bits over.
Index: src/external/mpl/dhcp/include/config.h
diff -u src/external/mpl/dhcp/include/config.h:1.1 src/external/mpl/dhcp/include/config.h:1.2
--- src/external/mpl/dhcp/include/config.h:1.1 Sat Apr 7 18:31:37 2018
+++ src/external/mpl/dhcp/include/config.h Thu Jan 10 12:41:48 2019
@@ -324,3 +324,16 @@
/* Define to the type of an unsigned integer type of width exactly 8 bits if
such a type exists and the standard includes do not define it. */
/* #undef uint8_t */
+
+/*
+ * XXX: compat
+ */
+#include <stdbool.h>
+#include <limits.h>
+#define isc_boolean_t bool
+#define ISC_TRUE true
+#define ISC_FALSE false
+#define isc_uint64_t uint64_t
+#define isc_boolean_true true
+#define isc_boolean_false false
+#define ISC_UINT64_MAX UINT64_MAX