work on making log.c similar in all daemons:
move daemon-local functions into new logmsg.c, and reduce
the (mostly whitespace) differences so that log.c's can be diffed easily.
diff --git usr.sbin/ldapctl/Makefile usr.sbin/ldapctl/Makefile
index 50befd7..682b791 100644
--- usr.sbin/ldapctl/Makefile
+++ usr.sbin/ldapctl/Makefile
@@ -4,7 +4,7 @@
PROG= ldapctl
MAN= ldapctl.8
-SRCS= ldapctl.c parse.y btree.c log.c ber.c util.c \
+SRCS= ldapctl.c parse.y btree.c log.c logmsg.c ber.c util.c \
index.c attributes.c schema.c syntax.c matching.c
LDADD= -ltls -levent -lz -lutil
diff --git usr.sbin/ldapctl/ldapctl.c usr.sbin/ldapctl/ldapctl.c
index 42b57c4..7e2178a 100644
--- usr.sbin/ldapctl/ldapctl.c
+++ usr.sbin/ldapctl/ldapctl.c
@@ -42,6 +42,7 @@
#include <event.h>
#include "ldapd.h"
+#include "log.h"
enum action {
NONE,
@@ -61,6 +62,7 @@ int compact_namespace(struct namespace *ns, const
char *datadir);
int compact_namespaces(const char *datadir);
int index_namespace(struct namespace *ns, const char *datadir);
int index_namespaces(const char *datadir);
+int ssl_load_certfile(struct ldapd_config *, const char *,
u_int8_t);
__dead void
usage(void)
diff --git usr.sbin/ldapd/Makefile usr.sbin/ldapd/Makefile
index 5d2aea0..6a277c0 100644
--- usr.sbin/ldapd/Makefile
+++ usr.sbin/ldapd/Makefile
@@ -2,7 +2,7 @@
PROG= ldapd
MAN= ldapd.8 ldapd.conf.5
-SRCS= ber.c log.c control.c \
+SRCS= ber.c log.c logmsg.c control.c \
util.c ldapd.c ldape.c conn.c attributes.c namespace.c \
btree.c filter.c search.c parse.y \
auth.c modify.c index.c evbuffer_tls.c \
diff --git usr.sbin/ldapd/attributes.c usr.sbin/ldapd/attributes.c
index b89c75f..de04447 100644
--- usr.sbin/ldapd/attributes.c
+++ usr.sbin/ldapd/attributes.c
@@ -24,6 +24,7 @@
#include <time.h>
#include "ldapd.h"
+#include "log.h"
struct ber_element *
ldap_get_attribute(struct ber_element *entry, const char *attr)
diff --git usr.sbin/ldapd/auth.c usr.sbin/ldapd/auth.c
index dfbdfe1..35f2de2 100644
--- usr.sbin/ldapd/auth.c
+++ usr.sbin/ldapd/auth.c
@@ -29,6 +29,7 @@
#include <unistd.h>
#include "ldapd.h"
+#include "log.h"
static int
aci_matches(struct aci *aci, struct conn *conn, struct namespace *ns,
diff --git usr.sbin/ldapd/conn.c usr.sbin/ldapd/conn.c
index 728c75d..2ed77c7 100644
--- usr.sbin/ldapd/conn.c
+++ usr.sbin/ldapd/conn.c
@@ -24,6 +24,7 @@
#include <unistd.h>
#include "ldapd.h"
+#include "log.h"
int conn_dispatch(struct conn *conn);
int conn_tls_init(struct conn *);
diff --git usr.sbin/ldapd/control.c usr.sbin/ldapd/control.c
index ce25b20..477acdb 100644
--- usr.sbin/ldapd/control.c
+++ usr.sbin/ldapd/control.c
@@ -35,6 +35,7 @@
#include <unistd.h>
#include "ldapd.h"
+#include "log.h"
#define CONTROL_BACKLOG 5
diff --git usr.sbin/ldapd/filter.c usr.sbin/ldapd/filter.c
index 3e7954f..0371ed2 100644
--- usr.sbin/ldapd/filter.c
+++ usr.sbin/ldapd/filter.c
@@ -23,6 +23,7 @@
#include <stdint.h>
#include "ldapd.h"
+#include "log.h"
static int ldap_filt_eq(struct ber_element *root, struct plan *plan);
static int ldap_filt_subs(struct ber_element *root, struct plan *plan);
diff --git usr.sbin/ldapd/index.c usr.sbin/ldapd/index.c
index 8e35261..d91d645 100644
--- usr.sbin/ldapd/index.c
+++ usr.sbin/ldapd/index.c
@@ -79,6 +79,7 @@
#include <string.h>
#include "ldapd.h"
+#include "log.h"
static int
index_attribute(struct namespace *ns, char *attr, struct btval *dn,
diff --git usr.sbin/ldapd/ldapd.c usr.sbin/ldapd/ldapd.c
index b41eb2d..0f44b31 100644
--- usr.sbin/ldapd/ldapd.c
+++ usr.sbin/ldapd/ldapd.c
@@ -38,6 +38,7 @@
#include <unistd.h>
#include "ldapd.h"
+#include "log.h"
void usage(void);
void ldapd_sig_handler(int fd, short why, void *data);
diff --git usr.sbin/ldapd/ldapd.h usr.sbin/ldapd/ldapd.h
index 2cb4050..cc1c805 100644
--- usr.sbin/ldapd/ldapd.h
+++ usr.sbin/ldapd/ldapd.h
@@ -464,23 +464,12 @@ int ssl_cmp(struct ssl *, struct
ssl *);
SPLAY_PROTOTYPE(ssltree, ssl, ssl_nodes, ssl_cmp);
-/* log.c */
-void log_init(int);
-void log_verbose(int v);
-void vlog(int, const char *, va_list);
-void logit(int pri, const char *fmt, ...);
-void log_warn(const char *, ...);
-void log_warnx(const char *, ...);
-void log_info(const char *, ...);
-void log_debug(const char *, ...);
-__dead void fatal(const char *);
-__dead void fatalx(const char *);
+/* logmsg.c */
const char *print_host(struct sockaddr_storage *ss, char *buf,
size_t len);
void hexdump(void *data, size_t len, const char *fmt, ...);
void ldap_debug_elements(struct ber_element *root,
int context, const char *fmt, ...);
-
/* util.c */
int bsnprintf(char *str, size_t size,
const char *format, ...);
diff --git usr.sbin/ldapd/ldape.c usr.sbin/ldapd/ldape.c
index 36559e1..d175ca5 100644
--- usr.sbin/ldapd/ldape.c
+++ usr.sbin/ldapd/ldape.c
@@ -31,6 +31,7 @@
#include <unistd.h>
#include "ldapd.h"
+#include "log.h"
void ldape_sig_handler(int fd, short why, void *data);
static void ldape_auth_result(struct imsg *imsg);
diff --git usr.sbin/ldapd/log.c usr.sbin/ldapd/log.c
index 5afdd7a..e59b86e 100644
--- usr.sbin/ldapd/log.c
+++ usr.sbin/ldapd/log.c
@@ -11,18 +11,12 @@
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
- * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-#include <sys/types.h>
-#include <sys/queue.h>
-#include <sys/socket.h>
-#include <sys/time.h>
-
#include <errno.h>
-#include <netdb.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
@@ -30,12 +24,11 @@
#include <syslog.h>
#include <time.h>
#include <unistd.h>
-#include <vis.h>
-#include "ldapd.h"
+#include "log.h"
-int debug;
-int verbose;
+int debug;
+int verbose;
void
log_init(int n_debug)
@@ -176,289 +169,3 @@ fatalx(const char *emsg)
errno = 0;
fatal(emsg);
}
-
-const char *
-print_host(struct sockaddr_storage *ss, char *buf, size_t len)
-{
- if (getnameinfo((struct sockaddr *)ss, ss->ss_len,
- buf, len, NULL, 0, NI_NUMERICHOST) != 0) {
- buf[0] = '\0';
- return (NULL);
- }
- return (buf);
-}
-
-void
-hexdump(void *data, size_t len, const char *fmt, ...)
-{
- uint8_t *p = data;
- va_list ap;
-
- if (verbose < 2 || !debug)
- return;
-
- va_start(ap, fmt);
- vlog(LOG_DEBUG, fmt, ap);
- va_end(ap);
-
- while (len--) {
- size_t ofs = p - (uint8_t *)data;
- if (ofs % 16 == 0)
- fprintf(stderr, "%s%04lx:", ofs == 0 ? "" : "\n", ofs);
- else if (ofs % 8 == 0)
- fprintf(stderr, " ");
- fprintf(stderr, " %02x", *p++);
- }
- fprintf(stderr, "\n");
-}
-
-/*
- * Display a list of ber elements.
- *
- */
-void
-ldap_debug_elements(struct ber_element *root, int context, const char *fmt,
...)
-{
- va_list ap;
- static int indent = 0;
- long long v;
- int d;
- char *buf, *visbuf;
- size_t len;
- u_int i;
- int constructed;
- struct ber_oid o;
-
- if (verbose < 2 || !debug)
- return;
-
- if (fmt != NULL) {
- va_start(ap, fmt);
- vlog(LOG_DEBUG, fmt, ap);
- va_end(ap);
- }
-
- /* calculate lengths */
- ber_calc_len(root);
-
- switch (root->be_encoding) {
- case BER_TYPE_SEQUENCE:
- case BER_TYPE_SET:
- constructed = root->be_encoding;
- break;
- default:
- constructed = 0;
- break;
- }
-
- fprintf(stderr, "%*slen %lu ", indent, "", root->be_len);
- switch (root->be_class) {
- case BER_CLASS_UNIVERSAL:
- fprintf(stderr, "class: universal(%u) type: ", root->be_class);
- switch (root->be_type) {
- case BER_TYPE_EOC:
- fprintf(stderr, "end-of-content");
- break;
- case BER_TYPE_BOOLEAN:
- fprintf(stderr, "boolean");
- break;
- case BER_TYPE_INTEGER:
- fprintf(stderr, "integer");
- break;
- case BER_TYPE_BITSTRING:
- fprintf(stderr, "bit-string");
- break;
- case BER_TYPE_OCTETSTRING:
- fprintf(stderr, "octet-string");
- break;
- case BER_TYPE_NULL:
- fprintf(stderr, "null");
- break;
- case BER_TYPE_OBJECT:
- fprintf(stderr, "object");
- break;
- case BER_TYPE_ENUMERATED:
- fprintf(stderr, "enumerated");
- break;
- case BER_TYPE_SEQUENCE:
- fprintf(stderr, "sequence");
- break;
- case BER_TYPE_SET:
- fprintf(stderr, "set");
- break;
- }
- break;
- case BER_CLASS_APPLICATION:
- fprintf(stderr, "class: application(%u) type: ",
- root->be_class);
- switch (root->be_type) {
- case LDAP_REQ_BIND:
- case LDAP_RES_BIND:
- fprintf(stderr, "bind");
- break;
- case LDAP_REQ_UNBIND_30:
- fprintf(stderr, "unbind");
- break;
- case LDAP_REQ_SEARCH:
- fprintf(stderr, "search");
- break;
- case LDAP_RES_SEARCH_ENTRY:
- fprintf(stderr, "search entry");
- break;
- case LDAP_RES_SEARCH_RESULT:
- fprintf(stderr, "search result");
- break;
- case LDAP_REQ_MODIFY:
- case LDAP_RES_MODIFY:
- fprintf(stderr, "modify");
- break;
- case LDAP_REQ_ADD:
- case LDAP_RES_ADD:
- fprintf(stderr, "add");
- break;
- case LDAP_REQ_DELETE_30:
- case LDAP_RES_DELETE:
- fprintf(stderr, "delete");
- break;
- case LDAP_REQ_MODRDN:
- case LDAP_RES_MODRDN:
- fprintf(stderr, "modrdn");
- break;
- case LDAP_REQ_COMPARE:
- case LDAP_RES_COMPARE:
- fprintf(stderr, "compare");
- break;
- case LDAP_REQ_ABANDON_30:
- fprintf(stderr, "abandon");
- break;
- case LDAP_REQ_EXTENDED:
- case LDAP_RES_EXTENDED:
- fprintf(stderr, "extended");
- break;
- }
- break;
- case BER_CLASS_PRIVATE:
- fprintf(stderr, "class: private(%u) type: ", root->be_class);
- fprintf(stderr, "encoding (%lu) type: ", root->be_encoding);
- break;
- case BER_CLASS_CONTEXT:
- fprintf(stderr, "class: context(%u) type: ", root->be_class);
- switch (context) {
- case LDAP_REQ_BIND:
- switch(root->be_type) {
- case LDAP_AUTH_SIMPLE:
- fprintf(stderr, "auth simple");
- break;
- }
- break;
- case LDAP_REQ_SEARCH:
- switch(root->be_type) {
- case LDAP_FILT_AND:
- fprintf(stderr, "and");
- break;
- case LDAP_FILT_OR:
- fprintf(stderr, "or");
- break;
- case LDAP_FILT_NOT:
- fprintf(stderr, "not");
- break;
- case LDAP_FILT_EQ:
- fprintf(stderr, "equal");
- break;
- case LDAP_FILT_SUBS:
- fprintf(stderr, "substring");
- break;
- case LDAP_FILT_GE:
- fprintf(stderr, "greater-or-equal");
- break;
- case LDAP_FILT_LE:
- fprintf(stderr, "less-or-equal");
- break;
- case LDAP_FILT_PRES:
- fprintf(stderr, "presence");
- break;
- case LDAP_FILT_APPR:
- fprintf(stderr, "approximate");
- break;
- }
- break;
- }
- break;
- default:
- fprintf(stderr, "class: <INVALID>(%u) type: ", root->be_class);
- break;
- }
- fprintf(stderr, "(%lu) encoding %lu ",
- root->be_type, root->be_encoding);
-
- if (constructed)
- root->be_encoding = constructed;
-
- switch (root->be_encoding) {
- case BER_TYPE_BOOLEAN:
- if (ber_get_boolean(root, &d) == -1) {
- fprintf(stderr, "<INVALID>\n");
- break;
- }
- fprintf(stderr, "%s(%d)\n", d ? "true" : "false", d);
- break;
- case BER_TYPE_INTEGER:
- if (ber_get_integer(root, &v) == -1) {
- fprintf(stderr, "<INVALID>\n");
- break;
- }
- fprintf(stderr, "value %lld\n", v);
- break;
- case BER_TYPE_ENUMERATED:
- if (ber_get_enumerated(root, &v) == -1) {
- fprintf(stderr, "<INVALID>\n");
- break;
- }
- fprintf(stderr, "value %lld\n", v);
- break;
- case BER_TYPE_BITSTRING:
- if (ber_get_bitstring(root, (void *)&buf, &len) == -1) {
- fprintf(stderr, "<INVALID>\n");
- break;
- }
- fprintf(stderr, "hexdump ");
- for (i = 0; i < len; i++)
- fprintf(stderr, "%02x", buf[i]);
- fprintf(stderr, "\n");
- break;
- case BER_TYPE_OBJECT:
- if (ber_get_oid(root, &o) == -1) {
- fprintf(stderr, "<INVALID>\n");
- break;
- }
- fprintf(stderr, "\n");
- break;
- case BER_TYPE_OCTETSTRING:
- if (ber_get_nstring(root, (void *)&buf, &len) == -1) {
- fprintf(stderr, "<INVALID>\n");
- break;
- }
- if ((visbuf = malloc(len * 4 + 1)) != NULL) {
- strvisx(visbuf, buf, len, 0);
- fprintf(stderr, "string \"%s\"\n", visbuf);
- free(visbuf);
- }
- break;
- case BER_TYPE_NULL: /* no payload */
- case BER_TYPE_EOC:
- case BER_TYPE_SEQUENCE:
- case BER_TYPE_SET:
- default:
- fprintf(stderr, "\n");
- break;
- }
-
- if (constructed && root->be_sub) {
- indent += 2;
- ldap_debug_elements(root->be_sub, context, NULL);
- indent -= 2;
- }
- if (root->be_next)
- ldap_debug_elements(root->be_next, context, NULL);
-}
-
diff --git usr.sbin/ldapd/log.h usr.sbin/ldapd/log.h
new file mode 100644
index 0000000..400dbc4
--- /dev/null
+++ usr.sbin/ldapd/log.h
@@ -0,0 +1,31 @@
+/* $OpenBSD: log.h,v 1.7 2016/06/06 15:56:22 benno Exp $ */
+
+/*
+ * Copyright (c) 2003, 2004 Henning Brauer <[email protected]>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <stdarg.h>
+#include <sys/cdefs.h>
+
+void log_init(int);
+void log_verbose(int);
+void logit(int, const char *, ...);
+void vlog(int, const char *, va_list);
+void log_warn(const char *, ...);
+void log_warnx(const char *, ...);
+void log_info(const char *, ...);
+void log_debug(const char *, ...);
+void fatal(const char *) __dead;
+void fatalx(const char *) __dead;
diff --git usr.sbin/ldapd/logmsg.c usr.sbin/ldapd/logmsg.c
new file mode 100644
index 0000000..5ae779f
--- /dev/null
+++ usr.sbin/ldapd/logmsg.c
@@ -0,0 +1,325 @@
+/* $OpenBSD: log.c,v 1.4 2013/11/02 13:31:51 deraadt Exp $ */
+
+/*
+ * Copyright (c) 2003, 2004 Henning Brauer <[email protected]>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
+ * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
+ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <sys/types.h>
+#include <sys/queue.h>
+#include <sys/socket.h>
+#include <sys/time.h>
+
+#include <errno.h>
+#include <netdb.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <syslog.h>
+#include <time.h>
+#include <unistd.h>
+#include <vis.h>
+
+#include "ldapd.h"
+#include "log.h"
+
+extern int debug;
+extern int verbose;
+
+const char *
+print_host(struct sockaddr_storage *ss, char *buf, size_t len)
+{
+ if (getnameinfo((struct sockaddr *)ss, ss->ss_len,
+ buf, len, NULL, 0, NI_NUMERICHOST) != 0) {
+ buf[0] = '\0';
+ return (NULL);
+ }
+ return (buf);
+}
+
+void
+hexdump(void *data, size_t len, const char *fmt, ...)
+{
+ uint8_t *p = data;
+ va_list ap;
+
+ if (verbose < 2 || !debug)
+ return;
+
+ va_start(ap, fmt);
+ vlog(LOG_DEBUG, fmt, ap);
+ va_end(ap);
+
+ while (len--) {
+ size_t ofs = p - (uint8_t *)data;
+ if (ofs % 16 == 0)
+ fprintf(stderr, "%s%04lx:", ofs == 0 ? "" : "\n", ofs);
+ else if (ofs % 8 == 0)
+ fprintf(stderr, " ");
+ fprintf(stderr, " %02x", *p++);
+ }
+ fprintf(stderr, "\n");
+}
+
+/*
+ * Display a list of ber elements.
+ *
+ */
+void
+ldap_debug_elements(struct ber_element *root, int context, const char *fmt,
...)
+{
+ va_list ap;
+ static int indent = 0;
+ long long v;
+ int d;
+ char *buf, *visbuf;
+ size_t len;
+ u_int i;
+ int constructed;
+ struct ber_oid o;
+
+ if (verbose < 2 || !debug)
+ return;
+
+ if (fmt != NULL) {
+ va_start(ap, fmt);
+ vlog(LOG_DEBUG, fmt, ap);
+ va_end(ap);
+ }
+
+ /* calculate lengths */
+ ber_calc_len(root);
+
+ switch (root->be_encoding) {
+ case BER_TYPE_SEQUENCE:
+ case BER_TYPE_SET:
+ constructed = root->be_encoding;
+ break;
+ default:
+ constructed = 0;
+ break;
+ }
+
+ fprintf(stderr, "%*slen %lu ", indent, "", root->be_len);
+ switch (root->be_class) {
+ case BER_CLASS_UNIVERSAL:
+ fprintf(stderr, "class: universal(%u) type: ", root->be_class);
+ switch (root->be_type) {
+ case BER_TYPE_EOC:
+ fprintf(stderr, "end-of-content");
+ break;
+ case BER_TYPE_BOOLEAN:
+ fprintf(stderr, "boolean");
+ break;
+ case BER_TYPE_INTEGER:
+ fprintf(stderr, "integer");
+ break;
+ case BER_TYPE_BITSTRING:
+ fprintf(stderr, "bit-string");
+ break;
+ case BER_TYPE_OCTETSTRING:
+ fprintf(stderr, "octet-string");
+ break;
+ case BER_TYPE_NULL:
+ fprintf(stderr, "null");
+ break;
+ case BER_TYPE_OBJECT:
+ fprintf(stderr, "object");
+ break;
+ case BER_TYPE_ENUMERATED:
+ fprintf(stderr, "enumerated");
+ break;
+ case BER_TYPE_SEQUENCE:
+ fprintf(stderr, "sequence");
+ break;
+ case BER_TYPE_SET:
+ fprintf(stderr, "set");
+ break;
+ }
+ break;
+ case BER_CLASS_APPLICATION:
+ fprintf(stderr, "class: application(%u) type: ",
+ root->be_class);
+ switch (root->be_type) {
+ case LDAP_REQ_BIND:
+ case LDAP_RES_BIND:
+ fprintf(stderr, "bind");
+ break;
+ case LDAP_REQ_UNBIND_30:
+ fprintf(stderr, "unbind");
+ break;
+ case LDAP_REQ_SEARCH:
+ fprintf(stderr, "search");
+ break;
+ case LDAP_RES_SEARCH_ENTRY:
+ fprintf(stderr, "search entry");
+ break;
+ case LDAP_RES_SEARCH_RESULT:
+ fprintf(stderr, "search result");
+ break;
+ case LDAP_REQ_MODIFY:
+ case LDAP_RES_MODIFY:
+ fprintf(stderr, "modify");
+ break;
+ case LDAP_REQ_ADD:
+ case LDAP_RES_ADD:
+ fprintf(stderr, "add");
+ break;
+ case LDAP_REQ_DELETE_30:
+ case LDAP_RES_DELETE:
+ fprintf(stderr, "delete");
+ break;
+ case LDAP_REQ_MODRDN:
+ case LDAP_RES_MODRDN:
+ fprintf(stderr, "modrdn");
+ break;
+ case LDAP_REQ_COMPARE:
+ case LDAP_RES_COMPARE:
+ fprintf(stderr, "compare");
+ break;
+ case LDAP_REQ_ABANDON_30:
+ fprintf(stderr, "abandon");
+ break;
+ case LDAP_REQ_EXTENDED:
+ case LDAP_RES_EXTENDED:
+ fprintf(stderr, "extended");
+ break;
+ }
+ break;
+ case BER_CLASS_PRIVATE:
+ fprintf(stderr, "class: private(%u) type: ", root->be_class);
+ fprintf(stderr, "encoding (%lu) type: ", root->be_encoding);
+ break;
+ case BER_CLASS_CONTEXT:
+ fprintf(stderr, "class: context(%u) type: ", root->be_class);
+ switch (context) {
+ case LDAP_REQ_BIND:
+ switch(root->be_type) {
+ case LDAP_AUTH_SIMPLE:
+ fprintf(stderr, "auth simple");
+ break;
+ }
+ break;
+ case LDAP_REQ_SEARCH:
+ switch(root->be_type) {
+ case LDAP_FILT_AND:
+ fprintf(stderr, "and");
+ break;
+ case LDAP_FILT_OR:
+ fprintf(stderr, "or");
+ break;
+ case LDAP_FILT_NOT:
+ fprintf(stderr, "not");
+ break;
+ case LDAP_FILT_EQ:
+ fprintf(stderr, "equal");
+ break;
+ case LDAP_FILT_SUBS:
+ fprintf(stderr, "substring");
+ break;
+ case LDAP_FILT_GE:
+ fprintf(stderr, "greater-or-equal");
+ break;
+ case LDAP_FILT_LE:
+ fprintf(stderr, "less-or-equal");
+ break;
+ case LDAP_FILT_PRES:
+ fprintf(stderr, "presence");
+ break;
+ case LDAP_FILT_APPR:
+ fprintf(stderr, "approximate");
+ break;
+ }
+ break;
+ }
+ break;
+ default:
+ fprintf(stderr, "class: <INVALID>(%u) type: ", root->be_class);
+ break;
+ }
+ fprintf(stderr, "(%lu) encoding %lu ",
+ root->be_type, root->be_encoding);
+
+ if (constructed)
+ root->be_encoding = constructed;
+
+ switch (root->be_encoding) {
+ case BER_TYPE_BOOLEAN:
+ if (ber_get_boolean(root, &d) == -1) {
+ fprintf(stderr, "<INVALID>\n");
+ break;
+ }
+ fprintf(stderr, "%s(%d)\n", d ? "true" : "false", d);
+ break;
+ case BER_TYPE_INTEGER:
+ if (ber_get_integer(root, &v) == -1) {
+ fprintf(stderr, "<INVALID>\n");
+ break;
+ }
+ fprintf(stderr, "value %lld\n", v);
+ break;
+ case BER_TYPE_ENUMERATED:
+ if (ber_get_enumerated(root, &v) == -1) {
+ fprintf(stderr, "<INVALID>\n");
+ break;
+ }
+ fprintf(stderr, "value %lld\n", v);
+ break;
+ case BER_TYPE_BITSTRING:
+ if (ber_get_bitstring(root, (void *)&buf, &len) == -1) {
+ fprintf(stderr, "<INVALID>\n");
+ break;
+ }
+ fprintf(stderr, "hexdump ");
+ for (i = 0; i < len; i++)
+ fprintf(stderr, "%02x", buf[i]);
+ fprintf(stderr, "\n");
+ break;
+ case BER_TYPE_OBJECT:
+ if (ber_get_oid(root, &o) == -1) {
+ fprintf(stderr, "<INVALID>\n");
+ break;
+ }
+ fprintf(stderr, "\n");
+ break;
+ case BER_TYPE_OCTETSTRING:
+ if (ber_get_nstring(root, (void *)&buf, &len) == -1) {
+ fprintf(stderr, "<INVALID>\n");
+ break;
+ }
+ if ((visbuf = malloc(len * 4 + 1)) != NULL) {
+ strvisx(visbuf, buf, len, 0);
+ fprintf(stderr, "string \"%s\"\n", visbuf);
+ free(visbuf);
+ }
+ break;
+ case BER_TYPE_NULL: /* no payload */
+ case BER_TYPE_EOC:
+ case BER_TYPE_SEQUENCE:
+ case BER_TYPE_SET:
+ default:
+ fprintf(stderr, "\n");
+ break;
+ }
+
+ if (constructed && root->be_sub) {
+ indent += 2;
+ ldap_debug_elements(root->be_sub, context, NULL);
+ indent -= 2;
+ }
+ if (root->be_next)
+ ldap_debug_elements(root->be_next, context, NULL);
+}
+
diff --git usr.sbin/ldapd/modify.c usr.sbin/ldapd/modify.c
index a24bdd1..35a2542 100644
--- usr.sbin/ldapd/modify.c
+++ usr.sbin/ldapd/modify.c
@@ -25,6 +25,7 @@
#include <string.h>
#include "ldapd.h"
+#include "log.h"
#include "uuid.h"
int
diff --git usr.sbin/ldapd/namespace.c usr.sbin/ldapd/namespace.c
index 052e24d..e669340 100644
--- usr.sbin/ldapd/namespace.c
+++ usr.sbin/ldapd/namespace.c
@@ -27,6 +27,7 @@
#include <zlib.h>
#include "ldapd.h"
+#include "log.h"
extern const char *datadir;
diff --git usr.sbin/ldapd/parse.y usr.sbin/ldapd/parse.y
index b1971bf..8488c7c0 100644
--- usr.sbin/ldapd/parse.y
+++ usr.sbin/ldapd/parse.y
@@ -45,6 +45,7 @@
#include <unistd.h>
#include "ldapd.h"
+#include "log.h"
TAILQ_HEAD(files, file) files = TAILQ_HEAD_INITIALIZER(files);
static struct file {
diff --git usr.sbin/ldapd/schema.c usr.sbin/ldapd/schema.c
index c5f25f7..daac083 100644
--- usr.sbin/ldapd/schema.c
+++ usr.sbin/ldapd/schema.c
@@ -24,6 +24,7 @@
#include <syslog.h>
#include "ldapd.h"
+#include "log.h"
#define ERROR -1
#define STRING 1
diff --git usr.sbin/ldapd/search.c usr.sbin/ldapd/search.c
index c480a25..14a565c 100644
--- usr.sbin/ldapd/search.c
+++ usr.sbin/ldapd/search.c
@@ -27,6 +27,7 @@
#include <time.h>
#include "ldapd.h"
+#include "log.h"
#define MAX_SEARCHES 200
diff --git usr.sbin/ldapd/util.c usr.sbin/ldapd/util.c
index a4c2682..6f23b1b 100644
--- usr.sbin/ldapd/util.c
+++ usr.sbin/ldapd/util.c
@@ -32,6 +32,7 @@
#include <errno.h>
#include "ldapd.h"
+#include "log.h"
int
bsnprintf(char *str, size_t size, const char *format, ...)
diff --git usr.sbin/ldapd/validate.c usr.sbin/ldapd/validate.c
index ab4b15d..7e9a20d 100644
--- usr.sbin/ldapd/validate.c
+++ usr.sbin/ldapd/validate.c
@@ -23,6 +23,7 @@
#include <string.h>
#include "ldapd.h"
+#include "log.h"
static int
validate_required_attributes(struct ber_element *entry, struct object *obj)