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 <henn...@openbsd.org>
+ *
+ * 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 <henn...@openbsd.org>
+ *
+ * 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)

Reply via email to