=> Bootstrap dependency digest>=20010302: found digest-20160304
===> Skipping vulnerability checks.
WARNING: No /var/db/pkg/pkg-vulnerabilities file found.
WARNING: To fix run: `/usr/sbin/pkg_admin -K /var/db/pkg fetch-pkg-vulnerabilities'.
===> Building for avenger-0.8.4nb2
--- all ---
/usr/bin/make  all-recursive
--- all-recursive ---
Making all in libasync
--- arandom.o ---
--- clock_gettime.o ---
--- getopt_long.o ---
--- maketables.o ---
--- rwfd.o ---
--- stktrace.o ---
--- study.o ---
--- suidprotect.o ---
--- aerr.o ---
--- aios.o ---
--- arena.o ---
--- armor.o ---
--- cbuf.o ---
--- convertint.o ---
--- core.o ---
--- dns.o ---
--- arandom.o ---
clang -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT arandom.o -MD -MP -MF .deps/arandom.Tpo -c -o arandom.o arandom.c
--- clock_gettime.o ---
clang -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT clock_gettime.o -MD -MP -MF .deps/clock_gettime.Tpo -c -o clock_gettime.o clock_gettime.c
--- getopt_long.o ---
clang -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT getopt_long.o -MD -MP -MF .deps/getopt_long.Tpo -c -o getopt_long.o getopt_long.c
--- maketables.o ---
clang -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT maketables.o -MD -MP -MF .deps/maketables.Tpo -c -o maketables.o maketables.c
--- core.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT core.o -MD -MP -MF .deps/core.Tpo -c -o core.o core.C
--- dns.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT dns.o -MD -MP -MF .deps/dns.Tpo -c -o dns.o dns.C
--- aios.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT aios.o -MD -MP -MF .deps/aios.Tpo -c -o aios.o aios.C
--- rwfd.o ---
clang -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT rwfd.o -MD -MP -MF .deps/rwfd.Tpo -c -o rwfd.o rwfd.c
--- suidprotect.o ---
clang -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT suidprotect.o -MD -MP -MF .deps/suidprotect.Tpo -c -o suidprotect.o suidprotect.c
--- cbuf.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT cbuf.o -MD -MP -MF .deps/cbuf.Tpo -c -o cbuf.o cbuf.C
--- study.o ---
clang -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT study.o -MD -MP -MF .deps/study.Tpo -c -o study.o study.c
--- stktrace.o ---
clang -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -w -c ./stktrace.c
--- armor.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT armor.o -MD -MP -MF .deps/armor.Tpo -c -o armor.o armor.C
--- arena.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT arena.o -MD -MP -MF .deps/arena.Tpo -c -o arena.o arena.C
--- aerr.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT aerr.o -MD -MP -MF .deps/aerr.Tpo -c -o aerr.o aerr.C
--- convertint.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT convertint.o -MD -MP -MF .deps/convertint.Tpo -c -o convertint.o convertint.C
--- aios.o ---
In file included from aios.C:26:
In file included from ./aios.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
In file included from aios.C:26:
In file included from ./aios.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from aios.C:26:
In file included from ./aios.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from aios.C:26:
In file included from ./aios.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
In file included from aios.C:26:
In file included from ./aios.h:28:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
In file included from aios.C:26:
In file included from ./aios.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
In file included from aios.C:26:
In file included from ./aios.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./aios.h:40:11: note: in instantiation of template class 'callback<void, str, int, void>' requested here
  typedef callback<void, str, int>::ptr rcb_t;
          ^
In file included from aios.C:26:
In file included from ./aios.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./aios.h:41:11: note: in instantiation of template class 'callback<void, int, void, void>' requested here
  typedef callback<void, int>::ptr wcb_t;
          ^
In file included from aios.C:26:
In file included from ./aios.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from aios.C:26:
In file included from ./aios.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./aios.h:45:9: note: in instantiation of template class 'ptr<callback<void, str, int, void> >' requested here
  rcb_t rcb;
        ^
In file included from aios.C:26:
In file included from ./aios.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./aios.h:58:39: note: in instantiation of template class 'ref<callback<void, str, int, void> >' requested here
    { infn = &aios::rnone; rcb_t::ref cb = rcb; rcb = NULL; (*cb) (s, err); }
                                      ^
In file included from aios.C:26:
In file included from ./aios.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./aios.h:67:29: note: in instantiation of template class 'ptr<callback<void, int, void, void> >' requested here
  virtual void mkwcb (wcb_t cb) { if (fd >= 0) (*cb) (err); }
                            ^
In file included from aios.C:26:
In file included from ./aios.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./aios.h:116:20: note: in instantiation of template class 'ref<aios>' requested here
  static ref<aios> alloc (int fd, size_t rbsz = defrbufsize)
                   ^
In file included from aios.C:26:
In file included from ./aios.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./aios.h:161:44: note: in instantiation of template class 'ptr<aios>' requested here
  aiosout (const aios_t::ptr &a) : strbuf (a->outb), s(a) { s->outstart (); }
                                           ^
In file included from aios.C:26:
In file included from ./aios.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from aios.C:26:
In file included from ./aios.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from aios.C:26:
In file included from ./aios.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from aios.C:26:
In file included from ./aios.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
In file included from aios.C:26:
In file included from ./aios.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
In file included from aios.C:26:
In file included from ./aios.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from aios.C:26:
In file included from ./aios.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- convertint.o ---
In file included from convertint.C:24:
In file included from ./parseopt.h:28:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
In file included from convertint.C:24:
In file included from ./parseopt.h:29:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from convertint.C:24:
In file included from ./parseopt.h:29:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from convertint.C:24:
In file included from ./parseopt.h:29:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- dns.o ---
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
--- convertint.o ---
In file included from convertint.C:24:
In file included from ./parseopt.h:29:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
In file included from convertint.C:24:
In file included from ./parseopt.h:29:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- dns.o ---
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- convertint.o ---
In file included from convertint.C:24:
In file included from ./parseopt.h:29:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from convertint.C:24:
In file included from ./parseopt.h:29:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from convertint.C:24:
In file included from ./parseopt.h:29:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from convertint.C:24:
In file included from ./parseopt.h:29:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from convertint.C:24:
In file included from ./parseopt.h:29:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
In file included from convertint.C:24:
In file included from ./parseopt.h:29:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./parseopt.h:98:9: note: in instantiation of template class 'callback<void, vec<str, 0>, str, bool *>' requested here
typedef callback<void, vec<str>, str, bool *>::ref confcb;
        ^
In file included from convertint.C:24:
In file included from ./parseopt.h:29:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
In file included from convertint.C:24:
In file included from ./parseopt.h:29:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./parseopt.h:114:3: note: in instantiation of template class 'ref<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
  ^
In file included from convertint.C:24:
In file included from ./parseopt.h:29:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./parseopt.h:114:15: note: in instantiation of template class 'ptr<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
              ^
In file included from convertint.C:24:
In file included from ./parseopt.h:29:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./parseopt.h:115:3: note: in instantiation of template class 'ref<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
  ^
In file included from convertint.C:24:
In file included from ./parseopt.h:29:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./parseopt.h:115:12: note: in instantiation of template class 'ptr<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
           ^
In file included from convertint.C:24:
In file included from ./parseopt.h:29:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./ihash.h:196:27: note: in instantiation of template class 'callback<void, conftab_el *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
./ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
./parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from convertint.C:24:
In file included from ./parseopt.h:29:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./ihash.h:204:27: note: in instantiation of template class 'callback<void, const conftab_el &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
./ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
./parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from convertint.C:24:
In file included from ./parseopt.h:29:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- arandom.o ---
mv -f .deps/arandom.Tpo .deps/arandom.Po
--- dnsparse.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT dnsparse.o -MD -MP -MF .deps/dnsparse.Tpo -c -o dnsparse.o dnsparse.C
--- maketables.o ---
mv -f .deps/maketables.Tpo .deps/maketables.Po
--- err.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT err.o -MD -MP -MF .deps/err.Tpo -c -o err.o err.C
--- dns.o ---
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
--- clock_gettime.o ---
mv -f .deps/clock_gettime.Tpo .deps/clock_gettime.Po
--- dns.o ---
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- ident.o ---
--- dns.o ---
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
--- ident.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT ident.o -MD -MP -MF .deps/ident.Tpo -c -o ident.o ident.C
--- dns.o ---
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- core.o ---
In file included from core.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- dns.o ---
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:104:9: note: in instantiation of template class 'callback<void, ptr<hostent>, int, void>' requested here
typedef callback<void, ptr<hostent>, int>::ref cbhent;
        ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:109:9: note: in instantiation of template class 'callback<void, ptr<mxlist>, int, void>' requested here
typedef callback<void, ptr<mxlist>, int>::ref cbmxlist;
        ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:112:9: note: in instantiation of template class 'callback<void, ptr<srvlist>, int, void>' requested here
typedef callback<void, ptr<srvlist>, int>::ref cbsrvlist;
        ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:115:9: note: in instantiation of template class 'callback<void, ptr<txtlist>, int, void>' requested here
typedef callback<void, ptr<txtlist>, int>::ref cbtxtlist;
        ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./dns.h:120:19: note: in instantiation of template class 'ref<callback<void, ptr<srvlist>, int, void> >' requested here
               cbsrvlist cb, bool search = false)
                         ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./dns.h:122:10: note: in instantiation of template class 'ptr<srvlist>' requested here
  return dns_srvbyname (strbuf ("_%s._%s.%s", srv, proto, name), cb, search);
         ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, unsigned int> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
./qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, unsigned int>, &qhash_slot<str, unsigned int>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./dnsparse.h:67:9: note: in instantiation of template class 'qhash<str, unsigned int, hashfn<str>, equals<str>, qhash_lookup_return<unsigned int>, &qhash_slot<str, unsigned int>::link>' requested here
  map_t name2pos;
        ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, unsigned int> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
./qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, unsigned int>, &qhash_slot<str, unsigned int>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./dnsparse.h:67:9: note: in instantiation of template class 'qhash<str, unsigned int, hashfn<str>, equals<str>, qhash_lookup_return<unsigned int>, &qhash_slot<str, unsigned int>::link>' requested here
  map_t name2pos;
        ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from dns.C:30:
./dnsimpl.h:37:1: warning: 'dnsreq' defined as a class here but previously declared as a struct [-Wmismatched-tags]
class dnsreq {
^
./dns.h:101:9: note: did you mean class here?
typedef struct dnsreq dnsreq_t;
        ^~~~~~
        class
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./dnsimpl.h:70:10: note: in instantiation of template class 'ref<callback<void, ptr<hostent>, int, void> >' requested here
  cbhent cb;                    // Callback for hostbyname/addr
         ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./dnsimpl.h:81:12: note: in instantiation of template class 'ref<callback<void, ptr<mxlist>, int, void> >' requested here
  cbmxlist cb;
           ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./dnsimpl.h:117:13: note: in instantiation of template class 'ref<callback<void, ptr<txtlist>, int, void> >' requested here
  cbtxtlist cb;
            ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dnsimpl.h:126:11: note: in instantiation of template class 'callback<void, unsigned char *, long, void>' requested here
  typedef callback<void, u_char *, ssize_t>::ref cb_t;
          ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./dnsimpl.h:128:8: note: in instantiation of template class 'ref<callback<void, unsigned char *, long, void> >' requested here
  cb_t cb;
       ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./dnsimpl.h:129:13: note: in instantiation of template class 'ref<bool>' requested here
  ref<bool> destroyed;
            ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./dnsimpl.h:162:16: note: in instantiation of template class 'ptr<dnssock>' requested here
  ptr<dnssock> udpsock;
               ^
--- cbuf.o ---
mv -f .deps/cbuf.Tpo .deps/cbuf.Po
--- dns.o ---
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./ihash.h:196:27: note: in instantiation of template class 'callback<void, dnsreq *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
./ihash.h:229:12: note: in instantiation of template class 'ihash_core<dnsreq, &dnsreq::hlink>' requested here
  : public ihash_core<V, field>
           ^
./dnsimpl.h:184:57: note: in instantiation of template class 'ihash<unsigned short, dnsreq, &dnsreq::id, &dnsreq::hlink, hashfn<unsigned short>, equals<unsigned short> >' requested here
  ihash<u_int16_t, dnsreq, &dnsreq::id, &dnsreq::hlink> reqtab;
                                                        ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./ihash.h:204:27: note: in instantiation of template class 'callback<void, const dnsreq &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
./ihash.h:229:12: note: in instantiation of template class 'ihash_core<dnsreq, &dnsreq::hlink>' requested here
  : public ihash_core<V, field>
           ^
./dnsimpl.h:184:57: note: in instantiation of template class 'ihash<unsigned short, dnsreq, &dnsreq::id, &dnsreq::hlink, hashfn<unsigned short>, equals<unsigned short> >' requested here
  ihash<u_int16_t, dnsreq, &dnsreq::id, &dnsreq::hlink> reqtab;
                                                        ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- ifchg.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT ifchg.o -MD -MP -MF .deps/ifchg.Tpo -c -o ifchg.o ifchg.C
--- core.o ---
In file included from core.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from core.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from core.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- aerr.o ---
In file included from aerr.C:25:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
--- study.o ---
mv -f .deps/study.Tpo .deps/study.Po
--- aerr.o ---
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- ihash.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT ihash.o -MD -MP -MF .deps/ihash.Tpo -c -o ihash.o ihash.C
--- core.o ---
In file included from core.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
--- itree.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT itree.o -MD -MP -MF .deps/itree.Tpo -c -o itree.o itree.C
--- core.o ---
In file included from core.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- convertint.o ---
26 warnings generated.
--- dns.o ---
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
dns.C:364:6: note: in instantiation of template class 'ptr<hostent>' requested here
                                 wrap (this, &resolver::udpcheck_cb),
                                 ^
--- core.o ---
In file included from core.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from core.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from core.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from core.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- convertint.o ---
mv -f .deps/convertint.Tpo .deps/convertint.Po
--- core.o ---
In file included from core.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- malloc.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT malloc.o -MD -MP -MF .deps/malloc.Tpo -c -o malloc.o malloc.C
--- core.o ---
In file included from core.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
In file included from core.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from core.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from core.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- dns.o ---
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
dns.C:685:15: note: in instantiation of template class 'ptr<mxlist>' requested here
  ptr<mxlist> m;
              ^
--- core.o ---
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./ihash.h:196:27: note: in instantiation of template class 'callback<void, child *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
./ihash.h:229:12: note: in instantiation of template class 'ihash_core<child, &child::link>' requested here
  : public ihash_core<V, field>
           ^
core.C:71:55: note: in instantiation of template class 'ihash<int, child, &child::pid, &child::link, hashfn<int>, equals<int> >' requested here
static ihash<pid_t, child, &child::pid, &child::link> chldcbs;
                                                      ^
In file included from core.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./ihash.h:204:27: note: in instantiation of template class 'callback<void, const child &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
./ihash.h:229:12: note: in instantiation of template class 'ihash_core<child, &child::link>' requested here
  : public ihash_core<V, field>
           ^
core.C:71:55: note: in instantiation of template class 'ihash<int, child, &child::pid, &child::link, hashfn<int>, equals<int> >' requested here
static ihash<pid_t, child, &child::pid, &child::link> chldcbs;
                                                      ^
In file included from core.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- armor.o ---
In file included from armor.C:24:
In file included from ./serial.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
--- core.o ---
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./itree.h:162:23: note: in instantiation of template class 'callback<int, const timecb_t *, void, void>' requested here
  T *search (typename callback<int, const T*>::ref cb) const {
                      ^
./itree.h:225:12: note: in instantiation of template class 'itree_core<timecb_t, &timecb_t::link, keyfunc_2<int, timecb_t, timespec, &timecb_t::ts, compare<timespec> > >' requested here
  : public itree_core<V, field, keyfunc_2<int, V, K, key, C> >
           ^
core.C:80:66: note: in instantiation of template class 'itree<timespec, timecb_t, &timecb_t::ts, &timecb_t::link, compare<timespec> >' requested here
static itree<timespec, timecb_t, &timecb_t::ts, &timecb_t::link> timecbs;
--- armor.o ---
./array.h:75:29: note: did you mean class here?
--- core.o ---
                                                                 ^
In file included from core.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- armor.o ---
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- core.o ---
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./itree.h:203:27: note: in instantiation of template class 'callback<void, timecb_t *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
./itree.h:225:12: note: in instantiation of template class 'itree_core<timecb_t, &timecb_t::link, keyfunc_2<int, timecb_t, timespec, &timecb_t::ts, compare<timespec> > >' requested here
  : public itree_core<V, field, keyfunc_2<int, V, K, key, C> >
           ^
core.C:80:66: note: in instantiation of template class 'itree<timespec, timecb_t, &timecb_t::ts, &timecb_t::link, compare<timespec> >' requested here
static itree<timespec, timecb_t, &timecb_t::ts, &timecb_t::link> timecbs;
                                                                 ^
In file included from core.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from core.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
core.C:119:29: note: in instantiation of template class 'ptr<callback<void, int, void, void> >' requested here
chldcb (pid_t pid, cbi::ptr cb)
                            ^
--- dns.o ---
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
dns.C:843:16: note: in instantiation of template class 'ptr<txtlist>' requested here
  ptr<txtlist> t;
               ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, qhash_slot<str, unsigned int> *, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
./qhash.h:93:15: note: in instantiation of member function 'qhash<str, unsigned int, hashfn<str>, equals<str>, qhash_lookup_return<unsigned int>, &qhash_slot<str, unsigned int>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./dnsparse.h:69:3: note: in instantiation of member function 'qhash<str, unsigned int, hashfn<str>, equals<str>, qhash_lookup_return<unsigned int>, &qhash_slot<str, unsigned int>::link>::~qhash' requested here
  nameset () : pos (0) {}
  ^
In file included from dns.C:30:
In file included from ./dnsimpl.h:28:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, const qhash_slot<str, unsigned int> &, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
./qhash.h:93:15: note: in instantiation of member function 'qhash<str, unsigned int, hashfn<str>, equals<str>, qhash_lookup_return<unsigned int>, &qhash_slot<str, unsigned int>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./dnsparse.h:69:3: note: in instantiation of member function 'qhash<str, unsigned int, hashfn<str>, equals<str>, qhash_lookup_return<unsigned int>, &qhash_slot<str, unsigned int>::link>::~qhash' requested here
  nameset () : pos (0) {}
  ^
--- aerr.o ---
In file included from aerr.C:25:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from aerr.C:25:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from aerr.C:25:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- core.o ---
In file included from core.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./list.h:62:27: note: in instantiation of template class 'callback<void, lazycb_t *, void, void>' requested here
  void traverse (typename callback<void, T*>::ref cb) const {
                          ^
core.C:335:11: note: in instantiation of template class 'list<lazycb_t, &lazycb_t::link>' requested here
  lazylist->insert_head (this);
          ^
In file included from core.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rwfd.o ---
mv -f .deps/rwfd.Tpo .deps/rwfd.Po
--- msb.o ---
--- aerr.o ---
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
--- msb.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT msb.o -MD -MP -MF .deps/msb.Tpo -c -o msb.o msb.C
--- aerr.o ---
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- arena.o ---
In file included from arena.C:24:
In file included from ./arena.h:28:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- suidprotect.o ---
mv -f .deps/suidprotect.Tpo .deps/suidprotect.Po
--- myaddrs.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT myaddrs.o -MD -MP -MF .deps/myaddrs.Tpo -c -o myaddrs.o myaddrs.C
--- aerr.o ---
In file included from aerr.C:25:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
--- dns.o ---
In file included from dns.C:30:
./dnsimpl.h:38:7: warning: private field 'ntries' is not used [-Wunused-private-field]
  int ntries;
      ^
--- aerr.o ---
In file included from aerr.C:25:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- armor.o ---
In file included from armor.C:24:
In file included from ./serial.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from armor.C:24:
In file included from ./serial.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from armor.C:24:
In file included from ./serial.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- aerr.o ---
In file included from aerr.C:25:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from aerr.C:25:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from aerr.C:25:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from aerr.C:25:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from aerr.C:25:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- armor.o ---
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- aerr.o ---
In file included from aerr.C:25:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
In file included from aerr.C:25:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from aerr.C:25:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from aerr.C:25:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- armor.o ---
In file included from armor.C:24:
In file included from ./serial.h:28:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
In file included from armor.C:24:
In file included from ./serial.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- arena.o ---
In file included from arena.C:24:
In file included from ./arena.h:28:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from arena.C:24:
In file included from ./arena.h:28:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from arena.C:24:
In file included from ./arena.h:28:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
In file included from arena.C:24:
In file included from ./arena.h:28:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
In file included from arena.C:24:
In file included from ./arena.h:28:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
In file included from arena.C:24:
In file included from ./arena.h:28:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from arena.C:24:
In file included from ./arena.h:28:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from arena.C:24:
In file included from ./arena.h:28:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from arena.C:24:
In file included from ./arena.h:28:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from arena.C:24:
In file included from ./arena.h:28:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
In file included from arena.C:24:
In file included from ./arena.h:28:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
In file included from arena.C:24:
In file included from ./arena.h:28:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from arena.C:24:
In file included from ./arena.h:28:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from arena.C:24:
In file included from ./arena.h:28:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- getopt_long.o ---
mv -f .deps/getopt_long.Tpo .deps/getopt_long.Po
--- myname.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT myname.o -MD -MP -MF .deps/myname.Tpo -c -o myname.o myname.C
--- aerr.o ---
21 warnings generated.
--- aios.o ---
26 warnings generated.
--- aerr.o ---
mv -f .deps/aerr.Tpo .deps/aerr.Po
--- armor.o ---
9 warnings generated.
--- parseopt.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT parseopt.o -MD -MP -MF .deps/parseopt.Tpo -c -o parseopt.o parseopt.C
--- aios.o ---
mv -f .deps/aios.Tpo .deps/aios.Po
--- err.o ---
In file included from err.C:24:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- pipe2str.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT pipe2str.o -MD -MP -MF .deps/pipe2str.Tpo -c -o pipe2str.o pipe2str.C
--- armor.o ---
mv -f .deps/armor.Tpo .deps/armor.Po
--- refcnt.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT refcnt.o -MD -MP -MF .deps/refcnt.Tpo -c -o refcnt.o refcnt.C
--- arena.o ---
21 warnings generated.
mv -f .deps/arena.Tpo .deps/arena.Po
--- rxx.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT rxx.o -MD -MP -MF .deps/rxx.Tpo -c -o rxx.o rxx.C
--- dnsparse.o ---
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- err.o ---
In file included from err.C:24:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from err.C:24:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from err.C:24:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
In file included from err.C:24:
In file included from ./err.h:28:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
In file included from err.C:24:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- core.o ---
32 warnings generated.
--- dnsparse.o ---
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- core.o ---
mv -f .deps/core.Tpo .deps/core.Po
--- dnsparse.o ---
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- socket.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT socket.o -MD -MP -MF .deps/socket.Tpo -c -o socket.o socket.C
--- dnsparse.o ---
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- ifchg.o ---
In file included from ifchg.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- dnsparse.o ---
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:104:9: note: in instantiation of template class 'callback<void, ptr<hostent>, int, void>' requested here
typedef callback<void, ptr<hostent>, int>::ref cbhent;
        ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:109:9: note: in instantiation of template class 'callback<void, ptr<mxlist>, int, void>' requested here
typedef callback<void, ptr<mxlist>, int>::ref cbmxlist;
        ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:112:9: note: in instantiation of template class 'callback<void, ptr<srvlist>, int, void>' requested here
typedef callback<void, ptr<srvlist>, int>::ref cbsrvlist;
        ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:115:9: note: in instantiation of template class 'callback<void, ptr<txtlist>, int, void>' requested here
typedef callback<void, ptr<txtlist>, int>::ref cbtxtlist;
        ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./dns.h:120:19: note: in instantiation of template class 'ref<callback<void, ptr<srvlist>, int, void> >' requested here
               cbsrvlist cb, bool search = false)
                         ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./dns.h:122:10: note: in instantiation of template class 'ptr<srvlist>' requested here
  return dns_srvbyname (strbuf ("_%s._%s.%s", srv, proto, name), cb, search);
         ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, unsigned int> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
./qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, unsigned int>, &qhash_slot<str, unsigned int>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./dnsparse.h:67:9: note: in instantiation of template class 'qhash<str, unsigned int, hashfn<str>, equals<str>, qhash_lookup_return<unsigned int>, &qhash_slot<str, unsigned int>::link>' requested here
  map_t name2pos;
        ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, unsigned int> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
./qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, unsigned int>, &qhash_slot<str, unsigned int>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./dnsparse.h:67:9: note: in instantiation of template class 'qhash<str, unsigned int, hashfn<str>, equals<str>, qhash_lookup_return<unsigned int>, &qhash_slot<str, unsigned int>::link>' requested here
  map_t name2pos;
        ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- ihash.o ---
In file included from ihash.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- dnsparse.o ---
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
dnsparse.C:399:11: note: in instantiation of template class 'ptr<hostent>' requested here
dnsparse::tohostent ()
          ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
dnsparse.C:435:14: note: in instantiation of template class 'ref<hostent>' requested here
    (sizeof (*h)
             ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
dnsparse.C:477:11: note: in instantiation of template class 'ptr<mxlist>' requested here
dnsparse::tomxlist ()
          ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
dnsparse.C:527:16: note: in instantiation of template class 'ref<mxlist>' requested here
  ref <mxlist> mxl = refcounted<mxlist, vsize>::alloc
               ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
dnsparse.C:664:16: note: in instantiation of template class 'ref<srvlist>' requested here
  ref<srvlist> s = refcounted<srvlist, vsize>::alloc
               ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
dnsparse.C:684:11: note: in instantiation of template class 'ptr<txtlist>' requested here
dnsparse::totxtlist ()
          ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
dnsparse.C:716:16: note: in instantiation of template class 'ref<txtlist>' requested here
  ref<txtlist> t = refcounted<txtlist, vsize>::alloc
               ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, qhash_slot<str, unsigned int> *, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
./qhash.h:93:15: note: in instantiation of member function 'qhash<str, unsigned int, hashfn<str>, equals<str>, qhash_lookup_return<unsigned int>, &qhash_slot<str, unsigned int>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./dnsparse.h:69:3: note: in instantiation of member function 'qhash<str, unsigned int, hashfn<str>, equals<str>, qhash_lookup_return<unsigned int>, &qhash_slot<str, unsigned int>::link>::~qhash' requested here
  nameset () : pos (0) {}
  ^
In file included from dnsparse.C:29:
In file included from ./dnsparse.h:29:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, const qhash_slot<str, unsigned int> &, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
./qhash.h:93:15: note: in instantiation of member function 'qhash<str, unsigned int, hashfn<str>, equals<str>, qhash_lookup_return<unsigned int>, &qhash_slot<str, unsigned int>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./dnsparse.h:69:3: note: in instantiation of member function 'qhash<str, unsigned int, hashfn<str>, equals<str>, qhash_lookup_return<unsigned int>, &qhash_slot<str, unsigned int>::link>::~qhash' requested here
  nameset () : pos (0) {}
  ^
--- ifchg.o ---
In file included from ifchg.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from ifchg.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from ifchg.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- ihash.o ---
In file included from ihash.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
--- msb.o ---
mv -f .deps/msb.Tpo .deps/msb.Po
--- ihash.o ---
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from ihash.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from ihash.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- ifchg.o ---
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
--- str.o ---
--- ifchg.o ---
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- str.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT str.o -MD -MP -MF .deps/str.Tpo -c -o str.o str.C
--- ihash.o ---
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- ifchg.o ---
In file included from ifchg.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
--- ihash.o ---
In file included from ihash.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
--- ifchg.o ---
In file included from ifchg.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- ihash.o ---
In file included from ihash.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- myaddrs.o ---
In file included from myaddrs.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- ifchg.o ---
In file included from ifchg.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from ifchg.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from ifchg.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from ifchg.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- ihash.o ---
In file included from ihash.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from ihash.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
--- ifchg.o ---
In file included from ifchg.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
--- ihash.o ---
typedef callback<void, str>::ref cbs;
        ^
--- ifchg.o ---
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
--- ihash.o ---
In file included from ihash.C:24:
--- ifchg.o ---
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- ihash.o ---
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- ifchg.o ---
  typedef struct ref<T> ref;
          ^
./amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
--- ihash.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- ifchg.o ---
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- ihash.o ---
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from ihash.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from ihash.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- ifchg.o ---
In file included from ifchg.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
In file included from ifchg.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from ifchg.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from ifchg.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- ident.o ---
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- ifchg.o ---
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:104:9: note: in instantiation of template class 'callback<void, ptr<hostent>, int, void>' requested here
typedef callback<void, ptr<hostent>, int>::ref cbhent;
        ^
In file included from ifchg.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:109:9: note: in instantiation of template class 'callback<void, ptr<mxlist>, int, void>' requested here
typedef callback<void, ptr<mxlist>, int>::ref cbmxlist;
        ^
In file included from ifchg.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:112:9: note: in instantiation of template class 'callback<void, ptr<srvlist>, int, void>' requested here
typedef callback<void, ptr<srvlist>, int>::ref cbsrvlist;
        ^
In file included from ifchg.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:115:9: note: in instantiation of template class 'callback<void, ptr<txtlist>, int, void>' requested here
typedef callback<void, ptr<txtlist>, int>::ref cbtxtlist;
        ^
In file included from ifchg.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
In file included from ifchg.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./dns.h:120:19: note: in instantiation of template class 'ref<callback<void, ptr<srvlist>, int, void> >' requested here
               cbsrvlist cb, bool search = false)
                         ^
In file included from ifchg.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./dns.h:122:10: note: in instantiation of template class 'ptr<srvlist>' requested here
  return dns_srvbyname (strbuf ("_%s._%s.%s", srv, proto, name), cb, search);
         ^
In file included from ifchg.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./list.h:62:27: note: in instantiation of template class 'callback<void, ifchgcb_t *, void, void>' requested here
  void traverse (typename callback<void, T*>::ref cb) const {
                          ^
ifchg.C:38:42: note: in instantiation of template class 'list<ifchgcb_t, &ifchgcb_t::link>' requested here
static list<ifchgcb_t, &ifchgcb_t::link> chglist;
                                         ^
In file included from ifchg.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- myaddrs.o ---
In file included from myaddrs.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from myaddrs.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from myaddrs.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- malloc.o ---
In file included from malloc.C:3:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- ihash.o ---
16 warnings generated.
--- myaddrs.o ---
In file included from myaddrs.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
--- ifchg.o ---
33 warnings generated.
--- myaddrs.o ---
In file included from myaddrs.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- ihash.o ---
mv -f .deps/ihash.Tpo .deps/ihash.Po
--- str2file.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT str2file.o -MD -MP -MF .deps/str2file.Tpo -c -o str2file.o str2file.C
--- myaddrs.o ---
In file included from myaddrs.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from myaddrs.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from myaddrs.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from myaddrs.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from myaddrs.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- ifchg.o ---
mv -f .deps/ifchg.Tpo .deps/ifchg.Po
--- straux.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT straux.o -MD -MP -MF .deps/straux.Tpo -c -o straux.o straux.C
--- err.o ---
9 warnings generated.
--- myaddrs.o ---
In file included from myaddrs.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<in_addr, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
./qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<in_addr, void>, &qhash_slot<in_addr, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
myaddrs.C:75:18: note: in instantiation of template class 'bhash<in_addr, hashfn<in_addr>, equals<in_addr>, &qhash_slot<in_addr, void>::link>' requested here
  bhash<in_addr> addrs;
                 ^
In file included from myaddrs.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<in_addr, void> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
./qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<in_addr, void>, &qhash_slot<in_addr, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
myaddrs.C:75:18: note: in instantiation of template class 'bhash<in_addr, hashfn<in_addr>, equals<in_addr>, &qhash_slot<in_addr, void>::link>' requested here
  bhash<in_addr> addrs;
                 ^
In file included from myaddrs.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- ident.o ---
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
--- err.o ---
mv -f .deps/err.Tpo .deps/err.Po
--- ident.o ---
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- suio++.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT suio++.o -MD -MP -MF .deps/suio++.Tpo -c -o suio++.o suio++.C
--- ident.o ---
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
In file included from ident.C:24:
In file included from ./rxx.h:32:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- myname.o ---
In file included from myname.C:24:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- malloc.o ---
In file included from malloc.C:3:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from malloc.C:3:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from malloc.C:3:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- ident.o ---
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- malloc.o ---
In file included from malloc.C:3:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
In file included from malloc.C:3:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- ident.o ---
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:104:9: note: in instantiation of template class 'callback<void, ptr<hostent>, int, void>' requested here
typedef callback<void, ptr<hostent>, int>::ref cbhent;
        ^
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:109:9: note: in instantiation of template class 'callback<void, ptr<mxlist>, int, void>' requested here
typedef callback<void, ptr<mxlist>, int>::ref cbmxlist;
        ^
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:112:9: note: in instantiation of template class 'callback<void, ptr<srvlist>, int, void>' requested here
typedef callback<void, ptr<srvlist>, int>::ref cbsrvlist;
        ^
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:115:9: note: in instantiation of template class 'callback<void, ptr<txtlist>, int, void>' requested here
typedef callback<void, ptr<txtlist>, int>::ref cbtxtlist;
        ^
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./dns.h:120:19: note: in instantiation of template class 'ref<callback<void, ptr<srvlist>, int, void> >' requested here
               cbsrvlist cb, bool search = false)
                         ^
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./dns.h:122:10: note: in instantiation of template class 'ptr<srvlist>' requested here
  return dns_srvbyname (strbuf ("_%s._%s.%s", srv, proto, name), cb, search);
         ^
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./aios.h:45:9: note: in instantiation of template class 'ptr<callback<void, str, int, void> >' requested here
  rcb_t rcb;
        ^
--- malloc.o ---
In file included from malloc.C:3:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from malloc.C:3:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from malloc.C:3:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from malloc.C:3:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- ident.o ---
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./aios.h:58:39: note: in instantiation of template class 'ref<callback<void, str, int, void> >' requested here
    { infn = &aios::rnone; rcb_t::ref cb = rcb; rcb = NULL; (*cb) (s, err); }
                                      ^
--- malloc.o ---
In file included from malloc.C:3:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- ident.o ---
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./aios.h:67:29: note: in instantiation of template class 'ptr<callback<void, int, void, void> >' requested here
  virtual void mkwcb (wcb_t cb) { if (fd >= 0) (*cb) (err); }
                            ^
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./aios.h:116:20: note: in instantiation of template class 'ref<aios>' requested here
  static ref<aios> alloc (int fd, size_t rbsz = defrbufsize)
                   ^
--- parseopt.o ---
In file included from parseopt.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- ident.o ---
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./aios.h:161:44: note: in instantiation of template class 'ptr<aios>' requested here
  aiosout (const aios_t::ptr &a) : strbuf (a->outb), s(a) { s->outstart (); }
                                           ^
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
ident.C:39:16: note: in instantiation of template class 'ptr<hostent>' requested here
  ptr<hostent> h;
               ^
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
ident.C:40:47: note: in instantiation of template class 'ptr<callback<void, str, ptr<hostent>, int> >' requested here
  callback<void, str, ptr<hostent>, int>::ptr cb;
                                              ^
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
ident.C:73:63: note: in instantiation of template class 'ref<callback<void, str, ptr<hostent>, int> >' requested here
identptr (int fd, callback<void, str, ptr<hostent>, int>::ref cb,
                                                              ^
In file included from ident.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
ident.C:127:32: note: in instantiation of template class 'ref<callback<void, ptr<hostent>, int, void> >' requested here
  dns_hostbyaddr (ra.sin_addr, wrap (is, &identstat::dnscb));
                               ^
--- myname.o ---
In file included from myname.C:24:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from myname.C:24:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
--- pipe2str.o ---
In file included from pipe2str.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
--- myname.o ---
In file included from myname.C:24:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- pipe2str.o ---
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- rxx.o ---
In file included from rxx.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- myname.o ---
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
--- parseopt.o ---
In file included from parseopt.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- myname.o ---
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
--- parseopt.o ---
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from parseopt.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
--- myname.o ---
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
--- parseopt.o ---
In file included from parseopt.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
--- myname.o ---
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
--- parseopt.o ---
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- myname.o ---
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- parseopt.o ---
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
In file included from parseopt.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
In file included from parseopt.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- myname.o ---
In file included from myname.C:24:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
In file included from myname.C:24:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- parseopt.o ---
In file included from parseopt.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from parseopt.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from parseopt.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from parseopt.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from parseopt.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
In file included from parseopt.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./parseopt.h:98:9: note: in instantiation of template class 'callback<void, vec<str, 0>, str, bool *>' requested here
typedef callback<void, vec<str>, str, bool *>::ref confcb;
        ^
In file included from parseopt.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
In file included from parseopt.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./parseopt.h:114:3: note: in instantiation of template class 'ref<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
  ^
In file included from parseopt.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./parseopt.h:114:15: note: in instantiation of template class 'ptr<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
              ^
In file included from parseopt.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./parseopt.h:115:3: note: in instantiation of template class 'ref<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
  ^
In file included from parseopt.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./parseopt.h:115:12: note: in instantiation of template class 'ptr<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
           ^
In file included from parseopt.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./ihash.h:196:27: note: in instantiation of template class 'callback<void, conftab_el *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
./ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
./parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from parseopt.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./ihash.h:204:27: note: in instantiation of template class 'callback<void, const conftab_el &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
./ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
./parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from parseopt.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- myname.o ---
In file included from myname.C:24:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from myname.C:24:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from myname.C:24:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from myname.C:24:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from myname.C:24:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- rxx.o ---
In file included from rxx.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from rxx.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from rxx.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- refcnt.o ---
In file included from refcnt.C:46:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
refcnt.C:59:1: note: in instantiation of template class 'callback<void, void, void, void>' requested here
callback<void>::ref cbv_null (gwrap (ignore_void));
^
In file included from refcnt.C:46:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from refcnt.C:24:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
refcnt.C:59:21: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
callback<void>::ref cbv_null (gwrap (ignore_void));
                    ^
--- myaddrs.o ---
20 warnings generated.
--- rxx.o ---
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- refcnt.o ---
In file included from refcnt.C:46:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
refcnt.C:60:1: note: in instantiation of template class 'callback<void, int, void, void>' requested here
callback<void, int>::ref cbi_null (gwrap (ignore_int));
^
In file included from refcnt.C:46:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- myname.o ---
In file included from myname.C:24:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
--- malloc.o ---
16 warnings generated.
--- refcnt.o ---
In file included from refcnt.C:24:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
refcnt.C:60:26: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
callback<void, int>::ref cbi_null (gwrap (ignore_int));
                         ^
--- pipe2str.o ---
In file included from pipe2str.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
--- refcnt.o ---
In file included from refcnt.C:62:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
--- pipe2str.o ---
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from pipe2str.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
--- myname.o ---
In file included from myname.C:24:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from myname.C:24:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from myname.C:24:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- refcnt.o ---
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- pipe2str.o ---
In file included from pipe2str.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- myaddrs.o ---
mv -f .deps/myaddrs.Tpo .deps/myaddrs.Po
--- itree.o ---
mv -f .deps/itree.Tpo .deps/itree.Po
--- pipe2str.o ---
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
--- suio_vuprintf.o ---
--- pipe2str.o ---
./suio++.h:46:7: note: previous use is here
class suio {
      ^
--- tcpconnect.o ---
--- pipe2str.o ---
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
--- rxx.o ---
In file included from rxx.C:24:
In file included from ./rxx.h:32:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
--- pipe2str.o ---
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
--- rxx.o ---
struct bssstr : public str {
^
--- pipe2str.o ---
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
--- rxx.o ---
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
--- pipe2str.o ---
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- myname.o ---
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:104:9: note: in instantiation of template class 'callback<void, ptr<hostent>, int, void>' requested here
typedef callback<void, ptr<hostent>, int>::ref cbhent;
        ^
In file included from myname.C:24:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:109:9: note: in instantiation of template class 'callback<void, ptr<mxlist>, int, void>' requested here
typedef callback<void, ptr<mxlist>, int>::ref cbmxlist;
        ^
In file included from myname.C:24:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:112:9: note: in instantiation of template class 'callback<void, ptr<srvlist>, int, void>' requested here
typedef callback<void, ptr<srvlist>, int>::ref cbsrvlist;
        ^
In file included from myname.C:24:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:115:9: note: in instantiation of template class 'callback<void, ptr<txtlist>, int, void>' requested here
typedef callback<void, ptr<txtlist>, int>::ref cbtxtlist;
        ^
In file included from myname.C:24:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- suio_vuprintf.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT suio_vuprintf.o -MD -MP -MF .deps/suio_vuprintf.Tpo -c -o suio_vuprintf.o suio_vuprintf.C
--- malloc.o ---
mv -f .deps/malloc.Tpo .deps/malloc.Po
--- myname.o ---
In file included from myname.C:24:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./dns.h:120:19: note: in instantiation of template class 'ref<callback<void, ptr<srvlist>, int, void> >' requested here
               cbsrvlist cb, bool search = false)
                         ^
--- rxx.o ---
In file included from rxx.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- myname.o ---
In file included from myname.C:24:
In file included from ./dns.h:29:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./dns.h:122:10: note: in instantiation of template class 'ptr<srvlist>' requested here
  return dns_srvbyname (strbuf ("_%s._%s.%s", srv, proto, name), cb, search);
         ^
--- refcnt.o ---
In file included from refcnt.C:62:
In file included from ./err.h:28:
In file included from ./str.h:29:
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
--- dftables.o ---
--- tcpconnect.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT tcpconnect.o -MD -MP -MF .deps/tcpconnect.Tpo -c -o tcpconnect.o tcpconnect.C
--- dftables.o ---
clang -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT dftables.o -MD -MP -MF .deps/dftables.Tpo -c -o dftables.o dftables.c
--- refcnt.o ---
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- pipe2str.o ---
In file included from pipe2str.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
--- rxx.o ---
In file included from rxx.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from rxx.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from rxx.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from rxx.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from rxx.C:24:
In file included from ./rxx.h:32:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- pipe2str.o ---
In file included from pipe2str.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- refcnt.o ---
In file included from refcnt.C:62:
In file included from ./err.h:28:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
--- pipe2str.o ---
In file included from pipe2str.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from pipe2str.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from pipe2str.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from pipe2str.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from pipe2str.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- refcnt.o ---
In file included from refcnt.C:24:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- pipe2str.o ---
In file included from pipe2str.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
In file included from pipe2str.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from pipe2str.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from pipe2str.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
In file included from pipe2str.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
pipe2str.C:27:23: note: in instantiation of template class 'ref<callback<void, str, void, void> >' requested here
pipe2str (int fd, cbs cb, int *fdp, strbuf *sb)
                      ^
--- socket.o ---
In file included from socket.C:29:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- str.o ---
In file included from str.C:24:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
In file included from str.C:24:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from str.C:24:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from str.C:24:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- socket.o ---
In file included from socket.C:29:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from socket.C:29:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from socket.C:29:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- str.o ---
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- socket.o ---
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- str.o ---
In file included from str.C:24:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
In file included from str.C:24:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- socket.o ---
In file included from socket.C:29:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
In file included from socket.C:29:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
In file included from socket.C:29:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from socket.C:29:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from socket.C:29:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from socket.C:29:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from socket.C:29:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- dns.o ---
54 warnings generated.
mv -f .deps/dns.Tpo .deps/dns.Po
--- daemonize.o ---
--- myname.o ---
31 warnings generated.
--- daemonize.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT daemonize.o -MD -MP -MF .deps/daemonize.Tpo -c -o daemonize.o daemonize.C
--- myname.o ---
mv -f .deps/myname.Tpo .deps/myname.Po
--- spawn.o ---
--- refcnt.o ---
12 warnings generated.
--- spawn.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT spawn.o -MD -MP -MF .deps/spawn.Tpo -c -o spawn.o spawn.C
--- refcnt.o ---
mv -f .deps/refcnt.Tpo .deps/refcnt.Po
--- str2file.o ---
In file included from str2file.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
--- straux.o ---
In file included from straux.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
--- str2file.o ---
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- straux.o ---
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- pipe2str.o ---
22 warnings generated.
--- rxx.o ---
16 warnings generated.
--- pipe2str.o ---
mv -f .deps/pipe2str.Tpo .deps/pipe2str.Po
--- suio++.o ---
In file included from suio++.C:24:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
--- rxx.o ---
mv -f .deps/rxx.Tpo .deps/rxx.Po
--- suio++.o ---
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- str2file.o ---
In file included from str2file.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from str2file.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from str2file.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- straux.o ---
In file included from straux.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from straux.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from straux.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- str2file.o ---
In file included from str2file.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
In file included from str2file.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- straux.o ---
In file included from straux.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
--- socket.o ---
16 warnings generated.
--- straux.o ---
In file included from straux.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- str2file.o ---
In file included from str2file.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from str2file.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from str2file.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from str2file.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- suio++.o ---
In file included from suio++.C:24:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from suio++.C:24:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
--- str2file.o ---
In file included from str2file.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- str.o ---
9 warnings generated.
--- suio++.o ---
In file included from suio++.C:24:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- straux.o ---
In file included from straux.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
--- parseopt.o ---
26 warnings generated.
--- straux.o ---
./amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from straux.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from straux.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from straux.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from straux.C:25:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- socket.o ---
mv -f .deps/socket.Tpo .deps/socket.Po
--- suio++.o ---
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- str.o ---
mv -f .deps/str.Tpo .deps/str.Po
--- ident.o ---
40 warnings generated.
--- suio_vuprintf.o ---
In file included from suio_vuprintf.C:62:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- parseopt.o ---
mv -f .deps/parseopt.Tpo .deps/parseopt.Po
--- suio++.o ---
In file included from suio++.C:24:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
suio++.C:195:23: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
  callback<void>::ptr cb;
                      ^
--- ident.o ---
mv -f .deps/ident.Tpo .deps/ident.Po
--- tcpconnect.o ---
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- suio++.o ---
suio++.C:459:21: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
suio_flatten (const struct suio *uio)
                    ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
suio++.C:459:21: note: did you mean class here?
suio_flatten (const struct suio *uio)
                    ^~~~~~
                    class
--- dnsparse.o ---
44 warnings generated.
mv -f .deps/dnsparse.Tpo .deps/dnsparse.Po
--- tcpconnect.o ---
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- suio_vuprintf.o ---
In file included from suio_vuprintf.C:62:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from suio_vuprintf.C:62:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from suio_vuprintf.C:62:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
suio_vuprintf.C:109:16: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
suio_vuprintf (struct suio *uio, const char *_fmt, va_list ap)
               ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
suio_vuprintf.C:109:16: note: did you mean class here?
suio_vuprintf (struct suio *uio, const char *_fmt, va_list ap)
               ^~~~~~
               class
--- tcpconnect.o ---
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- suio_vuprintf.o ---
suio_vuprintf.C:717:15: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
suio_uprintf (struct suio *uio, const char *fmt, ...)
              ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
suio_vuprintf.C:717:15: note: did you mean class here?
suio_uprintf (struct suio *uio, const char *fmt, ...)
              ^~~~~~
              class
--- tcpconnect.o ---
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:104:9: note: in instantiation of template class 'callback<void, ptr<hostent>, int, void>' requested here
typedef callback<void, ptr<hostent>, int>::ref cbhent;
        ^
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:109:9: note: in instantiation of template class 'callback<void, ptr<mxlist>, int, void>' requested here
typedef callback<void, ptr<mxlist>, int>::ref cbmxlist;
        ^
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:112:9: note: in instantiation of template class 'callback<void, ptr<srvlist>, int, void>' requested here
typedef callback<void, ptr<srvlist>, int>::ref cbsrvlist;
        ^
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./dns.h:115:9: note: in instantiation of template class 'callback<void, ptr<txtlist>, int, void>' requested here
typedef callback<void, ptr<txtlist>, int>::ref cbtxtlist;
        ^
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./dns.h:120:19: note: in instantiation of template class 'ref<callback<void, ptr<srvlist>, int, void> >' requested here
               cbsrvlist cb, bool search = false)
                         ^
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./dns.h:122:10: note: in instantiation of template class 'ptr<srvlist>' requested here
  return dns_srvbyname (strbuf ("_%s._%s.%s", srv, proto, name), cb, search);
         ^
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
tcpconnect.C:77:36: note: in instantiation of template class 'ptr<hostent>' requested here
  dnsp = dns_hostbyname (hostname, wrap (this, &tcpportconnect_t::name_cb),
                                   ^
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
tcpconnect.C:77:36: note: in instantiation of template class 'ref<callback<void, ptr<hostent>, int, void> >' requested here
  dnsp = dns_hostbyname (hostname, wrap (this, &tcpportconnect_t::name_cb),
                                   ^
--- straux.o ---
16 warnings generated.
mv -f .deps/straux.Tpo .deps/straux.Po
--- tcpconnect.o ---
In file included from tcpconnect.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
tcpconnect.C:282:48: note: in instantiation of template class 'ref<srvlist>' requested here
tcpsrvconnect_t::tcpsrvconnect_t (ref<srvlist> sl, cbi cb, str *np)
                                               ^
--- daemonize.o ---
In file included from daemonize.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- str2file.o ---
16 warnings generated.
mv -f .deps/str2file.Tpo .deps/str2file.Po
--- spawn.o ---
In file included from spawn.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:29:
In file included from ./vec.h:30:
./array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
./array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- dftables.o ---
mv -f .deps/dftables.Tpo .deps/dftables.Po
--- dftables ---
/bin/sh ../libtool  --tag=CC    --mode=link clang  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall    -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -L/usr/lib -Wl,-R/usr/lib -o dftables dftables.o  
--- daemonize.o ---
In file included from daemonize.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from daemonize.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from daemonize.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
In file included from daemonize.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
In file included from daemonize.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
In file included from daemonize.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from daemonize.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from daemonize.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from daemonize.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from daemonize.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- spawn.o ---
In file included from spawn.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
./suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from spawn.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from spawn.C:24:
In file included from ./amisc.h:29:
--- daemonize.o ---
In file included from daemonize.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
--- spawn.o ---
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
--- daemonize.o ---
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
--- spawn.o ---
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
--- daemonize.o ---
./async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
--- spawn.o ---
./suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- daemonize.o ---
void chldcb (pid_t, cbi::ptr);
                    ^
In file included from daemonize.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from daemonize.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
./callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from daemonize.C:24:
In file included from ./async.h:28:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- spawn.o ---
./suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
./suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
./suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
./suio++.h:46:7: note: previous use is here
class suio {
      ^
./suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- suio_vuprintf.o ---
9 warnings generated.
--- spawn.o ---
In file included from spawn.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
./str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
./str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
In file included from spawn.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- suio_vuprintf.o ---
mv -f .deps/suio_vuprintf.Tpo .deps/suio_vuprintf.Po
--- dftables ---
libtool: link: clang -O2 -I/data/scratch/mail/avenger/work/.buildlink/include/db4 -Wall -Wl,-rpath -Wl,/usr/pkg/lib -o dftables dftables.o  -L/data/scratch/mail/avenger/work/.buildlink/lib
--- spawn.o ---
In file included from spawn.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from spawn.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from spawn.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
./callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from spawn.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
./callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from spawn.C:24:
In file included from ./amisc.h:29:
In file included from ./err.h:28:
In file included from ./str.h:29:
In file included from ./suio++.h:30:
In file included from ./callback.h:612:
./refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
spawn.C:135:12: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
    if (np = searchdir (builddir, prog))
        ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
spawn.C:135:12: note: place parentheses around the assignment to silence this warning
    if (np = searchdir (builddir, prog))
           ^
        (                              )
spawn.C:135:12: note: use '==' to turn this assignment into an equality comparison
    if (np = searchdir (builddir, prog))
           ^
           ==
spawn.C:137:12: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
    if (np = searchdir (builddir << "/lib", prog))
        ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
spawn.C:137:12: note: place parentheses around the assignment to silence this warning
    if (np = searchdir (builddir << "/lib", prog))
           ^
        (                                        )
spawn.C:137:12: note: use '==' to turn this assignment into an equality comparison
    if (np = searchdir (builddir << "/lib", prog))
           ^
           ==
--- chartables.c ---
./dftables chartables.c
--- pcre.o ---
clang -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT pcre.o -MD -MP -MF .deps/pcre.Tpo -c -o pcre.o pcre.c
--- suio++.o ---
9 warnings generated.
mv -f .deps/suio++.Tpo .deps/suio++.Po
--- pcre.o ---
pcre.c:1338:6: warning: explicitly assigning value of variable of type 'BOOL' (aka 'int') to itself [-Wself-assign]
utf8 = utf8;               /* Stop pedantic compilers complaining */
~~~~ ^ ~~~~
pcre.c:1411:6: warning: explicitly assigning value of variable of type 'BOOL' (aka 'int') to itself [-Wself-assign]
utf8 = utf8;               /* Stop pedantic compilers complaining */
~~~~ ^ ~~~~
pcre.c:2891:35: warning: use of logical '&&' with constant operand [-Wconstant-logical-operand]
        else if ((digitab[ptr[1]] && ctype_digit) != 0)
                                  ^  ~~~~~~~~~~~
pcre.c:2891:35: note: use '&' for a bitwise operation
        else if ((digitab[ptr[1]] && ctype_digit) != 0)
                                  ^~
                                  &
pcre.c:2891:35: note: remove constant to silence this warning
        else if ((digitab[ptr[1]] && ctype_digit) != 0)
                                 ~^~~~~~~~~~~~~~
--- daemonize.o ---
21 warnings generated.
mv -f .deps/daemonize.Tpo .deps/daemonize.Po
--- spawn.o ---
18 warnings generated.
mv -f .deps/spawn.Tpo .deps/spawn.Po
--- tcpconnect.o ---
34 warnings generated.
mv -f .deps/tcpconnect.Tpo .deps/tcpconnect.Po
--- pcre.o ---
3 warnings generated.
mv -f .deps/pcre.Tpo .deps/pcre.Po
--- libasync.a ---
rm -f libasync.a
ar cru libasync.a arandom.o clock_gettime.o  getopt_long.o maketables.o pcre.o  rwfd.o stktrace.o study.o  suidprotect.o aerr.o aios.o  arena.o armor.o cbuf.o  convertint.o core.o daemonize.o  dns.o dnsparse.o err.o ident.o  ifchg.o ihash.o itree.o  malloc.o msb.o myaddrs.o  myname.o parseopt.o pipe2str.o  refcnt.o rxx.o socket.o  spawn.o str.o str2file.o  straux.o suio++.o suio_vuprintf.o  tcpconnect.o 
ranlib libasync.a
Making all in asmtpd
--- addrparse.o ---
--- asmtpd.o ---
--- auth.o ---
--- avif.o ---
--- enqmsg.o ---
--- mxcheck.o ---
--- netpath.o ---
--- osguess.o ---
--- quota.o ---
--- rbl.o ---
--- rcptcheck.o ---
--- runprog.o ---
--- smtpd.o ---
--- spf.o ---
--- synfp.o ---
--- vrfy.o ---
--- addrparse.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT addrparse.o -MD -MP -MF .deps/addrparse.Tpo -c -o addrparse.o addrparse.C
--- asmtpd.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT asmtpd.o -MD -MP -MF .deps/asmtpd.Tpo -c -o asmtpd.o asmtpd.C
--- auth.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT auth.o -MD -MP -MF .deps/auth.Tpo -c -o auth.o auth.C
--- avif.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT avif.o -MD -MP -MF .deps/avif.Tpo -c -o avif.o avif.C
--- enqmsg.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT enqmsg.o -MD -MP -MF .deps/enqmsg.Tpo -c -o enqmsg.o enqmsg.C
--- mxcheck.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT mxcheck.o -MD -MP -MF .deps/mxcheck.Tpo -c -o mxcheck.o mxcheck.C
--- netpath.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT netpath.o -MD -MP -MF .deps/netpath.Tpo -c -o netpath.o netpath.C
--- osguess.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT osguess.o -MD -MP -MF .deps/osguess.Tpo -c -o osguess.o osguess.C
--- quota.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT quota.o -MD -MP -MF .deps/quota.Tpo -c -o quota.o quota.C
--- rbl.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT rbl.o -MD -MP -MF .deps/rbl.Tpo -c -o rbl.o rbl.C
--- runprog.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT runprog.o -MD -MP -MF .deps/runprog.Tpo -c -o runprog.o runprog.C
--- rcptcheck.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT rcptcheck.o -MD -MP -MF .deps/rcptcheck.Tpo -c -o rcptcheck.o rcptcheck.C
--- smtpd.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT smtpd.o -MD -MP -MF .deps/smtpd.Tpo -c -o smtpd.o smtpd.C
--- synfp.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT synfp.o -MD -MP -MF .deps/synfp.Tpo -c -o synfp.o synfp.C
--- vrfy.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT vrfy.o -MD -MP -MF .deps/vrfy.Tpo -c -o vrfy.o vrfy.C
--- spf.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT spf.o -MD -MP -MF .deps/spf.Tpo -c -o spf.o spf.C
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:29:
In file included from ../libasync/vec.h:30:
../libasync/array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
../libasync/array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:29:
In file included from ../libasync/vec.h:30:
../libasync/array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
../libasync/array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:29:
In file included from ../libasync/vec.h:30:
../libasync/array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
../libasync/array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:29:
In file included from ../libasync/vec.h:30:
../libasync/array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
../libasync/array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:29:
In file included from ../libasync/vec.h:30:
../libasync/array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
../libasync/array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:29:
In file included from ../libasync/vec.h:30:
../libasync/array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
../libasync/array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
../libasync/suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:29:
In file included from ../libasync/vec.h:30:
../libasync/array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
../libasync/array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
../libasync/suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- enqmsg.o ---
../libasync/suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
../libasync/suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
../libasync/suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- mxcheck.o ---
../libasync/suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
../libasync/suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
../libasync/suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
../libasync/str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
../libasync/str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
../libasync/suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:29:
In file included from ../libasync/vec.h:30:
../libasync/array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
../libasync/str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
../libasync/str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- avif.o ---
../libasync/array.h:75:29: note: did you mean class here?
--- enqmsg.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
--- avif.o ---
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- enqmsg.o ---
../libasync/str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
../libasync/suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- osguess.o ---
../libasync/suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
../libasync/suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
../libasync/suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- synfp.o ---
../libasync/suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
../libasync/suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
../libasync/suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- addrparse.o ---
  typedef struct ref<callback<R> > ref;
          ^
--- mxcheck.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
../libasync/suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- addrparse.o ---
  typedef struct ptr<callback<R> > ptr;
          ^
--- mxcheck.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
../libasync/suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
--- addrparse.o ---
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
--- enqmsg.o ---
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
../libasync/suio++.h:250:28: note: did you mean class here?
--- enqmsg.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
--- addrparse.o ---
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
--- enqmsg.o ---
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
../libasync/suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- addrparse.o ---
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:251:27: note: did you mean class here?
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
../libasync/str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
--- osguess.o ---
struct bssstr : public str {
^
--- addrparse.o ---
../libasync/suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
../libasync/str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
--- addrparse.o ---
char *suio_flatten (const struct suio *);
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
../libasync/str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
../libasync/str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
--- enqmsg.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:104:9: note: in instantiation of template class 'callback<void, ptr<hostent>, int, void>' requested here
typedef callback<void, ptr<hostent>, int>::ref cbhent;
        ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:109:9: note: in instantiation of template class 'callback<void, ptr<mxlist>, int, void>' requested here
typedef callback<void, ptr<mxlist>, int>::ref cbmxlist;
        ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:112:9: note: in instantiation of template class 'callback<void, ptr<srvlist>, int, void>' requested here
typedef callback<void, ptr<srvlist>, int>::ref cbsrvlist;
        ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:115:9: note: in instantiation of template class 'callback<void, ptr<txtlist>, int, void>' requested here
typedef callback<void, ptr<txtlist>, int>::ref cbtxtlist;
        ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/dns.h:120:19: note: in instantiation of template class 'ref<callback<void, ptr<srvlist>, int, void> >' requested here
               cbsrvlist cb, bool search = false)
                         ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/dns.h:122:10: note: in instantiation of template class 'ptr<srvlist>' requested here
  return dns_srvbyname (strbuf ("_%s._%s.%s", srv, proto, name), cb, search);
         ^
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
../libasync/suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
../libasync/str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
../libasync/str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- mxcheck.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:104:9: note: in instantiation of template class 'callback<void, ptr<hostent>, int, void>' requested here
typedef callback<void, ptr<hostent>, int>::ref cbhent;
        ^
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- enqmsg.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
--- mxcheck.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- enqmsg.o ---
../libasync/parseopt.h:98:9: note: in instantiation of template class 'callback<void, vec<str, 0>, str, bool *>' requested here
typedef callback<void, vec<str>, str, bool *>::ref confcb;
        ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- addrparse.o ---
  typedef struct ptr<T> ptr;
          ^
--- mxcheck.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
../libasync/str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- mxcheck.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:109:9: note: in instantiation of template class 'callback<void, ptr<mxlist>, int, void>' requested here
typedef callback<void, ptr<mxlist>, int>::ref cbmxlist;
        ^
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:112:9: note: in instantiation of template class 'callback<void, ptr<srvlist>, int, void>' requested here
typedef callback<void, ptr<srvlist>, int>::ref cbsrvlist;
        ^
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:114:3: note: in instantiation of template class 'ref<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
  ^
--- mxcheck.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:115:9: note: in instantiation of template class 'callback<void, ptr<txtlist>, int, void>' requested here
typedef callback<void, ptr<txtlist>, int>::ref cbtxtlist;
        ^
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:114:15: note: in instantiation of template class 'ptr<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
              ^
--- auth.o ---
../libasync/suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:250:28: note: did you mean class here?
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- auth.o ---
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
--- mxcheck.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
../libasync/suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/dns.h:120:19: note: in instantiation of template class 'ref<callback<void, ptr<srvlist>, int, void> >' requested here
--- auth.o ---
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
--- enqmsg.o ---
In file included from enqmsg.C:24:
--- mxcheck.o ---
               cbsrvlist cb, bool search = false)
                         ^
--- enqmsg.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
../libasync/suio++.h:251:27: note: did you mean class here?
--- enqmsg.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:115:3: note: in instantiation of template class 'ref<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
  ^
--- auth.o ---
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
../libasync/suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:115:12: note: in instantiation of template class 'ptr<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
           ^
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/dns.h:122:10: note: in instantiation of template class 'ptr<srvlist>' requested here
  return dns_srvbyname (strbuf ("_%s._%s.%s", srv, proto, name), cb, search);
         ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
../libasync/suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
--- synfp.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
--- smtpd.o ---
  typedef callback<void>::ref cb_t;
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
          ^
--- synfp.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- smtpd.o ---
In file included from smtpd.C:24:
--- synfp.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
In file included from ./asmtpd.h:25:
--- synfp.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
In file included from ../libasync/async.h:28:
--- synfp.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- smtpd.o ---
In file included from ../libasync/amisc.h:29:
--- synfp.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
In file included from ../libasync/err.h:28:
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- synfp.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- osguess.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- synfp.o ---
../libasync/amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
--- osguess.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
--- synfp.o ---
typedef callback<void, bool>::ref cbb;
        ^
--- enqmsg.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- synfp.o ---
In file included from synfp.C:24:
--- enqmsg.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- synfp.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
void chldcb (pid_t, cbi::ptr);
                    ^
--- enqmsg.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- synfp.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- enqmsg.o ---
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, conftab_el *, void, void>' requested here
--- smtpd.o ---
In file included from ../libasync/str.h:29:
--- enqmsg.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
--- smtpd.o ---
In file included from ../libasync/suio++.h:30:
--- enqmsg.o ---
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- smtpd.o ---
../libasync/callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
--- enqmsg.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const conftab_el &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- smtpd.o ---
In file included from smtpd.C:24:
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
--- smtpd.o ---
In file included from ./asmtpd.h:25:
--- osguess.o ---
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
In file included from ../libasync/async.h:28:
--- osguess.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- smtpd.o ---
In file included from ../libasync/amisc.h:29:
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- osguess.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- synfp.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
In file included from ../libasync/err.h:28:
--- osguess.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- synfp.o ---
  typedef struct ref<T> ref;
          ^
--- osguess.o ---
../libasync/async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
--- synfp.o ---
../libasync/amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
--- osguess.o ---
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
--- synfp.o ---
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- osguess.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- smtpd.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
--- smtpd.o ---
../libasync/suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
--- quota.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:29:
In file included from ../libasync/vec.h:30:
../libasync/array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
--- smtpd.o ---
    cb_t cb;
         ^
--- quota.o ---
template<class T, size_t n> class array {
                            ^
../libasync/array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- smtpd.o ---
../libasync/suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/parseopt.h:98:9: note: in instantiation of template class 'callback<void, vec<str, 0>, str, bool *>' requested here
typedef callback<void, vec<str>, str, bool *>::ref confcb;
        ^
--- smtpd.o ---
../libasync/suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- smtpd.o ---
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
--- osguess.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:104:9: note: in instantiation of template class 'callback<void, ptr<hostent>, int, void>' requested here
--- smtpd.o ---
../libasync/suio++.h:46:7: note: previous use is here
--- osguess.o ---
typedef callback<void, ptr<hostent>, int>::ref cbhent;
        ^
--- smtpd.o ---
class suio {
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
      ^
--- osguess.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
../libasync/suio++.h:251:27: note: did you mean class here?
--- osguess.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:109:9: note: in instantiation of template class 'callback<void, ptr<mxlist>, int, void>' requested here
typedef callback<void, ptr<mxlist>, int>::ref cbmxlist;
        ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- osguess.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- osguess.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- mxcheck.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:114:3: note: in instantiation of template class 'ref<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
  ^
--- smtpd.o ---
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
--- osguess.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
                          class
--- osguess.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:112:9: note: in instantiation of template class 'callback<void, ptr<srvlist>, int, void>' requested here
typedef callback<void, ptr<srvlist>, int>::ref cbsrvlist;
        ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- mxcheck.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- synfp.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
  typedef struct ref<T> ref;
          ^
--- osguess.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
../libasync/parseopt.h:114:15: note: in instantiation of template class 'ptr<callback<void, vec<str, 0>, str, bool *> >' requested here
--- synfp.o ---
  typedef struct ptr<T> ptr;
          ^
--- osguess.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- synfp.o ---
../libasync/async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
--- mxcheck.o ---
  confcb::ptr cnfcb;
              ^
--- osguess.o ---
../libasync/dns.h:115:9: note: in instantiation of template class 'callback<void, ptr<txtlist>, int, void>' requested here
--- synfp.o ---
void chldcb (pid_t, cbi::ptr);
                    ^
--- osguess.o ---
typedef callback<void, ptr<txtlist>, int>::ref cbtxtlist;
        ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- addrparse.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
--- smtpd.o ---
../libasync/suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
      ^
--- osguess.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/dns.h:120:19: note: in instantiation of template class 'ref<callback<void, ptr<srvlist>, int, void> >' requested here
               cbsrvlist cb, bool search = false)
                         ^
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:115:3: note: in instantiation of template class 'ref<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
  ^
--- smtpd.o ---
../libasync/suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- mxcheck.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- osguess.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- mxcheck.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- osguess.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
In file included from ../libasync/callback.h:612:
--- osguess.o ---
  typedef struct ref<T> ref;
          ^
--- mxcheck.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
../libasync/dns.h:122:10: note: in instantiation of template class 'ptr<srvlist>' requested here
--- mxcheck.o ---
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:115:12: note: in instantiation of template class 'ptr<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
           ^
--- osguess.o ---
  return dns_srvbyname (strbuf ("_%s._%s.%s", srv, proto, name), cb, search);
         ^
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
../libasync/str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
--- synfp.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- auth.o ---
../libasync/str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
--- synfp.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, conftab_el *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const conftab_el &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- addrparse.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:104:9: note: in instantiation of template class 'callback<void, ptr<hostent>, int, void>' requested here
typedef callback<void, ptr<hostent>, int>::ref cbhent;
        ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:109:9: note: in instantiation of template class 'callback<void, ptr<mxlist>, int, void>' requested here
typedef callback<void, ptr<mxlist>, int>::ref cbmxlist;
        ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:112:9: note: in instantiation of template class 'callback<void, ptr<srvlist>, int, void>' requested here
typedef callback<void, ptr<srvlist>, int>::ref cbsrvlist;
        ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:115:9: note: in instantiation of template class 'callback<void, ptr<txtlist>, int, void>' requested here
typedef callback<void, ptr<txtlist>, int>::ref cbtxtlist;
        ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/dns.h:120:19: note: in instantiation of template class 'ref<callback<void, ptr<srvlist>, int, void> >' requested here
               cbsrvlist cb, bool search = false)
                         ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/dns.h:122:10: note: in instantiation of template class 'ptr<srvlist>' requested here
  return dns_srvbyname (strbuf ("_%s._%s.%s", srv, proto, name), cb, search);
         ^
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/parseopt.h:98:9: note: in instantiation of template class 'callback<void, vec<str, 0>, str, bool *>' requested here
typedef callback<void, vec<str>, str, bool *>::ref confcb;
        ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:114:3: note: in instantiation of template class 'ref<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
  ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:114:15: note: in instantiation of template class 'ptr<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
              ^
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:45:9: note: in instantiation of template class 'ptr<callback<void, str, int, void> >' requested here
  rcb_t rcb;
        ^
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:115:3: note: in instantiation of template class 'ref<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
  ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:115:12: note: in instantiation of template class 'ptr<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
           ^
--- synfp.o ---
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/parseopt.h:98:9: note: in instantiation of template class 'callback<void, vec<str, 0>, str, bool *>' requested here
typedef callback<void, vec<str>, str, bool *>::ref confcb;
        ^
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:114:3: note: in instantiation of template class 'ref<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
  ^
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:58:39: note: in instantiation of template class 'ref<callback<void, str, int, void> >' requested here
    { infn = &aios::rnone; rcb_t::ref cb = rcb; rcb = NULL; (*cb) (s, err); }
                                      ^
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:114:15: note: in instantiation of template class 'ptr<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
              ^
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- auth.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
--- synfp.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
--- auth.o ---
typedef callback<void, str>::ref cbs;
        ^
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- synfp.o ---
../libasync/parseopt.h:115:3: note: in instantiation of template class 'ref<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
  ^
--- auth.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- auth.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
--- osguess.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- osguess.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, conftab_el *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- osguess.o ---
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
--- synfp.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- synfp.o ---
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:115:12: note: in instantiation of template class 'ptr<callback<void, str, void, void> >' requested here
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- synfp.o ---
  cbs::ptr scb;
           ^
--- addrparse.o ---
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/parseopt.h:98:9: note: in instantiation of template class 'callback<void, vec<str, 0>, str, bool *>' requested here
typedef callback<void, vec<str>, str, bool *>::ref confcb;
        ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- osguess.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const conftab_el &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- osguess.o ---
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
--- enqmsg.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
--- osguess.o ---
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
--- enqmsg.o ---
../libasync/aios.h:67:29: note: in instantiation of template class 'ptr<callback<void, int, void, void> >' requested here
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
  virtual void mkwcb (wcb_t cb) { if (fd >= 0) (*cb) (err); }
                            ^
--- osguess.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
--- addrparse.o ---
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
--- auth.o ---
../libasync/amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
--- addrparse.o ---
../libasync/parseopt.h:114:3: note: in instantiation of template class 'ref<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
  ^
--- auth.o ---
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:114:15: note: in instantiation of template class 'ptr<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
              ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:115:3: note: in instantiation of template class 'ref<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
  ^
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:116:20: note: in instantiation of template class 'ref<aios>' requested here
  static ref<aios> alloc (int fd, size_t rbsz = defrbufsize)
                   ^
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:115:12: note: in instantiation of template class 'ptr<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
           ^
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, conftab_el *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- synfp.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const conftab_el &, void, void>' requested here
--- addrparse.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
--- synfp.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
--- addrparse.o ---
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, conftab_el *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
--- synfp.o ---
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
--- addrparse.o ---
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- synfp.o ---
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- addrparse.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- synfp.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- addrparse.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const conftab_el &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:161:44: note: in instantiation of template class 'ptr<aios>' requested here
--- avif.o ---
../libasync/suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
../libasync/str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
--- avif.o ---
  typedef callback<void>::ref cb_t;
          ^
--- enqmsg.o ---
  aiosout (const aios_t::ptr &a) : strbuf (a->outb), s(a) { s->outstart (); }
                                           ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- smtpd.o ---
struct bssstr : public str {
^
--- avif.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
--- smtpd.o ---
../libasync/str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- avif.o ---
../libasync/suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:73:16: note: in instantiation of template class 'ptr<hostent>' requested here
  ptr<hostent> h;
               ^
--- avif.o ---
../libasync/suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
--- auth.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:104:9: note: in instantiation of template class 'callback<void, ptr<hostent>, int, void>' requested here
--- avif.o ---
../libasync/suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
typedef callback<void, ptr<hostent>, int>::ref cbhent;
        ^
In file included from auth.C:24:
--- avif.o ---
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
--- auth.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
--- auth.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- mxcheck.o ---
In file included from mxcheck.C:25:
--- avif.o ---
../libasync/suio++.h:251:27: note: did you mean class here?
--- mxcheck.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
--- mxcheck.o ---
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:45:9: note: in instantiation of template class 'ptr<callback<void, str, int, void> >' requested here
--- auth.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
  rcb_t rcb;
        ^
--- auth.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:109:9: note: in instantiation of template class 'callback<void, ptr<mxlist>, int, void>' requested here
--- avif.o ---
../libasync/suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
typedef callback<void, ptr<mxlist>, int>::ref cbmxlist;
        ^
--- avif.o ---
char *suio_flatten (const struct suio *);
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- avif.o ---
                          ^
--- auth.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- avif.o ---
../libasync/suio++.h:46:7: note: previous use is here
--- auth.o ---
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
class suio {
      ^
--- auth.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- avif.o ---
../libasync/suio++.h:268:27: note: did you mean class here?
--- enqmsg.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- avif.o ---
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- enqmsg.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
--- auth.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
./asmtpd.h:74:19: note: in instantiation of template class 'ptr<rbl_status>' requested here
--- auth.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- enqmsg.o ---
  ptr<rbl_status> rs;
                  ^
--- auth.o ---
../libasync/dns.h:112:9: note: in instantiation of template class 'callback<void, ptr<srvlist>, int, void>' requested here
typedef callback<void, ptr<srvlist>, int>::ref cbsrvlist;
        ^
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:115:9: note: in instantiation of template class 'callback<void, ptr<txtlist>, int, void>' requested here
typedef callback<void, ptr<txtlist>, int>::ref cbtxtlist;
        ^
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/dns.h:120:19: note: in instantiation of template class 'ref<callback<void, ptr<srvlist>, int, void> >' requested here
               cbsrvlist cb, bool search = false)
                         ^
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/dns.h:122:10: note: in instantiation of template class 'ptr<srvlist>' requested here
  return dns_srvbyname (strbuf ("_%s._%s.%s", srv, proto, name), cb, search);
         ^
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:58:39: note: in instantiation of template class 'ref<callback<void, str, int, void> >' requested here
    { infn = &aios::rnone; rcb_t::ref cb = rcb; rcb = NULL; (*cb) (s, err); }
                                      ^
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:45:9: note: in instantiation of template class 'ptr<callback<void, str, int, void> >' requested here
  rcb_t rcb;
        ^
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:67:29: note: in instantiation of template class 'ptr<callback<void, int, void, void> >' requested here
  virtual void mkwcb (wcb_t cb) { if (fd >= 0) (*cb) (err); }
                            ^
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<sockaddr_in, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
  bhash<sockaddr_in> bindaddrh;
                     ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<sockaddr_in, void> &, void, void>' requested here
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
--- enqmsg.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
--- addrparse.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- enqmsg.o ---
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- addrparse.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
--- enqmsg.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
--- addrparse.o ---
../libasync/aios.h:58:39: note: in instantiation of template class 'ref<callback<void, str, int, void> >' requested here
--- enqmsg.o ---
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- addrparse.o ---
    { infn = &aios::rnone; rcb_t::ref cb = rcb; rcb = NULL; (*cb) (s, err); }
                                      ^
--- enqmsg.o ---
  bhash<sockaddr_in> bindaddrh;
                     ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- enqmsg.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- mxcheck.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:116:20: note: in instantiation of template class 'ref<aios>' requested here
  static ref<aios> alloc (int fd, size_t rbsz = defrbufsize)
                   ^
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:67:29: note: in instantiation of template class 'ptr<callback<void, int, void, void> >' requested here
  virtual void mkwcb (wcb_t cb) { if (fd >= 0) (*cb) (err); }
                            ^
--- enqmsg.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, void> *, void, void>' requested here
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
--- enqmsg.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- addrparse.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
--- addrparse.o ---
  typedef struct ptr<T> ptr;
          ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
--- addrparse.o ---
../libasync/aios.h:116:20: note: in instantiation of template class 'ref<aios>' requested here
--- asmtpd.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- enqmsg.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
--- asmtpd.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:29:
In file included from ../libasync/vec.h:30:
--- enqmsg.o ---
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
--- addrparse.o ---
  static ref<aios> alloc (int fd, size_t rbsz = defrbufsize)
                   ^
--- asmtpd.o ---
../libasync/array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
--- enqmsg.o ---
  bhash<str> nocheck;
             ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
template<class T, size_t n> class array {
                            ^
--- enqmsg.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:29:
In file included from ../libasync/vec.h:30:
../libasync/array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
--- enqmsg.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, void> &, void, void>' requested here
--- osguess.o ---
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:45:9: note: in instantiation of template class 'ptr<callback<void, str, int, void> >' requested here
--- enqmsg.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
--- osguess.o ---
  rcb_t rcb;
        ^
--- rcptcheck.o ---
template<class T, size_t n> class array {
                            ^
--- enqmsg.o ---
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
  bhash<str> nocheck;
             ^
--- asmtpd.o ---
../libasync/array.h:75:29: note: did you mean class here?
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- auth.o ---
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
--- asmtpd.o ---
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- enqmsg.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- auth.o ---
../libasync/parseopt.h:98:9: note: in instantiation of template class 'callback<void, vec<str, 0>, str, bool *>' requested here
--- enqmsg.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
typedef callback<void, vec<str>, str, bool *>::ref confcb;
        ^
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
--- enqmsg.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- auth.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- rcptcheck.o ---
../libasync/array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:114:3: note: in instantiation of template class 'ref<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
  ^
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:114:15: note: in instantiation of template class 'ptr<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
              ^
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:115:3: note: in instantiation of template class 'ref<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
  ^
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:115:12: note: in instantiation of template class 'ptr<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
           ^
--- enqmsg.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, long> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
  qhash<str, time_t> warn_filter;
                     ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
--- enqmsg.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- addrparse.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- osguess.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- mxcheck.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- osguess.o ---
In file included from ../libasync/callback.h:612:
--- addrparse.o ---
  typedef struct ref<T> ref;
          ^
--- enqmsg.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- mxcheck.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
../libasync/aios.h:161:44: note: in instantiation of template class 'ptr<aios>' requested here
--- osguess.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
  typedef struct ref<T> ref;
          ^
--- osguess.o ---
  typedef struct ptr<T> ptr;
          ^
--- addrparse.o ---
  aiosout (const aios_t::ptr &a) : strbuf (a->outb), s(a) { s->outstart (); }
                                           ^
--- osguess.o ---
../libasync/aios.h:58:39: note: in instantiation of template class 'ref<callback<void, str, int, void> >' requested here
--- mxcheck.o ---
../libasync/aios.h:161:44: note: in instantiation of template class 'ptr<aios>' requested here
--- osguess.o ---
    { infn = &aios::rnone; rcb_t::ref cb = rcb; rcb = NULL; (*cb) (s, err); }
                                      ^
--- mxcheck.o ---
  aiosout (const aios_t::ptr &a) : strbuf (a->outb), s(a) { s->outstart (); }
                                           ^
--- enqmsg.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, long> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
  qhash<str, time_t> warn_filter;
                     ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, conftab_el *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const conftab_el &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- osguess.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- auth.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- osguess.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- auth.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- osguess.o ---
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:67:29: note: in instantiation of template class 'ptr<callback<void, int, void, void> >' requested here
  virtual void mkwcb (wcb_t cb) { if (fd >= 0) (*cb) (err); }
                            ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:116:20: note: in instantiation of template class 'ref<aios>' requested here
  static ref<aios> alloc (int fd, size_t rbsz = defrbufsize)
                   ^
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:73:16: note: in instantiation of template class 'ptr<hostent>' requested here
  ptr<hostent> h;
               ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
--- smtpd.o ---
../libasync/amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
--- addrparse.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:74:19: note: in instantiation of template class 'ptr<rbl_status>' requested here
--- smtpd.o ---
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- addrparse.o ---
  ptr<rbl_status> rs;
                  ^
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- mxcheck.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
  typedef struct ref<T> ref;
          ^
./asmtpd.h:73:16: note: in instantiation of template class 'ptr<hostent>' requested here
--- enqmsg.o ---
  typedef struct ref<T> ref;
          ^
--- mxcheck.o ---
  ptr<hostent> h;
               ^
--- enqmsg.o ---
./asmtpd.h:373:31: note: in instantiation of template class 'ptr<const rbl_status>' requested here
  const ptr<const rbl_status> rblcon;
                              ^
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<sockaddr_in, void> *, void, void>' requested here
--- osguess.o ---
In file included from osguess.C:24:
--- addrparse.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- osguess.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- addrparse.o ---
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- osguess.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- addrparse.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- osguess.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
  bhash<sockaddr_in> bindaddrh;
                     ^
--- osguess.o ---
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:161:44: note: in instantiation of template class 'ptr<aios>' requested here
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- osguess.o ---
  aiosout (const aios_t::ptr &a) : strbuf (a->outb), s(a) { s->outstart (); }
                                           ^
--- addrparse.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<sockaddr_in, void> &, void, void>' requested here
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- enqmsg.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- addrparse.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
--- enqmsg.o ---
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
  typedef struct ref<T> ref;
          ^
--- addrparse.o ---
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- mxcheck.o ---
./asmtpd.h:74:19: note: in instantiation of template class 'ptr<rbl_status>' requested here
--- addrparse.o ---
  bhash<sockaddr_in> bindaddrh;
                     ^
In file included from addrparse.C:32:
--- enqmsg.o ---
  typedef struct ref<T> ref;
          ^
--- addrparse.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
  ptr<rbl_status> rs;
                  ^
--- enqmsg.o ---
./asmtpd.h:386:15: note: in instantiation of template class 'ptr<mxlist>' requested here
--- addrparse.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- enqmsg.o ---
  ptr<mxlist> mxl;
              ^
--- synfp.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, synfp_state<synfp_collect::tcbs, true>::synfp_entry *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink>' requested here
  : public ihash_core<V, field>
           ^
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::sin, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
./rawnet.h:136:11: note: in instantiation of template class 'synfp_state<synfp_collect::tcbs, true>' requested here
  typedef synfp_state<tcbs, true>::synfp_entry cbentry_t;
          ^
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const synfp_state<synfp_collect::tcbs, true>::synfp_entry &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink>' requested here
--- addrparse.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- synfp.o ---
  : public ihash_core<V, field>
           ^
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::sin, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
--- addrparse.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, void> *, void, void>' requested here
--- synfp.o ---
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
--- addrparse.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
--- synfp.o ---
./rawnet.h:136:11: note: in instantiation of template class 'synfp_state<synfp_collect::tcbs, true>' requested here
--- addrparse.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
--- synfp.o ---
  typedef synfp_state<tcbs, true>::synfp_entry cbentry_t;
          ^
--- addrparse.o ---
  bhash<str> nocheck;
             ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
--- addrparse.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- synfp.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
--- synfp.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- avif.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
../libasync/str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
--- synfp.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- avif.o ---
struct bssstr : public str {
^
--- addrparse.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, void> &, void, void>' requested here
--- avif.o ---
../libasync/str.h:91:10: note: did you mean struct here?
--- addrparse.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
--- avif.o ---
  friend class bssstr;
         ^~~~~
         struct
--- addrparse.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
  bhash<str> nocheck;
             ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:454:28: note: in instantiation of template class 'ptr<const hostent>' requested here
  const ptr<const hostent> ptr_cache;
                           ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:29:
In file included from ../libasync/vec.h:30:
../libasync/array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
--- synfp.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, synfp_state<str, false>::synfp_entry *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::hlink>' requested here
  : public ihash_core<V, field>
           ^
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::sin, &synfp_state<str, false>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
./rawnet.h:137:11: note: in instantiation of template class 'synfp_state<str, false>' requested here
  typedef synfp_state<str, false>::synfp_entry fpentry_t;
          ^
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- runprog.o ---
../libasync/array.h:75:29: note: did you mean class here?
--- synfp.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- runprog.o ---
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- addrparse.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, long> *, void, void>' requested here
--- synfp.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
--- synfp.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const synfp_state<str, false>::synfp_entry &, void, void>' requested here
--- addrparse.o ---
  qhash<str, time_t> warn_filter;
                     ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- synfp.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::hlink>' requested here
--- addrparse.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- synfp.o ---
  : public ihash_core<V, field>
           ^
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::sin, &synfp_state<str, false>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
./rawnet.h:137:11: note: in instantiation of template class 'synfp_state<str, false>' requested here
--- addrparse.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
--- synfp.o ---
  typedef synfp_state<str, false>::synfp_entry fpentry_t;
          ^
--- addrparse.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, long> &, void, void>' requested here
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- addrparse.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
--- synfp.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
--- synfp.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- addrparse.o ---
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
  qhash<str, time_t> warn_filter;
                     ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:473:21: note: in instantiation of template class 'ptr<const mxlist>' requested here
  ptr<const mxlist> get_mxl () const { return mxl; }
                    ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
--- synfp.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./rawnet.h:176:11: note: in instantiation of template class 'callback<void, icmpsock::icmp_info *, void, void>' requested here
  typedef callback<void, icmp_info *>::ref cb_t;
          ^
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- enqmsg.o ---
In file included from ../libasync/suio++.h:30:
--- synfp.o ---
  typedef struct ptr<T> ptr;
          ^
./rawnet.h:180:16: note: in instantiation of template class 'ref<callback<void, icmpsock::icmp_info *, void, void> >' requested here
--- mxcheck.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- enqmsg.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- synfp.o ---
    const cb_t cb;
               ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- mxcheck.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- rbl.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:29:
--- mxcheck.o ---
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<sockaddr_in, void> *, void, void>' requested here
--- rbl.o ---
In file included from ../libasync/vec.h:30:
../libasync/array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
--- enqmsg.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:491:9: note: in instantiation of template class 'callback<void, ref<progout>, void, void>' requested here
--- mxcheck.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- mxcheck.o ---
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- enqmsg.o ---
typedef callback<void, ref<progout> >::ref runprogcb_t;
        ^
--- rbl.o ---
template<class T, size_t n> class array {
                            ^
--- mxcheck.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
--- smtpd.o ---
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- mxcheck.o ---
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- enqmsg.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
  bhash<sockaddr_in> bindaddrh;
                     ^
--- enqmsg.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- smtpd.o ---
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
--- mxcheck.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- smtpd.o ---
../libasync/async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
--- mxcheck.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- smtpd.o ---
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- smtpd.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- synfp.o ---
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
../libasync/array.h:75:29: note: did you mean class here?
--- synfp.o ---
  typedef struct ptr<T> ptr;
          ^
./rawnet.h:185:25: note: in instantiation of template class 'ref<icmpsock>' requested here
--- mxcheck.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- rbl.o ---
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- synfp.o ---
    const ref<icmpsock> is;
                        ^
--- mxcheck.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<sockaddr_in, void> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
  bhash<sockaddr_in> bindaddrh;
                     ^
--- smtpd.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- smtpd.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- mxcheck.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- smtpd.o ---
../libasync/async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
--- mxcheck.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- smtpd.o ---
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, icmpsock::icmpclnt *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<icmpsock::icmpclnt, &icmpsock::icmpclnt::hlink>' requested here
  : public ihash_core<V, field>
           ^
./rawnet.h:208:30: note: in instantiation of template class 'ihash<const in_addr, icmpsock::icmpclnt, &icmpsock::icmpclnt::addr, &icmpsock::icmpclnt::hlink, hashfn<const in_addr>, equals<const in_addr> >' requested here
        &icmpsock::icmpclnt::hlink> cbtab;
                                    ^
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const icmpsock::icmpclnt &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<icmpsock::icmpclnt, &icmpsock::icmpclnt::hlink>' requested here
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- synfp.o ---
  : public ihash_core<V, field>
           ^
--- avif.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- synfp.o ---
./rawnet.h:208:30: note: in instantiation of template class 'ihash<const in_addr, icmpsock::icmpclnt, &icmpsock::icmpclnt::addr, &icmpsock::icmpclnt::hlink, hashfn<const in_addr>, equals<const in_addr> >' requested here
--- avif.o ---
  typedef struct ptr<T> ptr;
          ^
--- synfp.o ---
        &icmpsock::icmpclnt::hlink> cbtab;
                                    ^
--- avif.o ---
../libasync/str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- synfp.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- addrparse.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:373:31: note: in instantiation of template class 'ptr<const rbl_status>' requested here
  const ptr<const rbl_status> rblcon;
                              ^
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:73:16: note: in instantiation of template class 'ptr<hostent>' requested here
  ptr<hostent> h;
               ^
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
--- mxcheck.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
./asmtpd.h:386:15: note: in instantiation of template class 'ptr<mxlist>' requested here
  ptr<mxlist> mxl;
              ^
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
--- mxcheck.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- auth.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- mxcheck.o ---
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, void> *, void, void>' requested here
--- auth.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:45:9: note: in instantiation of template class 'ptr<callback<void, str, int, void> >' requested here
  rcb_t rcb;
        ^
--- mxcheck.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
  bhash<str> nocheck;
             ^
--- enqmsg.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- enqmsg.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- mxcheck.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
./asmtpd.h:524:11: note: in instantiation of template class 'callback<void, avif::disp_t, str, void>' requested here
--- mxcheck.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- enqmsg.o ---
  typedef callback<void, disp_t, str>::ref cb_t;
          ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- mxcheck.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- mxcheck.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, void> &, void, void>' requested here
--- osguess.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
--- osguess.o ---
  typedef struct ref<T> ref;
          ^
--- mxcheck.o ---
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
--- osguess.o ---
./asmtpd.h:74:19: note: in instantiation of template class 'ptr<rbl_status>' requested here
  ptr<rbl_status> rs;
                  ^
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- mxcheck.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
--- synfp.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- mxcheck.o ---
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
--- synfp.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
  bhash<str> nocheck;
             ^
--- synfp.o ---
  typedef struct ptr<T> ptr;
          ^
./rawnet.h:232:17: note: in instantiation of template class 'ref<icmpsock::icmpclnt>' requested here
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- synfp.o ---
  ref<icmpclnt> setcb (in_addr a, cb_t cb)
                ^
--- mxcheck.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
--- mxcheck.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- addrparse.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:454:28: note: in instantiation of template class 'ptr<const hostent>' requested here
  const ptr<const hostent> ptr_cache;
                           ^
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:533:14: note: in instantiation of template class 'ref<callback<void, avif::disp_t, str, void> >' requested here
  const cb_t cb;
             ^
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:58:39: note: in instantiation of template class 'ref<callback<void, str, int, void> >' requested here
    { infn = &aios::rnone; rcb_t::ref cb = rcb; rcb = NULL; (*cb) (s, err); }
                                      ^
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
--- enqmsg.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:473:21: note: in instantiation of template class 'ptr<const mxlist>' requested here
--- enqmsg.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/list.h:129:27: note: in instantiation of template class 'callback<void, avif::result *, void, void>' requested here
--- addrparse.o ---
  ptr<const mxlist> get_mxl () const { return mxl; }
                    ^
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- enqmsg.o ---
  void traverse (typename callback<void, T *>::ref cb) const {
                          ^
--- synfp.o ---
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
./asmtpd.h:539:32: note: in instantiation of template class 'tailq<avif::result, &avif::result::link>' requested here
  tailq<result, &result::link> reslist;
                               ^
--- synfp.o ---
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./rawnet.h:240:11: note: in instantiation of template class 'callback<void, int, in_addr *, int>' requested here
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- synfp.o ---
  typedef callback<void, int, in_addr *, int>::ref cb_t;
          ^
--- enqmsg.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- mxcheck.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, long> *, void, void>' requested here
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- addrparse.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:491:9: note: in instantiation of template class 'callback<void, ref<progout>, void, void>' requested here
--- mxcheck.o ---
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
--- addrparse.o ---
typedef callback<void, ref<progout> >::ref runprogcb_t;
        ^
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- auth.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
--- addrparse.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
  typedef struct ref<T> ref;
          ^
--- mxcheck.o ---
  qhash<str, time_t> warn_filter;
                     ^
--- addrparse.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- auth.o ---
../libasync/aios.h:67:29: note: in instantiation of template class 'ptr<callback<void, int, void, void> >' requested here
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
--- auth.o ---
  virtual void mkwcb (wcb_t cb) { if (fd >= 0) (*cb) (err); }
                            ^
--- mxcheck.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, long> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
  qhash<str, time_t> warn_filter;
                     ^
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- auth.o ---
  typedef struct ptr<T> ptr;
          ^
--- synfp.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- auth.o ---
../libasync/aios.h:116:20: note: in instantiation of template class 'ref<aios>' requested here
--- synfp.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
--- auth.o ---
  static ref<aios> alloc (int fd, size_t rbsz = defrbufsize)
                   ^
--- synfp.o ---
../libasync/vec.h:43:27: note: in instantiation of template class 'ref<callback<void, int, in_addr *, int> >' requested here
    char defbuf_space[N * sizeof (elm_t)];
                          ^
../libasync/vec.h:41:3: note: in instantiation of member class 'vec_base<ref<callback<void, int, in_addr *, int> >, 1>::(anonymous)' requested here
  union {
  ^
../libasync/vec.h:74:52: note: in instantiation of template class 'vec_base<ref<callback<void, int, in_addr *, int> >, 1>' requested here
--- enqmsg.o ---
In file included from enqmsg.C:24:
./asmtpd.h:571:1: warning: 'enqmsg' defined as a class here but previously declared as a struct [-Wmismatched-tags]
class enqmsg {
^
--- synfp.o ---
template<class T, size_t N = 0> class vec : public vec_base<T, N> {
                                                   ^
./rawnet.h:261:16: note: in instantiation of template class 'vec<ref<callback<void, int, in_addr *, int> >, 1>' requested here
  vec<cb_t, 1> cbvec;
               ^
--- enqmsg.o ---
./asmtpd.h:354:1: note: did you mean class here?
struct enqmsg;
^~~~~~
class
--- addrparse.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:524:11: note: in instantiation of template class 'callback<void, avif::disp_t, str, void>' requested here
  typedef callback<void, disp_t, str>::ref cb_t;
          ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:533:14: note: in instantiation of template class 'ref<callback<void, avif::disp_t, str, void> >' requested here
  const cb_t cb;
             ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- addrparse.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- osguess.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- addrparse.o ---
../libasync/list.h:129:27: note: in instantiation of template class 'callback<void, avif::result *, void, void>' requested here
--- osguess.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
  void traverse (typename callback<void, T *>::ref cb) const {
                          ^
--- osguess.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- addrparse.o ---
./asmtpd.h:539:32: note: in instantiation of template class 'tailq<avif::result, &avif::result::link>' requested here
--- osguess.o ---
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<sockaddr_in, void> *, void, void>' requested here
--- addrparse.o ---
  tailq<result, &result::link> reslist;
                               ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- osguess.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- addrparse.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- addrparse.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- osguess.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
  bhash<sockaddr_in> bindaddrh;
                     ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<sockaddr_in, void> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
  bhash<sockaddr_in> bindaddrh;
                     ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:617:9: note: in instantiation of template class 'callback<void, str, ptr<mxlist>, void>' requested here
typedef callback<void, str, ptr<mxlist> >::ref vrfycb_t;
        ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
In file included from addrparse.C:32:
./asmtpd.h:571:1: warning: 'enqmsg' defined as a class here but previously declared as a struct [-Wmismatched-tags]
class enqmsg {
^
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- auth.o ---
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:161:44: note: in instantiation of template class 'ptr<aios>' requested here
  aiosout (const aios_t::ptr &a) : strbuf (a->outb), s(a) { s->outstart (); }
                                           ^
--- addrparse.o ---
./asmtpd.h:354:1: note: did you mean class here?
struct enqmsg;
^~~~~~
class
--- enqmsg.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, str> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, str> &, void, void>' requested here
--- osguess.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
--- osguess.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- enqmsg.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
--- osguess.o ---
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, void> *, void, void>' requested here
--- enqmsg.o ---
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
--- osguess.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
--- enqmsg.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- osguess.o ---
  bhash<str> nocheck;
             ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- osguess.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- addrparse.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:617:9: note: in instantiation of template class 'callback<void, str, ptr<mxlist>, void>' requested here
typedef callback<void, str, ptr<mxlist> >::ref vrfycb_t;
        ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- smtpd.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- smtpd.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- osguess.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- smtpd.o ---
../libasync/dns.h:104:9: note: in instantiation of template class 'callback<void, ptr<hostent>, int, void>' requested here
--- osguess.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, void> &, void, void>' requested here
--- smtpd.o ---
typedef callback<void, ptr<hostent>, int>::ref cbhent;
        ^
--- osguess.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
--- smtpd.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- osguess.o ---
  bhash<str> nocheck;
             ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- addrparse.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, str> *, void, void>' requested here
--- smtpd.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
--- smtpd.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- addrparse.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
--- smtpd.o ---
../libasync/dns.h:109:9: note: in instantiation of template class 'callback<void, ptr<mxlist>, int, void>' requested here
--- addrparse.o ---
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
--- smtpd.o ---
typedef callback<void, ptr<mxlist>, int>::ref cbmxlist;
        ^
--- addrparse.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- addrparse.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- smtpd.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- addrparse.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, str> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- smtpd.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- smtpd.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:112:9: note: in instantiation of template class 'callback<void, ptr<srvlist>, int, void>' requested here
typedef callback<void, ptr<srvlist>, int>::ref cbsrvlist;
        ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:115:9: note: in instantiation of template class 'callback<void, ptr<txtlist>, int, void>' requested here
typedef callback<void, ptr<txtlist>, int>::ref cbtxtlist;
        ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- osguess.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
--- osguess.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, long> *, void, void>' requested here
--- mxcheck.o ---
./asmtpd.h:373:31: note: in instantiation of template class 'ptr<const rbl_status>' requested here
  const ptr<const rbl_status> rblcon;
                              ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- osguess.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- smtpd.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
--- smtpd.o ---
  typedef struct ptr<T> ptr;
          ^
--- osguess.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
--- smtpd.o ---
../libasync/dns.h:120:19: note: in instantiation of template class 'ref<callback<void, ptr<srvlist>, int, void> >' requested here
--- osguess.o ---
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
--- smtpd.o ---
               cbsrvlist cb, bool search = false)
                         ^
--- osguess.o ---
  qhash<str, time_t> warn_filter;
                     ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- enqmsg.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
--- osguess.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
./asmtpd.h:694:11: note: in instantiation of template class 'callback<void, spf_t *, void, void>' requested here
--- osguess.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, long> &, void, void>' requested here
--- enqmsg.o ---
  typedef callback<void, spf_t *>::ref cb_t;
          ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
--- addrparse.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- osguess.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
--- addrparse.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- enqmsg.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- osguess.o ---
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
--- addrparse.o ---
./asmtpd.h:694:11: note: in instantiation of template class 'callback<void, spf_t *, void, void>' requested here
--- mxcheck.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- addrparse.o ---
  typedef callback<void, spf_t *>::ref cb_t;
          ^
--- mxcheck.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- addrparse.o ---
In file included from addrparse.C:32:
--- osguess.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
--- addrparse.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- osguess.o ---
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- addrparse.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
  typedef struct ref<T> ref;
          ^
./asmtpd.h:386:15: note: in instantiation of template class 'ptr<mxlist>' requested here
  ptr<mxlist> mxl;
              ^
--- smtpd.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- addrparse.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- osguess.o ---
  qhash<str, time_t> warn_filter;
                     ^
--- smtpd.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- smtpd.o ---
  typedef struct ref<T> ref;
          ^
--- osguess.o ---
In file included from ../libasync/suio++.h:30:
--- smtpd.o ---
../libasync/dns.h:122:10: note: in instantiation of template class 'ptr<srvlist>' requested here
--- osguess.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- osguess.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- auth.o ---
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
  return dns_srvbyname (strbuf ("_%s._%s.%s", srv, proto, name), cb, search);
         ^
--- auth.o ---
  typedef struct ref<T> ref;
          ^
./asmtpd.h:73:16: note: in instantiation of template class 'ptr<hostent>' requested here
  ptr<hostent> h;
               ^
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:696:3: note: in instantiation of template class 'ref<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
  ^
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:696:3: note: in instantiation of template class 'ref<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
  ^
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- addrparse.o ---
  typedef struct ref<T> ref;
          ^
--- auth.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- addrparse.o ---
./asmtpd.h:696:13: note: in instantiation of template class 'ptr<callback<void, spf_t *, void, void> >' requested here
--- auth.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
  cb_t::ptr cb;
            ^
--- auth.o ---
  typedef struct ref<T> ref;
          ^
./asmtpd.h:74:19: note: in instantiation of template class 'ptr<rbl_status>' requested here
  ptr<rbl_status> rs;
                  ^
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:696:13: note: in instantiation of template class 'ptr<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
            ^
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:713:20: note: in instantiation of template class 'ref<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
  ref<bhash<str> > loopcheck;
                   ^
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:454:28: note: in instantiation of template class 'ptr<const hostent>' requested here
  const ptr<const hostent> ptr_cache;
                           ^
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:713:20: note: in instantiation of template class 'ref<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
  ref<bhash<str> > loopcheck;
                   ^
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:762:20: note: in instantiation of template class 'ptr<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
         ptr<bhash<str> > loopcheck = NULL, int recdepth = 0);
                          ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- avif.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- addrparse.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./asmtpd.h:770:9: note: in instantiation of template class 'callback<void, spf_result, str, str>' requested here
typedef callback<void, spf_result, str, str>::ref spfckcb_t;
        ^
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- avif.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- avif.o ---
In file included from avif.C:25:
--- mxcheck.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- avif.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- mxcheck.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- avif.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- mxcheck.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
  typedef struct ref<T> ref;
          ^
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
--- mxcheck.o ---
./asmtpd.h:473:21: note: in instantiation of template class 'ptr<const mxlist>' requested here
--- auth.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- avif.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- auth.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
--- mxcheck.o ---
  ptr<const mxlist> get_mxl () const { return mxl; }
                    ^
--- auth.o ---
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<sockaddr_in, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
  bhash<sockaddr_in> bindaddrh;
                     ^
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- auth.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<sockaddr_in, void> &, void, void>' requested here
--- enqmsg.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
--- enqmsg.o ---
  typedef struct ref<T> ref;
          ^
--- auth.o ---
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- enqmsg.o ---
./asmtpd.h:762:20: note: in instantiation of template class 'ptr<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
--- auth.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- synfp.o ---
In file included from synfp.C:24:
--- auth.o ---
  bhash<sockaddr_in> bindaddrh;
                     ^
--- synfp.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
--- enqmsg.o ---
         ptr<bhash<str> > loopcheck = NULL, int recdepth = 0);
                          ^
--- synfp.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- auth.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- synfp.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- synfp.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
synfp.C:85:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
  bhash<str> seen;
             ^
--- netpath.o ---
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- netpath.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- synfp.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- netpath.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:29:
In file included from ../libasync/vec.h:30:
--- synfp.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- netpath.o ---
../libasync/array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
--- synfp.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- netpath.o ---
template<class T, size_t n> class array {
                            ^
--- synfp.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, void> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
synfp.C:85:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
  bhash<str> seen;
             ^
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- synfp.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- mxcheck.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- netpath.o ---
../libasync/array.h:75:29: note: did you mean class here?
--- mxcheck.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:491:9: note: in instantiation of template class 'callback<void, ref<progout>, void, void>' requested here
--- netpath.o ---
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- mxcheck.o ---
typedef callback<void, ref<progout> >::ref runprogcb_t;
        ^
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
--- mxcheck.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- mxcheck.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- avif.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
  typedef struct ref<T> ref;
          ^
../libasync/amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
--- auth.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
--- avif.o ---
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- auth.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- auth.o ---
  bhash<str> nocheck;
             ^
--- enqmsg.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
--- auth.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- enqmsg.o ---
./asmtpd.h:770:9: note: in instantiation of template class 'callback<void, spf_result, str, str>' requested here
typedef callback<void, spf_result, str, str>::ref spfckcb_t;
        ^
--- auth.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- auth.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- enqmsg.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, void> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
--- enqmsg.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- auth.o ---
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
  bhash<str> nocheck;
             ^
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, long> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
  qhash<str, time_t> warn_filter;
                     ^
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- auth.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- osguess.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- auth.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, long> &, void, void>' requested here
--- osguess.o ---
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
--- auth.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
--- osguess.o ---
./asmtpd.h:373:31: note: in instantiation of template class 'ptr<const rbl_status>' requested here
--- auth.o ---
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
--- osguess.o ---
  const ptr<const rbl_status> rblcon;
                              ^
--- auth.o ---
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
  qhash<str, time_t> warn_filter;
                     ^
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- mxcheck.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:524:11: note: in instantiation of template class 'callback<void, avif::disp_t, str, void>' requested here
  typedef callback<void, disp_t, str>::ref cb_t;
          ^
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:386:15: note: in instantiation of template class 'ptr<mxlist>' requested here
  ptr<mxlist> mxl;
              ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
../libasync/suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- quota.o ---
  typedef struct ptr<callback<R> > ptr;
          ^
--- mxcheck.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:533:14: note: in instantiation of template class 'ref<callback<void, avif::disp_t, str, void> >' requested here
  const cb_t cb;
             ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/list.h:129:27: note: in instantiation of template class 'callback<void, avif::result *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) const {
                          ^
./asmtpd.h:539:32: note: in instantiation of template class 'tailq<avif::result, &avif::result::link>' requested here
  tailq<result, &result::link> reslist;
                               ^
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:454:28: note: in instantiation of template class 'ptr<const hostent>' requested here
  const ptr<const hostent> ptr_cache;
                           ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/parseopt.h:98:9: note: in instantiation of template class 'callback<void, vec<str, 0>, str, bool *>' requested here
typedef callback<void, vec<str>, str, bool *>::ref confcb;
        ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- mxcheck.o ---
In file included from mxcheck.C:25:
./asmtpd.h:571:1: warning: 'enqmsg' defined as a class here but previously declared as a struct [-Wmismatched-tags]
class enqmsg {
^
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:473:21: note: in instantiation of template class 'ptr<const mxlist>' requested here
  ptr<const mxlist> get_mxl () const { return mxl; }
                    ^
--- mxcheck.o ---
./asmtpd.h:354:1: note: did you mean class here?
struct enqmsg;
^~~~~~
class
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:114:3: note: in instantiation of template class 'ref<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
  ^
--- synfp.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<in_addr, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- synfp.o ---
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<in_addr, void>, &qhash_slot<in_addr, void>::link>' requested here
--- smtpd.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- synfp.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
--- smtpd.o ---
  typedef struct ref<T> ref;
          ^
--- synfp.o ---
synfp.C:150:18: note: in instantiation of template class 'bhash<in_addr, hashfn<in_addr>, equals<in_addr>, &qhash_slot<in_addr, void>::link>' requested here
--- smtpd.o ---
../libasync/parseopt.h:114:15: note: in instantiation of template class 'ptr<callback<void, vec<str, 0>, str, bool *> >' requested here
--- synfp.o ---
  bhash<in_addr> seen;
                 ^
--- smtpd.o ---
  confcb::ptr cnfcb;
              ^
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<in_addr, void> &, void, void>' requested here
--- osguess.o ---
In file included from osguess.C:24:
--- synfp.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
--- osguess.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- synfp.o ---
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<in_addr, void>, &qhash_slot<in_addr, void>::link>' requested here
--- osguess.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- synfp.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
synfp.C:150:18: note: in instantiation of template class 'bhash<in_addr, hashfn<in_addr>, equals<in_addr>, &qhash_slot<in_addr, void>::link>' requested here
--- osguess.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- synfp.o ---
  bhash<in_addr> seen;
                 ^
--- osguess.o ---
./asmtpd.h:491:9: note: in instantiation of template class 'callback<void, ref<progout>, void, void>' requested here
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
typedef callback<void, ref<progout> >::ref runprogcb_t;
        ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
--- synfp.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- osguess.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:115:3: note: in instantiation of template class 'ref<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
  ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:115:12: note: in instantiation of template class 'ptr<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
           ^
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:617:9: note: in instantiation of template class 'callback<void, str, ptr<mxlist>, void>' requested here
typedef callback<void, str, ptr<mxlist> >::ref vrfycb_t;
        ^
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- mxcheck.o ---
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- avif.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:373:31: note: in instantiation of template class 'ptr<const rbl_status>' requested here
  const ptr<const rbl_status> rblcon;
                              ^
--- mxcheck.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, str> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, str> &, void, void>' requested here
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- mxcheck.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
--- auth.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:386:15: note: in instantiation of template class 'ptr<mxlist>' requested here
--- mxcheck.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
--- auth.o ---
  ptr<mxlist> mxl;
              ^
--- mxcheck.o ---
  qhash<str, str> table;
                  ^
--- osguess.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:524:11: note: in instantiation of template class 'callback<void, avif::disp_t, str, void>' requested here
--- mxcheck.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- osguess.o ---
  typedef callback<void, disp_t, str>::ref cb_t;
          ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- avif.o ---
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- avif.o ---
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
--- osguess.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:533:14: note: in instantiation of template class 'ref<callback<void, avif::disp_t, str, void> >' requested here
  const cb_t cb;
             ^
--- avif.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- quota.o ---
../libasync/suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
../libasync/suio++.h:46:7: note: previous use is here
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- quota.o ---
class suio {
      ^
--- smtpd.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, conftab_el *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
../libasync/suio++.h:250:28: note: did you mean class here?
--- smtpd.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- quota.o ---
../libasync/suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- smtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- osguess.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- smtpd.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- auth.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
../libasync/suio++.h:46:7: note: previous use is here
--- smtpd.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const conftab_el &, void, void>' requested here
--- quota.o ---
class suio {
      ^
--- auth.o ---
  typedef struct ref<T> ref;
          ^
--- osguess.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- auth.o ---
./asmtpd.h:454:28: note: in instantiation of template class 'ptr<const hostent>' requested here
--- osguess.o ---
../libasync/list.h:129:27: note: in instantiation of template class 'callback<void, avif::result *, void, void>' requested here
--- auth.o ---
  const ptr<const hostent> ptr_cache;
                           ^
--- smtpd.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
--- quota.o ---
../libasync/suio++.h:251:27: note: did you mean class here?
--- osguess.o ---
  void traverse (typename callback<void, T *>::ref cb) const {
                          ^
./asmtpd.h:539:32: note: in instantiation of template class 'tailq<avif::result, &avif::result::link>' requested here
--- smtpd.o ---
  : public ihash_core<V, field>
           ^
--- quota.o ---
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
--- smtpd.o ---
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
--- osguess.o ---
  tailq<result, &result::link> reslist;
                               ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- quota.o ---
../libasync/suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
char *suio_flatten (const struct suio *);
                          ^
../libasync/suio++.h:46:7: note: previous use is here
--- smtpd.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
class suio {
      ^
../libasync/suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- mxcheck.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:694:11: note: in instantiation of template class 'callback<void, spf_t *, void, void>' requested here
  typedef callback<void, spf_t *>::ref cb_t;
          ^
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:473:21: note: in instantiation of template class 'ptr<const mxlist>' requested here
  ptr<const mxlist> get_mxl () const { return mxl; }
                    ^
--- osguess.o ---
In file included from osguess.C:24:
./asmtpd.h:571:1: warning: 'enqmsg' defined as a class here but previously declared as a struct [-Wmismatched-tags]
class enqmsg {
^
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:696:3: note: in instantiation of template class 'ref<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
  ^
--- osguess.o ---
./asmtpd.h:354:1: note: did you mean class here?
struct enqmsg;
^~~~~~
class
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:696:13: note: in instantiation of template class 'ptr<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
            ^
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:491:9: note: in instantiation of template class 'callback<void, ref<progout>, void, void>' requested here
typedef callback<void, ref<progout> >::ref runprogcb_t;
        ^
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:713:20: note: in instantiation of template class 'ref<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
  ref<bhash<str> > loopcheck;
                   ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:29:
In file included from ../libasync/vec.h:30:
../libasync/array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:617:9: note: in instantiation of template class 'callback<void, str, ptr<mxlist>, void>' requested here
--- vrfy.o ---
template<class T, size_t n> class array {
                            ^
--- osguess.o ---
typedef callback<void, str, ptr<mxlist> >::ref vrfycb_t;
        ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- vrfy.o ---
../libasync/array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- osguess.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, str> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
--- auth.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
--- mxcheck.o ---
In file included from mxcheck.C:25:
--- osguess.o ---
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
--- mxcheck.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- auth.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- mxcheck.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- auth.o ---
./asmtpd.h:524:11: note: in instantiation of template class 'callback<void, avif::disp_t, str, void>' requested here
--- mxcheck.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
  qhash<str, str> table;
                  ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
--- mxcheck.o ---
  typedef struct ref<T> ref;
          ^
--- osguess.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- mxcheck.o ---
./asmtpd.h:762:20: note: in instantiation of template class 'ptr<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
--- osguess.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- auth.o ---
  typedef callback<void, disp_t, str>::ref cb_t;
          ^
--- osguess.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- osguess.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- auth.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- mxcheck.o ---
         ptr<bhash<str> > loopcheck = NULL, int recdepth = 0);
                          ^
--- auth.o ---
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- osguess.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, str> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:533:14: note: in instantiation of template class 'ref<callback<void, avif::disp_t, str, void> >' requested here
  const cb_t cb;
             ^
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./asmtpd.h:770:9: note: in instantiation of template class 'callback<void, spf_result, str, str>' requested here
typedef callback<void, spf_result, str, str>::ref spfckcb_t;
        ^
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/list.h:129:27: note: in instantiation of template class 'callback<void, avif::result *, void, void>' requested here
--- mxcheck.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- auth.o ---
  void traverse (typename callback<void, T *>::ref cb) const {
                          ^
./asmtpd.h:539:32: note: in instantiation of template class 'tailq<avif::result, &avif::result::link>' requested here
  tailq<result, &result::link> reslist;
                               ^
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- synfp.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<sockaddr_in, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
synfp.C:292:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
  bhash<sockaddr_in> seen;
                     ^
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- synfp.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- mxcheck.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, int> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, int>, &qhash_slot<str, int>::link>' requested here
--- synfp.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
--- synfp.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- mxcheck.o ---
mxcheck.C:29:24: note: in instantiation of template class 'qhash<str, int, hashfn<str>, equals<str>, qhash_lookup_return<int>, &qhash_slot<str, int>::link>' requested here
--- synfp.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<sockaddr_in, void> &, void, void>' requested here
--- mxcheck.o ---
static qhash<str, int> mxcache;
                       ^
--- synfp.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- synfp.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
synfp.C:292:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- mxcheck.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- synfp.o ---
  bhash<sockaddr_in> seen;
                     ^
--- mxcheck.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- osguess.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
--- mxcheck.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
./asmtpd.h:694:11: note: in instantiation of template class 'callback<void, spf_t *, void, void>' requested here
--- mxcheck.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, int> &, void, void>' requested here
--- osguess.o ---
  typedef callback<void, spf_t *>::ref cb_t;
          ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- mxcheck.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
--- osguess.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, int>, &qhash_slot<str, int>::link>' requested here
--- auth.o ---
In file included from auth.C:24:
./asmtpd.h:571:1: warning: 'enqmsg' defined as a class here but previously declared as a struct [-Wmismatched-tags]
--- osguess.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- auth.o ---
class enqmsg {
^
--- mxcheck.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
mxcheck.C:29:24: note: in instantiation of template class 'qhash<str, int, hashfn<str>, equals<str>, qhash_lookup_return<int>, &qhash_slot<str, int>::link>' requested here
static qhash<str, int> mxcache;
                       ^
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- auth.o ---
./asmtpd.h:354:1: note: did you mean class here?
struct enqmsg;
^~~~~~
class
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:696:3: note: in instantiation of template class 'ref<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
  ^
--- avif.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- synfp.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:104:9: note: in instantiation of template class 'callback<void, ptr<hostent>, int, void>' requested here
--- synfp.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<unsigned short, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<unsigned short, void>, &qhash_slot<unsigned short, void>::link>' requested here
--- avif.o ---
typedef callback<void, ptr<hostent>, int>::ref cbhent;
        ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- synfp.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
synfp.C:293:20: note: in instantiation of template class 'bhash<unsigned short, hashfn<unsigned short>, equals<unsigned short>, &qhash_slot<unsigned short, void>::link>' requested here
--- avif.o ---
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- synfp.o ---
  bhash<u_int16_t> seen_port;
                   ^
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- avif.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- synfp.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:696:13: note: in instantiation of template class 'ptr<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
            ^
--- synfp.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- synfp.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:29:
In file included from ../libasync/vec.h:30:
../libasync/array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
--- avif.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:109:9: note: in instantiation of template class 'callback<void, ptr<mxlist>, int, void>' requested here
typedef callback<void, ptr<mxlist>, int>::ref cbmxlist;
        ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- synfp.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<unsigned short, void> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<unsigned short, void>, &qhash_slot<unsigned short, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
synfp.C:293:20: note: in instantiation of template class 'bhash<unsigned short, hashfn<unsigned short>, equals<unsigned short>, &qhash_slot<unsigned short, void>::link>' requested here
  bhash<u_int16_t> seen_port;
                   ^
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
--- avif.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- synfp.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- avif.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- spf.o ---
../libasync/array.h:75:29: note: did you mean class here?
--- avif.o ---
../libasync/dns.h:112:9: note: in instantiation of template class 'callback<void, ptr<srvlist>, int, void>' requested here
typedef callback<void, ptr<srvlist>, int>::ref cbsrvlist;
        ^
--- spf.o ---
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- avif.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- osguess.o ---
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:713:20: note: in instantiation of template class 'ref<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
--- mxcheck.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
  ref<bhash<str> > loopcheck;
                   ^
--- mxcheck.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<in_addr, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<in_addr, void>, &qhash_slot<in_addr, void>::link>' requested here
--- avif.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
mxcheck.C:30:23: note: in instantiation of template class 'bhash<in_addr, hashfn<in_addr>, equals<in_addr>, &qhash_slot<in_addr, void>::link>' requested here
--- avif.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- mxcheck.o ---
static bhash<in_addr> addrcache;
                      ^
--- avif.o ---
../libasync/dns.h:115:9: note: in instantiation of template class 'callback<void, ptr<txtlist>, int, void>' requested here
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
--- avif.o ---
typedef callback<void, ptr<txtlist>, int>::ref cbtxtlist;
        ^
--- mxcheck.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- mxcheck.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- avif.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- mxcheck.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<in_addr, void> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<in_addr, void>, &qhash_slot<in_addr, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
mxcheck.C:30:23: note: in instantiation of template class 'bhash<in_addr, hashfn<in_addr>, equals<in_addr>, &qhash_slot<in_addr, void>::link>' requested here
static bhash<in_addr> addrcache;
                      ^
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- mxcheck.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- mxcheck.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- auth.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- enqmsg.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
./asmtpd.h:617:9: note: in instantiation of template class 'callback<void, str, ptr<mxlist>, void>' requested here
--- enqmsg.o ---
  typedef struct ptr<T> ptr;
          ^
enqmsg.C:231:4: note: in instantiation of template class 'ref<progout>' requested here
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- auth.o ---
typedef callback<void, str, ptr<mxlist> >::ref vrfycb_t;
        ^
--- avif.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- auth.o ---
In file included from auth.C:24:
--- avif.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
                 wrap (this, &enqmsg_file::smcb, av[0], cb),
                 ^
--- auth.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/dns.h:120:19: note: in instantiation of template class 'ref<callback<void, ptr<srvlist>, int, void> >' requested here
--- auth.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- avif.o ---
               cbsrvlist cb, bool search = false)
                         ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- auth.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- avif.o ---
  typedef struct ref<T> ref;
          ^
../libasync/dns.h:122:10: note: in instantiation of template class 'ptr<srvlist>' requested here
--- auth.o ---
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, str> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
In file included from auth.C:24:
--- avif.o ---
  return dns_srvbyname (strbuf ("_%s._%s.%s", srv, proto, name), cb, search);
         ^
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:762:20: note: in instantiation of template class 'ptr<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
         ptr<bhash<str> > loopcheck = NULL, int recdepth = 0);
                          ^
--- auth.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- enqmsg.o ---
  typedef struct ptr<T> ptr;
          ^
--- auth.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, str> &, void, void>' requested here
--- enqmsg.o ---
enqmsg.C:231:4: note: in instantiation of template class 'ref<callback<void, ref<progout>, void, void> >' requested here
--- auth.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
--- enqmsg.o ---
                 wrap (this, &enqmsg_file::smcb, av[0], cb),
                 ^
--- auth.o ---
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./asmtpd.h:770:9: note: in instantiation of template class 'callback<void, spf_result, str, str>' requested here
typedef callback<void, spf_result, str, str>::ref spfckcb_t;
        ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
../libasync/suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- auth.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:694:11: note: in instantiation of template class 'callback<void, spf_t *, void, void>' requested here
  typedef callback<void, spf_t *>::ref cb_t;
          ^
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- osguess.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/list.h:129:27: note: in instantiation of template class 'callback<void, oscell *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) const {
                          ^
osguess.C:44:32: note: in instantiation of template class 'tailq<oscell, &oscell::link>' requested here
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- osguess.o ---
  tailq<oscell, &oscell::link> q;
                               ^
--- auth.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- osguess.o ---
In file included from osguess.C:24:
--- auth.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- auth.o ---
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:696:3: note: in instantiation of template class 'ref<callback<void, spf_t *, void, void> >' requested here
--- osguess.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
  cb_t::ptr cb;
  ^
--- osguess.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:696:13: note: in instantiation of template class 'ptr<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
            ^
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:52:5: note: in instantiation of template class 'ref<oslist>' requested here
  V value;
    ^
../libasync/qhash.h:61:5: note: in instantiation of template class 'qhash_slot<unsigned int, ref<oslist> >' requested here
        = &qhash_slot<K,V>::link>
           ^
osguess.C:52:8: note: in instantiation of default argument for 'qhash<unsigned int, ref<oslist>, hashfn<unsigned int>, equals<unsigned int>, qhash_lookup_return<ref<oslist> > >' required here
static qhash<u_int, ref<oslist> > ostab;
       ^~~~~~~~~~~~~~~~~~~~~~~~~~
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:713:20: note: in instantiation of template class 'ref<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
  ref<bhash<str> > loopcheck;
                   ^
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<unsigned int, ref<oslist> > *, void, void>' requested here
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- mxcheck.o ---
  typedef struct ptr<T> ptr;
          ^
--- osguess.o ---
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<unsigned int, ref<oslist> >, &qhash_slot<unsigned int, ref<oslist> >::link>' requested here
--- mxcheck.o ---
mxcheck.C:68:46: note: in instantiation of template class 'ref<callback<void, ptr<mxlist>, int, void> >' requested here
--- osguess.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
osguess.C:52:35: note: in instantiation of template class 'qhash<unsigned int, ref<oslist>, hashfn<unsigned int>, equals<unsigned int>, qhash_lookup_return<ref<oslist> >, &qhash_slot<unsigned int, ref<oslist> >::link>' requested here
--- mxcheck.o ---
  else if (dnsreq *rq = dns_mxbyname (relay, wrap (this, &mxcheck::getmx)))
                                             ^
--- osguess.o ---
static qhash<u_int, ref<oslist> > ostab;
                                  ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<unsigned int, ref<oslist> > &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<unsigned int, ref<oslist> >, &qhash_slot<unsigned int, ref<oslist> >::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
osguess.C:52:35: note: in instantiation of template class 'qhash<unsigned int, ref<oslist>, hashfn<unsigned int>, equals<unsigned int>, qhash_lookup_return<ref<oslist> >, &qhash_slot<unsigned int, ref<oslist> >::link>' requested here
static qhash<u_int, ref<oslist> > ostab;
                                  ^
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:762:20: note: in instantiation of template class 'ptr<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
         ptr<bhash<str> > loopcheck = NULL, int recdepth = 0);
                          ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:45:9: note: in instantiation of template class 'ptr<callback<void, str, int, void> >' requested here
--- asmtpd.o ---
../libasync/suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
  rcb_t rcb;
        ^
--- asmtpd.o ---
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
../libasync/suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- asmtpd.o ---
../libasync/suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
char *suio_flatten (const struct suio *);
                          ^
../libasync/suio++.h:46:7: note: previous use is here
--- auth.o ---
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
--- asmtpd.o ---
class suio {
      ^
--- auth.o ---
./asmtpd.h:770:9: note: in instantiation of template class 'callback<void, spf_result, str, str>' requested here
--- asmtpd.o ---
../libasync/suio++.h:268:27: note: did you mean class here?
--- auth.o ---
typedef callback<void, spf_result, str, str>::ref spfckcb_t;
        ^
--- asmtpd.o ---
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
../libasync/str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
../libasync/str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:58:39: note: in instantiation of template class 'ref<callback<void, str, int, void> >' requested here
    { infn = &aios::rnone; rcb_t::ref cb = rcb; rcb = NULL; (*cb) (s, err); }
                                      ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/parseopt.h:98:9: note: in instantiation of template class 'callback<void, vec<str, 0>, str, bool *>' requested here
typedef callback<void, vec<str>, str, bool *>::ref confcb;
        ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, qhash_slot<str, str> *, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:114:3: note: in instantiation of template class 'ref<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
  ^
--- addrparse.o ---
In file included from addrparse.C:32:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- addrparse.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
  typedef struct ptr<T> ptr;
          ^
--- mxcheck.o ---
  typedef struct ptr<T> ptr;
          ^
mxcheck.C:108:29: note: in instantiation of template class 'ref<callback<void, ptr<hostent>, int, void> >' requested here
--- addrparse.o ---
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, const qhash_slot<str, str> &, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
--- mxcheck.o ---
        = dns_hostbyname (mxes[i], wrap (this, &mxcheck::geta, i)))
                                   ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- addrparse.o ---
  ~qhash () { clear (); }
              ^
--- smtpd.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- addrparse.o ---
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
--- smtpd.o ---
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:67:29: note: in instantiation of template class 'ptr<callback<void, int, void, void> >' requested here
  virtual void mkwcb (wcb_t cb) { if (fd >= 0) (*cb) (err); }
                            ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:114:15: note: in instantiation of template class 'ptr<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
              ^
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
osguess.C:134:24: note: in instantiation of template class 'ptr<oslist>' requested here
        ptr<oslist> ol = ostab[ln];
                              ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:115:3: note: in instantiation of template class 'ref<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
  ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:116:20: note: in instantiation of template class 'ref<aios>' requested here
  static ref<aios> alloc (int fd, size_t rbsz = defrbufsize)
                   ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:115:12: note: in instantiation of template class 'ptr<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
           ^
--- synfp.o ---
In file included from synfp.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
synfp.C:478:16: note: in instantiation of template class 'ref<synfp>' requested here
    ref<synfp> s = New refcounted<synfp>;
               ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, conftab_el *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const conftab_el &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
--- smtpd.o ---
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:161:44: note: in instantiation of template class 'ptr<aios>' requested here
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
  aiosout (const aios_t::ptr &a) : strbuf (a->outb), s(a) { s->outstart (); }
                                           ^
--- avif.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
../libasync/str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
../libasync/str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:73:16: note: in instantiation of template class 'ptr<hostent>' requested here
  ptr<hostent> h;
               ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:74:19: note: in instantiation of template class 'ptr<rbl_status>' requested here
  ptr<rbl_status> rs;
                  ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- rcptcheck.o ---
../libasync/suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
--- asmtpd.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
  typedef callback<void>::ref cb_t;
          ^
--- asmtpd.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
--- asmtpd.o ---
  const ref<suio> uio;
                  ^
--- rcptcheck.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<sockaddr_in, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
  bhash<sockaddr_in> bindaddrh;
                     ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<sockaddr_in, void> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
  bhash<sockaddr_in> bindaddrh;
                     ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- smtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
  bhash<str> nocheck;
             ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, void> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
  bhash<str> nocheck;
             ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- smtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, long> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
  qhash<str, time_t> warn_filter;
                     ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, long> &, void, void>' requested here
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- smtpd.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
--- auth.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
--- auth.o ---
  typedef struct ptr<T> ptr;
          ^
--- smtpd.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
--- auth.o ---
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, qhash_slot<str, str> *, void, void> >' requested here
--- smtpd.o ---
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
--- auth.o ---
    core::traverse (wrap (this, &qhash::delslot));
                    ^
--- smtpd.o ---
  qhash<str, time_t> warn_filter;
                     ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- auth.o ---
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
--- smtpd.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- auth.o ---
  ~qhash () { clear (); }
              ^
--- smtpd.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
--- rcptcheck.o ---
../libasync/suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
  map_base () : loadno (0) {}
  ^
--- smtpd.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rcptcheck.o ---
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
../libasync/suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
--- auth.o ---
In file included from auth.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- rcptcheck.o ---
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
--- auth.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- rcptcheck.o ---
../libasync/suio++.h:46:7: note: previous use is here
--- auth.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
class suio {
      ^
--- auth.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, const qhash_slot<str, str> &, void, void> >' requested here
--- rcptcheck.o ---
../libasync/suio++.h:251:27: note: did you mean class here?
--- auth.o ---
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
--- rcptcheck.o ---
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
--- auth.o ---
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
--- rcptcheck.o ---
../libasync/suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
../libasync/suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:45:9: note: in instantiation of template class 'ptr<callback<void, str, int, void> >' requested here
--- asmtpd.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
--- avif.o ---
  rcb_t rcb;
        ^
--- asmtpd.o ---
typedef callback<void, str>::ref cbs;
        ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- enqmsg.o ---
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- asmtpd.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- enqmsg.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, qhash_slot<str, str> *, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
In file included from enqmsg.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, const qhash_slot<str, str> &, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:58:39: note: in instantiation of template class 'ref<callback<void, str, int, void> >' requested here
    { infn = &aios::rnone; rcb_t::ref cb = rcb; rcb = NULL; (*cb) (s, err); }
                                      ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
../libasync/suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:373:31: note: in instantiation of template class 'ptr<const rbl_status>' requested here
  const ptr<const rbl_status> rblcon;
                              ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
--- quota.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
  typedef struct ptr<T> ptr;
          ^
--- smtpd.o ---
  typedef struct ref<T> ref;
          ^
--- quota.o ---
../libasync/async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
--- smtpd.o ---
./asmtpd.h:386:15: note: in instantiation of template class 'ptr<mxlist>' requested here
--- quota.o ---
void chldcb (pid_t, cbi::ptr);
                    ^
--- smtpd.o ---
  ptr<mxlist> mxl;
              ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:67:29: note: in instantiation of template class 'ptr<callback<void, int, void, void> >' requested here
  virtual void mkwcb (wcb_t cb) { if (fd >= 0) (*cb) (err); }
                            ^
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, qhash_slot<str, str> *, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- avif.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:116:20: note: in instantiation of template class 'ref<aios>' requested here
--- smtpd.o ---
  typedef struct ref<T> ref;
          ^
./asmtpd.h:454:28: note: in instantiation of template class 'ptr<const hostent>' requested here
--- avif.o ---
  static ref<aios> alloc (int fd, size_t rbsz = defrbufsize)
                   ^
--- smtpd.o ---
  const ptr<const hostent> ptr_cache;
                           ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
../libasync/suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- runprog.o ---
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
../libasync/suio++.h:46:7: note: previous use is here
--- osguess.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- quota.o ---
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
--- runprog.o ---
class suio {
      ^
--- osguess.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- osguess.o ---
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, const qhash_slot<str, str> &, void, void> >' requested here
--- quota.o ---
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
--- quota.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- osguess.o ---
  map_base () : loadno (0) {}
  ^
--- runprog.o ---
../libasync/suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
../libasync/suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:473:21: note: in instantiation of template class 'ptr<const mxlist>' requested here
  ptr<const mxlist> get_mxl () const { return mxl; }
                    ^
--- runprog.o ---
../libasync/suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:491:9: note: in instantiation of template class 'callback<void, ref<progout>, void, void>' requested here
typedef callback<void, ref<progout> >::ref runprogcb_t;
        ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:161:44: note: in instantiation of template class 'ptr<aios>' requested here
  aiosout (const aios_t::ptr &a) : strbuf (a->outb), s(a) { s->outstart (); }
                                           ^
--- rbl.o ---
../libasync/suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
../libasync/suio++.h:46:7: note: previous use is here
--- smtpd.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- rbl.o ---
class suio {
      ^
--- smtpd.o ---
./asmtpd.h:524:11: note: in instantiation of template class 'callback<void, avif::disp_t, str, void>' requested here
  typedef callback<void, disp_t, str>::ref cb_t;
          ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- rbl.o ---
../libasync/suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
../libasync/suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- rbl.o ---
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
--- mxcheck.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, qhash_slot<str, str> *, void, void> >' requested here
--- rbl.o ---
../libasync/suio++.h:251:27: note: did you mean class here?
--- mxcheck.o ---
    core::traverse (wrap (this, &qhash::delslot));
                    ^
--- rbl.o ---
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
--- mxcheck.o ---
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- rbl.o ---
../libasync/suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
char *suio_flatten (const struct suio *);
                          ^
../libasync/suio++.h:46:7: note: previous use is here
--- smtpd.o ---
  typedef struct ptr<T> ptr;
          ^
--- rbl.o ---
class suio {
      ^
--- smtpd.o ---
./asmtpd.h:533:14: note: in instantiation of template class 'ref<callback<void, avif::disp_t, str, void> >' requested here
  const cb_t cb;
             ^
--- rbl.o ---
../libasync/suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, const qhash_slot<str, str> &, void, void> >' requested here
--- smtpd.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- mxcheck.o ---
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
--- smtpd.o ---
../libasync/list.h:129:27: note: in instantiation of template class 'callback<void, avif::result *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) const {
                          ^
./asmtpd.h:539:32: note: in instantiation of template class 'tailq<avif::result, &avif::result::link>' requested here
  tailq<result, &result::link> reslist;
                               ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from smtpd.C:24:
./asmtpd.h:571:1: warning: 'enqmsg' defined as a class here but previously declared as a struct [-Wmismatched-tags]
class enqmsg {
^
./asmtpd.h:354:1: note: did you mean class here?
struct enqmsg;
^~~~~~
class
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, qhash_slot<unsigned int, ref<oslist> > *, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
osguess.C:113:9: note: in instantiation of member function 'qhash<unsigned int, ref<oslist>, hashfn<unsigned int>, equals<unsigned int>, qhash_lookup_return<ref<oslist> >, &qhash_slot<unsigned int, ref<oslist> >::link>::clear' requested here
  ostab.clear ();
        ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- osguess.o ---
In file included from osguess.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- spf.o ---
../libasync/callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- osguess.o ---
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
  typedef struct ref<callback<R> > ref;
          ^
--- osguess.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, const qhash_slot<unsigned int, ref<oslist> > &, void, void> >' requested here
--- asmtpd.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- osguess.o ---
    core::traverse (wrap (this, &qhash::delslot));
                    ^
osguess.C:113:9: note: in instantiation of member function 'qhash<unsigned int, ref<oslist>, hashfn<unsigned int>, equals<unsigned int>, qhash_lookup_return<ref<oslist> >, &qhash_slot<unsigned int, ref<oslist> >::link>::clear' requested here
--- asmtpd.o ---
../libasync/dns.h:104:9: note: in instantiation of template class 'callback<void, ptr<hostent>, int, void>' requested here
--- spf.o ---
../libasync/suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
--- osguess.o ---
  ostab.clear ();
        ^
--- spf.o ---
In file included from spf.C:24:
--- asmtpd.o ---
typedef callback<void, ptr<hostent>, int>::ref cbhent;
        ^
--- spf.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- spf.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
  typedef struct ptr<callback<R> > ptr;
          ^
--- asmtpd.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:109:9: note: in instantiation of template class 'callback<void, ptr<mxlist>, int, void>' requested here
typedef callback<void, ptr<mxlist>, int>::ref cbmxlist;
        ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
--- asmtpd.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- spf.o ---
    cb_t cb;
         ^
--- smtpd.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- asmtpd.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- smtpd.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
../libasync/dns.h:112:9: note: in instantiation of template class 'callback<void, ptr<srvlist>, int, void>' requested here
typedef callback<void, ptr<srvlist>, int>::ref cbsrvlist;
        ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- smtpd.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:617:9: note: in instantiation of template class 'callback<void, str, ptr<mxlist>, void>' requested here
--- asmtpd.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- smtpd.o ---
typedef callback<void, str, ptr<mxlist> >::ref vrfycb_t;
        ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- asmtpd.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- asmtpd.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- avif.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- asmtpd.o ---
../libasync/dns.h:115:9: note: in instantiation of template class 'callback<void, ptr<txtlist>, int, void>' requested here
--- avif.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
typedef callback<void, ptr<txtlist>, int>::ref cbtxtlist;
        ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- avif.o ---
  typedef struct ref<T> ref;
          ^
--- asmtpd.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
./asmtpd.h:73:16: note: in instantiation of template class 'ptr<hostent>' requested here
  ptr<hostent> h;
               ^
--- asmtpd.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/dns.h:120:19: note: in instantiation of template class 'ref<callback<void, ptr<srvlist>, int, void> >' requested here
               cbsrvlist cb, bool search = false)
                         ^
--- smtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, str> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- avif.o ---
In file included from avif.C:25:
--- smtpd.o ---
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
--- avif.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- smtpd.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
--- avif.o ---
In file included from ../libasync/callback.h:612:
--- smtpd.o ---
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
--- avif.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
  qhash<str, str> table;
                  ^
--- avif.o ---
  typedef struct ref<T> ref;
          ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
--- avif.o ---
./asmtpd.h:74:19: note: in instantiation of template class 'ptr<rbl_status>' requested here
--- smtpd.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
--- smtpd.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- asmtpd.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- avif.o ---
  ptr<rbl_status> rs;
                  ^
--- smtpd.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/dns.h:122:10: note: in instantiation of template class 'ptr<srvlist>' requested here
--- smtpd.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- asmtpd.o ---
  return dns_srvbyname (strbuf ("_%s._%s.%s", srv, proto, name), cb, search);
         ^
--- smtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, str> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:104:9: note: in instantiation of template class 'callback<void, ptr<hostent>, int, void>' requested here
typedef callback<void, ptr<hostent>, int>::ref cbhent;
        ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:109:9: note: in instantiation of template class 'callback<void, ptr<mxlist>, int, void>' requested here
typedef callback<void, ptr<mxlist>, int>::ref cbmxlist;
        ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:112:9: note: in instantiation of template class 'callback<void, ptr<srvlist>, int, void>' requested here
typedef callback<void, ptr<srvlist>, int>::ref cbsrvlist;
        ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:115:9: note: in instantiation of template class 'callback<void, ptr<txtlist>, int, void>' requested here
typedef callback<void, ptr<txtlist>, int>::ref cbtxtlist;
        ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
../libasync/str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
../libasync/str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/dns.h:120:19: note: in instantiation of template class 'ref<callback<void, ptr<srvlist>, int, void> >' requested here
               cbsrvlist cb, bool search = false)
                         ^
--- netpath.o ---
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- netpath.o ---
  typedef struct ref<callback<R> > ref;
          ^
--- smtpd.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:694:11: note: in instantiation of template class 'callback<void, spf_t *, void, void>' requested here
  typedef callback<void, spf_t *>::ref cb_t;
          ^
--- netpath.o ---
../libasync/suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- netpath.o ---
  typedef callback<void>::ref cb_t;
          ^
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- smtpd.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- netpath.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/dns.h:122:10: note: in instantiation of template class 'ptr<srvlist>' requested here
  return dns_srvbyname (strbuf ("_%s._%s.%s", srv, proto, name), cb, search);
         ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:696:3: note: in instantiation of template class 'ref<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
  ^
--- netpath.o ---
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
--- spf.o ---
../libasync/suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
--- netpath.o ---
    cb_t cb;
         ^
--- spf.o ---
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:696:13: note: in instantiation of template class 'ptr<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
            ^
--- spf.o ---
../libasync/suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
../libasync/suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
--- avif.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<sockaddr_in, void> *, void, void>' requested here
--- spf.o ---
../libasync/suio++.h:251:27: note: did you mean class here?
--- avif.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- spf.o ---
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
--- avif.o ---
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- spf.o ---
../libasync/suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
  bhash<sockaddr_in> bindaddrh;
                     ^
--- spf.o ---
char *suio_flatten (const struct suio *);
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
../libasync/suio++.h:268:27: note: did you mean class here?
--- avif.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- spf.o ---
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- avif.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<sockaddr_in, void> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
  bhash<sockaddr_in> bindaddrh;
                     ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:713:20: note: in instantiation of template class 'ref<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
  ref<bhash<str> > loopcheck;
                   ^
--- avif.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
../libasync/suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- avif.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, void> *, void, void>' requested here
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- asmtpd.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- avif.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- smtpd.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- asmtpd.o ---
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
--- smtpd.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/parseopt.h:98:9: note: in instantiation of template class 'callback<void, vec<str, 0>, str, bool *>' requested here
--- smtpd.o ---
  typedef struct ref<T> ref;
          ^
--- avif.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
--- smtpd.o ---
./asmtpd.h:762:20: note: in instantiation of template class 'ptr<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
--- asmtpd.o ---
typedef callback<void, vec<str>, str, bool *>::ref confcb;
        ^
--- avif.o ---
  bhash<str> nocheck;
             ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
--- asmtpd.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
         ptr<bhash<str> > loopcheck = NULL, int recdepth = 0);
                          ^
--- avif.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- avif.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, void> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
  bhash<str> nocheck;
             ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
--- avif.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- asmtpd.o ---
../libasync/parseopt.h:114:3: note: in instantiation of template class 'ref<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
  ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:114:15: note: in instantiation of template class 'ptr<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
              ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- smtpd.o ---
./asmtpd.h:770:9: note: in instantiation of template class 'callback<void, spf_result, str, str>' requested here
--- rcptcheck.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
typedef callback<void, spf_result, str, str>::ref spfckcb_t;
        ^
--- rcptcheck.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- rcptcheck.o ---
  const ref<suio> uio;
--- smtpd.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
                  ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- smtpd.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- asmtpd.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:115:3: note: in instantiation of template class 'ref<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
  ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:115:12: note: in instantiation of template class 'ptr<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
           ^
--- avif.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, long> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
  qhash<str, time_t> warn_filter;
                     ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, long> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
  qhash<str, time_t> warn_filter;
                     ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- netpath.o ---
../libasync/suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, conftab_el *, void, void>' requested here
--- netpath.o ---
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
../libasync/suio++.h:46:7: note: previous use is here
--- asmtpd.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- netpath.o ---
class suio {
      ^
--- asmtpd.o ---
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- runprog.o ---
../libasync/str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
struct bssstr : public str {
^
--- asmtpd.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- netpath.o ---
../libasync/suio++.h:250:28: note: did you mean class here?
--- runprog.o ---
../libasync/str.h:91:10: note: did you mean struct here?
--- asmtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
  friend class bssstr;
         ^~~~~
         struct
--- asmtpd.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const conftab_el &, void, void>' requested here
--- netpath.o ---
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
--- asmtpd.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
--- netpath.o ---
../libasync/suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
--- netpath.o ---
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
../libasync/suio++.h:46:7: note: previous use is here
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- netpath.o ---
class suio {
      ^
--- asmtpd.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- netpath.o ---
../libasync/suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
../libasync/suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- vrfy.o ---
../libasync/suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
../libasync/suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
../libasync/suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/parseopt.h:98:9: note: in instantiation of template class 'callback<void, vec<str, 0>, str, bool *>' requested here
typedef callback<void, vec<str>, str, bool *>::ref confcb;
        ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
../libasync/str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
--- quota.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- rbl.o ---
struct bssstr : public str {
^
../libasync/str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:114:3: note: in instantiation of template class 'ref<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
  ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:373:31: note: in instantiation of template class 'ptr<const rbl_status>' requested here
  const ptr<const rbl_status> rblcon;
                              ^
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, qhash_slot<str, int> *, void, void> >' requested here
--- quota.o ---
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:114:15: note: in instantiation of template class 'ptr<callback<void, vec<str, 0>, str, bool *> >' requested here
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
    core::traverse (wrap (this, &qhash::delslot));
                    ^
--- quota.o ---
  confcb::ptr cnfcb;
              ^
--- mxcheck.o ---
mxcheck.C:149:11: note: in instantiation of member function 'qhash<str, int, hashfn<str>, equals<str>, qhash_lookup_return<int>, &qhash_slot<str, int>::link>::clear' requested here
  mxcache.clear ();
          ^
--- runprog.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- mxcheck.o ---
In file included from mxcheck.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- mxcheck.o ---
  typedef struct ptr<T> ptr;
          ^
--- quota.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- mxcheck.o ---
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, const qhash_slot<str, int> &, void, void> >' requested here
--- quota.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:115:3: note: in instantiation of template class 'ref<callback<void, str, void, void> >' requested here
--- mxcheck.o ---
    core::traverse (wrap (this, &qhash::delslot));
                    ^
mxcheck.C:149:11: note: in instantiation of member function 'qhash<str, int, hashfn<str>, equals<str>, qhash_lookup_return<int>, &qhash_slot<str, int>::link>::clear' requested here
--- quota.o ---
  cbs::ptr scb;
  ^
--- mxcheck.o ---
  mxcache.clear ();
          ^
--- avif.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:115:12: note: in instantiation of template class 'ptr<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
           ^
--- avif.o ---
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:386:15: note: in instantiation of template class 'ptr<mxlist>' requested here
  ptr<mxlist> mxl;
              ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
../libasync/str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
../libasync/str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- rbl.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- quota.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- quota.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- rbl.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, conftab_el *, void, void>' requested here
--- rbl.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
--- quota.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
--- rbl.o ---
  const ref<suio> uio;
                  ^
--- quota.o ---
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
--- avif.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- avif.o ---
  typedef struct ref<T> ref;
          ^
--- quota.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const conftab_el &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
--- avif.o ---
./asmtpd.h:454:28: note: in instantiation of template class 'ptr<const hostent>' requested here
--- quota.o ---
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- avif.o ---
  const ptr<const hostent> ptr_cache;
                           ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- avif.o ---
In file included from avif.C:25:
--- rcptcheck.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
In file included from ./asmtpd.h:25:
--- rcptcheck.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- avif.o ---
In file included from ../libasync/async.h:28:
--- rcptcheck.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
In file included from ../libasync/amisc.h:29:
--- rcptcheck.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
In file included from ../libasync/err.h:28:
--- rcptcheck.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- avif.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:45:9: note: in instantiation of template class 'ptr<callback<void, str, int, void> >' requested here
  rcb_t rcb;
        ^
--- avif.o ---
  typedef struct ref<T> ref;
          ^
./asmtpd.h:473:21: note: in instantiation of template class 'ptr<const mxlist>' requested here
  ptr<const mxlist> get_mxl () const { return mxl; }
                    ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:58:39: note: in instantiation of template class 'ref<callback<void, str, int, void> >' requested here
    { infn = &aios::rnone; rcb_t::ref cb = rcb; rcb = NULL; (*cb) (s, err); }
                                      ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- smtpd.o ---
In file included from smtpd.C:25:
./rawnet.h:129:1: warning: 'synfp_collect' defined as a class here but previously declared as a struct [-Wmismatched-tags]
--- avif.o ---
In file included from ../libasync/err.h:28:
--- smtpd.o ---
class synfp_collect {
^
--- avif.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:67:29: note: in instantiation of template class 'ptr<callback<void, int, void, void> >' requested here
  virtual void mkwcb (wcb_t cb) { if (fd >= 0) (*cb) (err); }
                            ^
--- smtpd.o ---
./asmtpd.h:63:1: note: did you mean class here?
struct synfp_collect;
^~~~~~
class
--- avif.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:491:9: note: in instantiation of template class 'callback<void, ref<progout>, void, void>' requested here
typedef callback<void, ref<progout> >::ref runprogcb_t;
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, synfp_state<synfp_collect::tcbs, true>::synfp_entry *, void, void>' requested here
--- asmtpd.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:116:20: note: in instantiation of template class 'ref<aios>' requested here
--- avif.o ---
        ^
--- smtpd.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- asmtpd.o ---
  static ref<aios> alloc (int fd, size_t rbsz = defrbufsize)
                   ^
--- smtpd.o ---
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink>' requested here
  : public ihash_core<V, field>
           ^
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::sin, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
./rawnet.h:136:11: note: in instantiation of template class 'synfp_state<synfp_collect::tcbs, true>' requested here
  typedef synfp_state<tcbs, true>::synfp_entry cbentry_t;
          ^
--- avif.o ---
In file included from avif.C:25:
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- avif.o ---
In file included from ./asmtpd.h:25:
--- smtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
In file included from ../libasync/async.h:28:
--- smtpd.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const synfp_state<synfp_collect::tcbs, true>::synfp_entry &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink>' requested here
--- avif.o ---
In file included from ../libasync/amisc.h:29:
--- smtpd.o ---
  : public ihash_core<V, field>
           ^
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::sin, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
./rawnet.h:136:11: note: in instantiation of template class 'synfp_state<synfp_collect::tcbs, true>' requested here
  typedef synfp_state<tcbs, true>::synfp_entry cbentry_t;
          ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
In file included from ../libasync/err.h:28:
--- smtpd.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- avif.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- smtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, synfp_state<str, false>::synfp_entry *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::hlink>' requested here
  : public ihash_core<V, field>
           ^
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::sin, &synfp_state<str, false>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
./rawnet.h:137:11: note: in instantiation of template class 'synfp_state<str, false>' requested here
  typedef synfp_state<str, false>::synfp_entry fpentry_t;
          ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const synfp_state<str, false>::synfp_entry &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::hlink>' requested here
  : public ihash_core<V, field>
           ^
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::sin, &synfp_state<str, false>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
./rawnet.h:137:11: note: in instantiation of template class 'synfp_state<str, false>' requested here
  typedef synfp_state<str, false>::synfp_entry fpentry_t;
          ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- asmtpd.o ---
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:161:44: note: in instantiation of template class 'ptr<aios>' requested here
--- runprog.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
  aiosout (const aios_t::ptr &a) : strbuf (a->outb), s(a) { s->outstart (); }
                                           ^
--- runprog.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
../libasync/str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
struct bssstr : public str {
^
--- runprog.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- vrfy.o ---
../libasync/str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
--- runprog.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- smtpd.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
./rawnet.h:176:11: note: in instantiation of template class 'callback<void, icmpsock::icmp_info *, void, void>' requested here
--- netpath.o ---
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
../libasync/str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
  typedef callback<void, icmp_info *>::ref cb_t;
          ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- spf.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- netpath.o ---
struct bssstr : public str {
^
--- smtpd.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- spf.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
--- smtpd.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
typedef callback<void, str>::ref cbs;
        ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- netpath.o ---
../libasync/str.h:91:10: note: did you mean struct here?
--- smtpd.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- spf.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- netpath.o ---
  friend class bssstr;
         ^~~~~
         struct
--- spf.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./rawnet.h:180:16: note: in instantiation of template class 'ref<callback<void, icmpsock::icmp_info *, void, void> >' requested here
    const cb_t cb;
               ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./rawnet.h:185:25: note: in instantiation of template class 'ref<icmpsock>' requested here
    const ref<icmpsock> is;
                        ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, icmpsock::icmpclnt *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<icmpsock::icmpclnt, &icmpsock::icmpclnt::hlink>' requested here
  : public ihash_core<V, field>
           ^
./rawnet.h:208:30: note: in instantiation of template class 'ihash<const in_addr, icmpsock::icmpclnt, &icmpsock::icmpclnt::addr, &icmpsock::icmpclnt::hlink, hashfn<const in_addr>, equals<const in_addr> >' requested here
        &icmpsock::icmpclnt::hlink> cbtab;
                                    ^
--- avif.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- avif.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- smtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- rbl.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- smtpd.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const icmpsock::icmpclnt &, void, void>' requested here
--- rbl.o ---
../libasync/amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
--- smtpd.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
--- rbl.o ---
typedef callback<void, int>::ref cbi;
        ^
--- smtpd.o ---
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<icmpsock::icmpclnt, &icmpsock::icmpclnt::hlink>' requested here
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- smtpd.o ---
  : public ihash_core<V, field>
           ^
./rawnet.h:208:30: note: in instantiation of template class 'ihash<const in_addr, icmpsock::icmpclnt, &icmpsock::icmpclnt::addr, &icmpsock::icmpclnt::hlink, hashfn<const in_addr>, equals<const in_addr> >' requested here
--- rbl.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
        &icmpsock::icmpclnt::hlink> cbtab;
                                    ^
--- rbl.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rbl.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
--- avif.o ---
./asmtpd.h:524:11: note: in instantiation of template class 'callback<void, avif::disp_t, str, void>' requested here
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- asmtpd.o ---
  typedef struct ref<T> ref;
          ^
./asmtpd.h:73:16: note: in instantiation of template class 'ptr<hostent>' requested here
  ptr<hostent> h;
               ^
--- avif.o ---
  typedef callback<void, disp_t, str>::ref cb_t;
--- rbl.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
          ^
--- rbl.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- rbl.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rcptcheck.o ---
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- rcptcheck.o ---
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
--- asmtpd.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:74:19: note: in instantiation of template class 'ptr<rbl_status>' requested here
  ptr<rbl_status> rs;
                  ^
--- rcptcheck.o ---
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
In file included from avif.C:25:
--- rcptcheck.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- avif.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- rcptcheck.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
--- avif.o ---
In file included from ../libasync/amisc.h:29:
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
--- rcptcheck.o ---
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
--- smtpd.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
--- smtpd.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
  typedef struct ptr<T> ptr;
          ^
./rawnet.h:232:17: note: in instantiation of template class 'ref<icmpsock::icmpclnt>' requested here
--- rcptcheck.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- smtpd.o ---
  ref<icmpclnt> setcb (in_addr a, cb_t cb)
                ^
--- avif.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
--- avif.o ---
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
--- avif.o ---
          ^
--- rbl.o ---
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:533:14: note: in instantiation of template class 'ref<callback<void, avif::disp_t, str, void> >' requested here
  const cb_t cb;
             ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
--- netpath.o ---
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- smtpd.o ---
./rawnet.h:240:11: note: in instantiation of template class 'callback<void, int, in_addr *, int>' requested here
--- netpath.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
  typedef callback<void, int, in_addr *, int>::ref cb_t;
          ^
--- netpath.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- netpath.o ---
  const ref<suio> uio;
                  ^
--- smtpd.o ---
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/list.h:129:27: note: in instantiation of template class 'callback<void, avif::result *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) const {
                          ^
./asmtpd.h:539:32: note: in instantiation of template class 'tailq<avif::result, &avif::result::link>' requested here
  tailq<result, &result::link> reslist;
                               ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<sockaddr_in, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
  bhash<sockaddr_in> bindaddrh;
                     ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<sockaddr_in, void> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
  bhash<sockaddr_in> bindaddrh;
                     ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
--- avif.o ---
In file included from avif.C:25:
./asmtpd.h:571:1: warning: 'enqmsg' defined as a class here but previously declared as a struct [-Wmismatched-tags]
class enqmsg {
^
./asmtpd.h:354:1: note: did you mean class here?
struct enqmsg;
^~~~~~
class
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/vec.h:43:27: note: in instantiation of template class 'ref<callback<void, int, in_addr *, int> >' requested here
    char defbuf_space[N * sizeof (elm_t)];
                          ^
../libasync/vec.h:41:3: note: in instantiation of member class 'vec_base<ref<callback<void, int, in_addr *, int> >, 1>::(anonymous)' requested here
  union {
  ^
../libasync/vec.h:74:52: note: in instantiation of template class 'vec_base<ref<callback<void, int, in_addr *, int> >, 1>' requested here
template<class T, size_t N = 0> class vec : public vec_base<T, N> {
                                                   ^
./rawnet.h:261:16: note: in instantiation of template class 'vec<ref<callback<void, int, in_addr *, int> >, 1>' requested here
  vec<cb_t, 1> cbvec;
               ^
--- asmtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
  bhash<str> nocheck;
             ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, void> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
  bhash<str> nocheck;
             ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- spf.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- asmtpd.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- spf.o ---
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
--- asmtpd.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- spf.o ---
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:617:9: note: in instantiation of template class 'callback<void, str, ptr<mxlist>, void>' requested here
typedef callback<void, str, ptr<mxlist> >::ref vrfycb_t;
        ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- avif.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- runprog.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- avif.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- runprog.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
--- asmtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, long> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
  qhash<str, time_t> warn_filter;
                     ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- avif.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- asmtpd.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- avif.o ---
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, str> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
--- asmtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
--- asmtpd.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- avif.o ---
  qhash<str, str> table;
                  ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- asmtpd.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, long> &, void, void>' requested here
--- avif.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
--- avif.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- asmtpd.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
  qhash<str, time_t> warn_filter;
                     ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- avif.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- avif.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- asmtpd.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, str> &, void, void>' requested here
--- asmtpd.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- avif.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:45:9: note: in instantiation of template class 'ptr<callback<void, str, int, void> >' requested here
  rcb_t rcb;
        ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- avif.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:694:11: note: in instantiation of template class 'callback<void, spf_t *, void, void>' requested here
  typedef callback<void, spf_t *>::ref cb_t;
          ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:696:3: note: in instantiation of template class 'ref<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
  ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:696:13: note: in instantiation of template class 'ptr<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
            ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
--- rbl.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- quota.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- rbl.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
--- quota.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:58:39: note: in instantiation of template class 'ref<callback<void, str, int, void> >' requested here
--- rbl.o ---
void chldcb (pid_t, cbi::ptr);
                    ^
--- quota.o ---
    { infn = &aios::rnone; rcb_t::ref cb = rcb; rcb = NULL; (*cb) (s, err); }
                                      ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:713:20: note: in instantiation of template class 'ref<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
  ref<bhash<str> > loopcheck;
                   ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:373:31: note: in instantiation of template class 'ptr<const rbl_status>' requested here
  const ptr<const rbl_status> rblcon;
                              ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:386:15: note: in instantiation of template class 'ptr<mxlist>' requested here
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- asmtpd.o ---
  ptr<mxlist> mxl;
              ^
--- avif.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:762:20: note: in instantiation of template class 'ptr<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
         ptr<bhash<str> > loopcheck = NULL, int recdepth = 0);
                          ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
--- quota.o ---
  typedef struct ref<T> ref;
          ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
--- quota.o ---
../libasync/aios.h:67:29: note: in instantiation of template class 'ptr<callback<void, int, void, void> >' requested here
--- rbl.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
  virtual void mkwcb (wcb_t cb) { if (fd >= 0) (*cb) (err); }
                            ^
--- rbl.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- avif.o ---
In file included from avif.C:25:
--- rbl.o ---
../libasync/async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
--- avif.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- asmtpd.o ---
In file included from asmtpd.C:24:
--- avif.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- asmtpd.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- avif.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
--- rbl.o ---
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
--- asmtpd.o ---
  typedef struct ref<T> ref;
          ^
--- avif.o ---
./asmtpd.h:770:9: note: in instantiation of template class 'callback<void, spf_result, str, str>' requested here
--- asmtpd.o ---
./asmtpd.h:454:28: note: in instantiation of template class 'ptr<const hostent>' requested here
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- asmtpd.o ---
  const ptr<const hostent> ptr_cache;
                           ^
--- rbl.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- avif.o ---
typedef callback<void, spf_result, str, str>::ref spfckcb_t;
        ^
--- rbl.o ---
In file included from ../libasync/suio++.h:30:
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- rbl.o ---
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- avif.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- rcptcheck.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- rcptcheck.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- spf.o ---
../libasync/dns.h:104:9: note: in instantiation of template class 'callback<void, ptr<hostent>, int, void>' requested here
--- rcptcheck.o ---
../libasync/dns.h:104:9: note: in instantiation of template class 'callback<void, ptr<hostent>, int, void>' requested here
--- spf.o ---
typedef callback<void, ptr<hostent>, int>::ref cbhent;
        ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
--- rcptcheck.o ---
typedef callback<void, ptr<hostent>, int>::ref cbhent;
        ^
--- spf.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
--- spf.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- rcptcheck.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- spf.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:109:9: note: in instantiation of template class 'callback<void, ptr<mxlist>, int, void>' requested here
typedef callback<void, ptr<mxlist>, int>::ref cbmxlist;
        ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- spf.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- quota.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- rcptcheck.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
--- rcptcheck.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- quota.o ---
../libasync/aios.h:116:20: note: in instantiation of template class 'ref<aios>' requested here
--- rcptcheck.o ---
../libasync/dns.h:109:9: note: in instantiation of template class 'callback<void, ptr<mxlist>, int, void>' requested here
--- quota.o ---
  static ref<aios> alloc (int fd, size_t rbsz = defrbufsize)
                   ^
--- spf.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
typedef callback<void, ptr<mxlist>, int>::ref cbmxlist;
        ^
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- spf.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:112:9: note: in instantiation of template class 'callback<void, ptr<srvlist>, int, void>' requested here
--- rcptcheck.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
typedef callback<void, ptr<srvlist>, int>::ref cbsrvlist;
        ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- asmtpd.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- rcptcheck.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- spf.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
--- spf.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- asmtpd.o ---
./asmtpd.h:473:21: note: in instantiation of template class 'ptr<const mxlist>' requested here
  ptr<const mxlist> get_mxl () const { return mxl; }
                    ^
--- spf.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- rcptcheck.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
../libasync/dns.h:115:9: note: in instantiation of template class 'callback<void, ptr<txtlist>, int, void>' requested here
--- rcptcheck.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- spf.o ---
typedef callback<void, ptr<txtlist>, int>::ref cbtxtlist;
        ^
--- rcptcheck.o ---
../libasync/dns.h:112:9: note: in instantiation of template class 'callback<void, ptr<srvlist>, int, void>' requested here
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
typedef callback<void, ptr<srvlist>, int>::ref cbsrvlist;
        ^
--- spf.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- rcptcheck.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- spf.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
--- rcptcheck.o ---
../libasync/dns.h:115:9: note: in instantiation of template class 'callback<void, ptr<txtlist>, int, void>' requested here
--- spf.o ---
../libasync/dns.h:120:19: note: in instantiation of template class 'ref<callback<void, ptr<srvlist>, int, void> >' requested here
               cbsrvlist cb, bool search = false)
                         ^
--- rcptcheck.o ---
typedef callback<void, ptr<txtlist>, int>::ref cbtxtlist;
        ^
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
--- rcptcheck.o ---
In file included from ../libasync/suio++.h:30:
--- asmtpd.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- rcptcheck.o ---
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- asmtpd.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:491:9: note: in instantiation of template class 'callback<void, ref<progout>, void, void>' requested here
typedef callback<void, ref<progout> >::ref runprogcb_t;
        ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/dns.h:122:10: note: in instantiation of template class 'ptr<srvlist>' requested here
  return dns_srvbyname (strbuf ("_%s._%s.%s", srv, proto, name), cb, search);
         ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/dns.h:120:19: note: in instantiation of template class 'ref<callback<void, ptr<srvlist>, int, void> >' requested here
               cbsrvlist cb, bool search = false)
                         ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
--- rcptcheck.o ---
  typedef struct ref<T> ref;
          ^
../libasync/dns.h:122:10: note: in instantiation of template class 'ptr<srvlist>' requested here
--- vrfy.o ---
typedef callback<void, int>::ref cbi;
        ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- rcptcheck.o ---
  return dns_srvbyname (strbuf ("_%s._%s.%s", srv, proto, name), cb, search);
         ^
--- vrfy.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
--- asmtpd.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
../libasync/amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
--- asmtpd.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- vrfy.o ---
typedef callback<void, str>::ref cbs;
        ^
--- asmtpd.o ---
./asmtpd.h:524:11: note: in instantiation of template class 'callback<void, avif::disp_t, str, void>' requested here
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- asmtpd.o ---
  typedef callback<void, disp_t, str>::ref cb_t;
          ^
--- vrfy.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- vrfy.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- asmtpd.o ---
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- vrfy.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:533:14: note: in instantiation of template class 'ref<callback<void, avif::disp_t, str, void> >' requested here
  const cb_t cb;
             ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- netpath.o ---
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- asmtpd.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- netpath.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
../libasync/list.h:129:27: note: in instantiation of template class 'callback<void, avif::result *, void, void>' requested here
--- netpath.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- asmtpd.o ---
  void traverse (typename callback<void, T *>::ref cb) const {
                          ^
--- netpath.o ---
../libasync/amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
--- asmtpd.o ---
./asmtpd.h:539:32: note: in instantiation of template class 'tailq<avif::result, &avif::result::link>' requested here
--- netpath.o ---
typedef callback<void, int>::ref cbi;
        ^
--- asmtpd.o ---
  tailq<result, &result::link> reslist;
                               ^
In file included from asmtpd.C:24:
--- netpath.o ---
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- asmtpd.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- netpath.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- netpath.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- asmtpd.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- netpath.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- netpath.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- quota.o ---
  typedef struct ref<T> ref;
          ^
--- netpath.o ---
../libasync/amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
--- quota.o ---
../libasync/aios.h:161:44: note: in instantiation of template class 'ptr<aios>' requested here
--- netpath.o ---
typedef callback<void, str>::ref cbs;
        ^
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
--- quota.o ---
  aiosout (const aios_t::ptr &a) : strbuf (a->outb), s(a) { s->outstart (); }
                                           ^
--- netpath.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- netpath.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- vrfy.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- netpath.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
./asmtpd.h:571:1: warning: 'enqmsg' defined as a class here but previously declared as a struct [-Wmismatched-tags]
class enqmsg {
^
./asmtpd.h:354:1: note: did you mean class here?
struct enqmsg;
^~~~~~
class
--- runprog.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- netpath.o ---
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- runprog.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- netpath.o ---
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
../libasync/dns.h:104:9: note: in instantiation of template class 'callback<void, ptr<hostent>, int, void>' requested here
--- netpath.o ---
  typedef struct ref<T> ref;
          ^
--- runprog.o ---
typedef callback<void, ptr<hostent>, int>::ref cbhent;
        ^
--- netpath.o ---
../libasync/amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
--- netpath.o ---
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- runprog.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:109:9: note: in instantiation of template class 'callback<void, ptr<mxlist>, int, void>' requested here
typedef callback<void, ptr<mxlist>, int>::ref cbmxlist;
        ^
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- runprog.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- asmtpd.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- runprog.o ---
../libasync/dns.h:112:9: note: in instantiation of template class 'callback<void, ptr<srvlist>, int, void>' requested here
--- asmtpd.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- runprog.o ---
typedef callback<void, ptr<srvlist>, int>::ref cbsrvlist;
        ^
--- asmtpd.o ---
./asmtpd.h:617:9: note: in instantiation of template class 'callback<void, str, ptr<mxlist>, void>' requested here
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
--- asmtpd.o ---
typedef callback<void, str, ptr<mxlist> >::ref vrfycb_t;
        ^
--- runprog.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- asmtpd.o ---
In file included from asmtpd.C:24:
--- runprog.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- asmtpd.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- runprog.o ---
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- runprog.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:115:9: note: in instantiation of template class 'callback<void, ptr<txtlist>, int, void>' requested here
typedef callback<void, ptr<txtlist>, int>::ref cbtxtlist;
        ^
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- asmtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- asmtpd.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- runprog.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, str> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- runprog.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- asmtpd.o ---
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, str> &, void, void>' requested here
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- asmtpd.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
--- spf.o ---
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
--- spf.o ---
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
--- asmtpd.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
--- spf.o ---
../libasync/parseopt.h:98:9: note: in instantiation of template class 'callback<void, vec<str, 0>, str, bool *>' requested here
--- asmtpd.o ---
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- spf.o ---
typedef callback<void, vec<str>, str, bool *>::ref confcb;
        ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- asmtpd.o ---
In file included from ../libasync/suio++.h:30:
--- spf.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- spf.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/dns.h:120:19: note: in instantiation of template class 'ref<callback<void, ptr<srvlist>, int, void> >' requested here
               cbsrvlist cb, bool search = false)
                         ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:114:3: note: in instantiation of template class 'ref<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
  ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- runprog.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
  typedef struct ref<T> ref;
          ^
--- spf.o ---
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:114:15: note: in instantiation of template class 'ptr<callback<void, vec<str, 0>, str, bool *> >' requested here
--- runprog.o ---
../libasync/dns.h:122:10: note: in instantiation of template class 'ptr<srvlist>' requested here
--- spf.o ---
  confcb::ptr cnfcb;
              ^
--- runprog.o ---
  return dns_srvbyname (strbuf ("_%s._%s.%s", srv, proto, name), cb, search);
         ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:115:3: note: in instantiation of template class 'ref<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
  ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- asmtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- spf.o ---
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:115:12: note: in instantiation of template class 'ptr<callback<void, str, void, void> >' requested here
--- asmtpd.o ---
./asmtpd.h:694:11: note: in instantiation of template class 'callback<void, spf_t *, void, void>' requested here
--- spf.o ---
  cbs::ptr scb;
           ^
--- asmtpd.o ---
  typedef callback<void, spf_t *>::ref cb_t;
          ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:696:3: note: in instantiation of template class 'ref<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
  ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
--- rbl.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
./asmtpd.h:696:13: note: in instantiation of template class 'ptr<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
            ^
--- rbl.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:104:9: note: in instantiation of template class 'callback<void, ptr<hostent>, int, void>' requested here
typedef callback<void, ptr<hostent>, int>::ref cbhent;
        ^
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:713:20: note: in instantiation of template class 'ref<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
  ref<bhash<str> > loopcheck;
                   ^
--- rbl.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:109:9: note: in instantiation of template class 'callback<void, ptr<mxlist>, int, void>' requested here
typedef callback<void, ptr<mxlist>, int>::ref cbmxlist;
        ^
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- avif.o ---
In file included from avif.C:26:
--- rbl.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- avif.o ---
./rawnet.h:129:1: warning: 'synfp_collect' defined as a class here but previously declared as a struct [-Wmismatched-tags]
--- rbl.o ---
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
class synfp_collect {
^
--- rbl.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- rbl.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
--- rbl.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- avif.o ---
./asmtpd.h:63:1: note: did you mean class here?
--- quota.o ---
./asmtpd.h:73:16: note: in instantiation of template class 'ptr<hostent>' requested here
--- rbl.o ---
../libasync/dns.h:112:9: note: in instantiation of template class 'callback<void, ptr<srvlist>, int, void>' requested here
--- quota.o ---
  ptr<hostent> h;
               ^
--- avif.o ---
struct synfp_collect;
^~~~~~
class
--- rbl.o ---
typedef callback<void, ptr<srvlist>, int>::ref cbsrvlist;
        ^
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- rbl.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- vrfy.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- rbl.o ---
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
--- rbl.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- vrfy.o ---
../libasync/async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, conftab_el *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
--- rbl.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
--- rbl.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
--- rbl.o ---
../libasync/dns.h:115:9: note: in instantiation of template class 'callback<void, ptr<txtlist>, int, void>' requested here
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- avif.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- spf.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- rbl.o ---
typedef callback<void, ptr<txtlist>, int>::ref cbtxtlist;
        ^
--- spf.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- asmtpd.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- avif.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, synfp_state<synfp_collect::tcbs, true>::synfp_entry *, void, void>' requested here
--- asmtpd.o ---
In file included from ../libasync/callback.h:612:
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- asmtpd.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- asmtpd.o ---
  typedef struct ref<T> ref;
          ^
./asmtpd.h:762:20: note: in instantiation of template class 'ptr<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
--- avif.o ---
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink>' requested here
--- spf.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
  : public ihash_core<V, field>
           ^
--- rbl.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- asmtpd.o ---
         ptr<bhash<str> > loopcheck = NULL, int recdepth = 0);
                          ^
--- avif.o ---
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::sin, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
--- spf.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const conftab_el &, void, void>' requested here
--- avif.o ---
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- avif.o ---
./rawnet.h:136:11: note: in instantiation of template class 'synfp_state<synfp_collect::tcbs, true>' requested here
--- quota.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- spf.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
--- quota.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
--- avif.o ---
  typedef synfp_state<tcbs, true>::synfp_entry cbentry_t;
          ^
--- quota.o ---
  typedef struct ref<T> ref;
          ^
--- spf.o ---
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
--- quota.o ---
./asmtpd.h:74:19: note: in instantiation of template class 'ptr<rbl_status>' requested here
--- avif.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
  ptr<rbl_status> rs;
                  ^
--- spf.o ---
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
--- avif.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- avif.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const synfp_state<synfp_collect::tcbs, true>::synfp_entry &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink>' requested here
  : public ihash_core<V, field>
           ^
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::sin, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
./rawnet.h:136:11: note: in instantiation of template class 'synfp_state<synfp_collect::tcbs, true>' requested here
  typedef synfp_state<tcbs, true>::synfp_entry cbentry_t;
          ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- rbl.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- avif.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rbl.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/dns.h:120:19: note: in instantiation of template class 'ref<callback<void, ptr<srvlist>, int, void> >' requested here
               cbsrvlist cb, bool search = false)
                         ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./asmtpd.h:770:9: note: in instantiation of template class 'callback<void, spf_result, str, str>' requested here
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- asmtpd.o ---
typedef callback<void, spf_result, str, str>::ref spfckcb_t;
        ^
--- rcptcheck.o ---
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/parseopt.h:98:9: note: in instantiation of template class 'callback<void, vec<str, 0>, str, bool *>' requested here
--- asmtpd.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- rcptcheck.o ---
typedef callback<void, vec<str>, str, bool *>::ref confcb;
        ^
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- avif.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, synfp_state<str, false>::synfp_entry *, void, void>' requested here
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- avif.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- rbl.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- avif.o ---
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::hlink>' requested here
--- rbl.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- avif.o ---
  : public ihash_core<V, field>
           ^
--- rbl.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::sin, &synfp_state<str, false>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
--- rbl.o ---
  typedef struct ref<T> ref;
          ^
../libasync/dns.h:122:10: note: in instantiation of template class 'ptr<srvlist>' requested here
--- avif.o ---
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
./rawnet.h:137:11: note: in instantiation of template class 'synfp_state<str, false>' requested here
  typedef synfp_state<str, false>::synfp_entry fpentry_t;
          ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
--- rbl.o ---
  return dns_srvbyname (strbuf ("_%s._%s.%s", srv, proto, name), cb, search);
         ^
--- avif.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- avif.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- vrfy.o ---
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const synfp_state<str, false>::synfp_entry &, void, void>' requested here
--- netpath.o ---
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
--- avif.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::hlink>' requested here
--- netpath.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- vrfy.o ---
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
--- netpath.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- avif.o ---
  : public ihash_core<V, field>
           ^
--- netpath.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::sin, &synfp_state<str, false>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
--- netpath.o ---
  typedef struct ptr<T> ptr;
          ^
--- avif.o ---
./rawnet.h:137:11: note: in instantiation of template class 'synfp_state<str, false>' requested here
--- vrfy.o ---
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
--- netpath.o ---
../libasync/async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
--- avif.o ---
  typedef synfp_state<str, false>::synfp_entry fpentry_t;
          ^
--- netpath.o ---
void chldcb (pid_t, cbi::ptr);
                    ^
--- vrfy.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
--- vrfy.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- vrfy.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- vrfy.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:114:3: note: in instantiation of template class 'ref<callback<void, vec<str, 0>, str, bool *> >' requested here
--- vrfy.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
--- rcptcheck.o ---
  confcb::ptr cnfcb;
  ^
--- vrfy.o ---
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:114:15: note: in instantiation of template class 'ptr<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
              ^
--- avif.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./rawnet.h:176:11: note: in instantiation of template class 'callback<void, icmpsock::icmp_info *, void, void>' requested here
  typedef callback<void, icmp_info *>::ref cb_t;
          ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:115:3: note: in instantiation of template class 'ref<callback<void, str, void, void> >' requested here
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- rcptcheck.o ---
  cbs::ptr scb;
  ^
--- avif.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- netpath.o ---
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- avif.o ---
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- netpath.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
  typedef struct ptr<T> ptr;
          ^
./rawnet.h:180:16: note: in instantiation of template class 'ref<callback<void, icmpsock::icmp_info *, void, void> >' requested here
    const cb_t cb;
               ^
--- netpath.o ---
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- rcptcheck.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:115:12: note: in instantiation of template class 'ptr<callback<void, str, void, void> >' requested here
--- avif.o ---
  typedef struct ptr<T> ptr;
          ^
./rawnet.h:185:25: note: in instantiation of template class 'ref<icmpsock>' requested here
--- rcptcheck.o ---
  cbs::ptr scb;
           ^
--- netpath.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
    const ref<icmpsock> is;
                        ^
--- netpath.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, icmpsock::icmpclnt *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<icmpsock::icmpclnt, &icmpsock::icmpclnt::hlink>' requested here
  : public ihash_core<V, field>
           ^
./rawnet.h:208:30: note: in instantiation of template class 'ihash<const in_addr, icmpsock::icmpclnt, &icmpsock::icmpclnt::addr, &icmpsock::icmpclnt::hlink, hashfn<const in_addr>, equals<const in_addr> >' requested here
        &icmpsock::icmpclnt::hlink> cbtab;
                                    ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const icmpsock::icmpclnt &, void, void>' requested here
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- avif.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
--- quota.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- avif.o ---
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<icmpsock::icmpclnt, &icmpsock::icmpclnt::hlink>' requested here
--- quota.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
  : public ihash_core<V, field>
           ^
--- quota.o ---
  typedef struct ref<callback<R, B1> > ref;
--- avif.o ---
./rawnet.h:208:30: note: in instantiation of template class 'ihash<const in_addr, icmpsock::icmpclnt, &icmpsock::icmpclnt::addr, &icmpsock::icmpclnt::hlink, hashfn<const in_addr>, equals<const in_addr> >' requested here
--- quota.o ---
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<sockaddr_in, void> *, void, void>' requested here
--- avif.o ---
        &icmpsock::icmpclnt::hlink> cbtab;
                                    ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- quota.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- avif.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- avif.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
  bhash<sockaddr_in> bindaddrh;
                     ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<sockaddr_in, void> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
  bhash<sockaddr_in> bindaddrh;
                     ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./rawnet.h:232:17: note: in instantiation of template class 'ref<icmpsock::icmpclnt>' requested here
  ref<icmpclnt> setcb (in_addr a, cb_t cb)
                ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, conftab_el *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
--- rcptcheck.o ---
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
--- avif.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- rcptcheck.o ---
  : public ihash_core<V, field>
           ^
--- avif.o ---
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
--- avif.o ---
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./rawnet.h:240:11: note: in instantiation of template class 'callback<void, int, in_addr *, int>' requested here
--- rcptcheck.o ---
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
--- avif.o ---
  typedef callback<void, int, in_addr *, int>::ref cb_t;
          ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- rcptcheck.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- avif.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- quota.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
--- rcptcheck.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
--- rcptcheck.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- quota.o ---
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
--- rcptcheck.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const conftab_el &, void, void>' requested here
--- quota.o ---
  bhash<str> nocheck;
             ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- quota.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- rcptcheck.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
--- runprog.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- quota.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
--- runprog.o ---
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
  : public ihash_core<V, field>
           ^
--- quota.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rcptcheck.o ---
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
--- runprog.o ---
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/parseopt.h:98:9: note: in instantiation of template class 'callback<void, vec<str, 0>, str, bool *>' requested here
--- rcptcheck.o ---
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
--- runprog.o ---
typedef callback<void, vec<str>, str, bool *>::ref confcb;
        ^
--- rcptcheck.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
--- quota.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- rcptcheck.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, void> &, void, void>' requested here
--- runprog.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- quota.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
  bhash<str> nocheck;
             ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:114:3: note: in instantiation of template class 'ref<callback<void, vec<str, 0>, str, bool *> >' requested here
--- avif.o ---
  typedef struct ptr<T> ptr;
          ^
--- runprog.o ---
  confcb::ptr cnfcb;
  ^
--- avif.o ---
../libasync/vec.h:43:27: note: in instantiation of template class 'ref<callback<void, int, in_addr *, int> >' requested here
    char defbuf_space[N * sizeof (elm_t)];
                          ^
../libasync/vec.h:41:3: note: in instantiation of member class 'vec_base<ref<callback<void, int, in_addr *, int> >, 1>::(anonymous)' requested here
  union {
  ^
../libasync/vec.h:74:52: note: in instantiation of template class 'vec_base<ref<callback<void, int, in_addr *, int> >, 1>' requested here
template<class T, size_t N = 0> class vec : public vec_base<T, N> {
                                                   ^
./rawnet.h:261:16: note: in instantiation of template class 'vec<ref<callback<void, int, in_addr *, int> >, 1>' requested here
--- auth.o ---
88 warnings generated.
--- avif.o ---
  vec<cb_t, 1> cbvec;
               ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:114:15: note: in instantiation of template class 'ptr<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
              ^
--- quota.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, long> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
--- quota.o ---
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
--- runprog.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- quota.o ---
  qhash<str, time_t> warn_filter;
                     ^
--- runprog.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- runprog.o ---
  typedef struct ptr<T> ptr;
--- quota.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- runprog.o ---
          ^
../libasync/parseopt.h:115:3: note: in instantiation of template class 'ref<callback<void, str, void, void> >' requested here
--- quota.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
  cbs::ptr scb;
  ^
--- quota.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, long> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- quota.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
--- avif.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- avif.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- quota.o ---
  qhash<str, time_t> warn_filter;
                     ^
--- runprog.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
--- avif.o ---
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, avcount *, void, void>' requested here
--- quota.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- runprog.o ---
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:115:12: note: in instantiation of template class 'ptr<callback<void, str, void, void> >' requested here
--- quota.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
  cbs::ptr scb;
           ^
--- avif.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<avcount, &avcount::link>' requested here
--- quota.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- avif.o ---
  : public ihash_core<V, field>
           ^
avif.C:28:60: note: in instantiation of template class 'ihash<const unsigned int, avcount, &avcount::uid, &avcount::link, hashfn<const unsigned int>, equals<const unsigned int> >' requested here
ihash<const uid_t, avcount, &avcount::uid, &avcount::link> avctab;
                                                           ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const avcount &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<avcount, &avcount::link>' requested here
  : public ihash_core<V, field>
           ^
avif.C:28:60: note: in instantiation of template class 'ihash<const unsigned int, avcount, &avcount::uid, &avcount::link, hashfn<const unsigned int>, equals<const unsigned int> >' requested here
ihash<const uid_t, avcount, &avcount::uid, &avcount::link> avctab;
                                                           ^
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/parseopt.h:98:9: note: in instantiation of template class 'callback<void, vec<str, 0>, str, bool *>' requested here
typedef callback<void, vec<str>, str, bool *>::ref confcb;
        ^
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- vrfy.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
--- vrfy.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
--- rbl.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
../libasync/dns.h:104:9: note: in instantiation of template class 'callback<void, ptr<hostent>, int, void>' requested here
--- rbl.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:114:3: note: in instantiation of template class 'ref<callback<void, vec<str, 0>, str, bool *> >' requested here
--- vrfy.o ---
typedef callback<void, ptr<hostent>, int>::ref cbhent;
        ^
--- rbl.o ---
  confcb::ptr cnfcb;
  ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:114:15: note: in instantiation of template class 'ptr<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
              ^
--- vrfy.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:109:9: note: in instantiation of template class 'callback<void, ptr<mxlist>, int, void>' requested here
--- asmtpd.o ---
In file included from asmtpd.C:25:
./rawnet.h:129:1: warning: 'synfp_collect' defined as a class here but previously declared as a struct [-Wmismatched-tags]
--- vrfy.o ---
typedef callback<void, ptr<mxlist>, int>::ref cbmxlist;
        ^
--- asmtpd.o ---
class synfp_collect {
^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- asmtpd.o ---
./asmtpd.h:63:1: note: did you mean class here?
struct synfp_collect;
^~~~~~
class
--- vrfy.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:112:9: note: in instantiation of template class 'callback<void, ptr<srvlist>, int, void>' requested here
typedef callback<void, ptr<srvlist>, int>::ref cbsrvlist;
        ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:115:3: note: in instantiation of template class 'ref<callback<void, str, void, void> >' requested here
--- runprog.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- vrfy.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- runprog.o ---
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, conftab_el *, void, void>' requested here
--- rbl.o ---
  cbs::ptr scb;
  ^
--- runprog.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- runprog.o ---
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
--- asmtpd.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- asmtpd.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- runprog.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, synfp_state<synfp_collect::tcbs, true>::synfp_entry *, void, void>' requested here
--- vrfy.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:115:9: note: in instantiation of template class 'callback<void, ptr<txtlist>, int, void>' requested here
--- runprog.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- asmtpd.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink>' requested here
  : public ihash_core<V, field>
           ^
--- vrfy.o ---
typedef callback<void, ptr<txtlist>, int>::ref cbtxtlist;
        ^
--- asmtpd.o ---
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::sin, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
--- asmtpd.o ---
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
--- vrfy.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- asmtpd.o ---
./rawnet.h:136:11: note: in instantiation of template class 'synfp_state<synfp_collect::tcbs, true>' requested here
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
--- vrfy.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- rbl.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- vrfy.o ---
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
  typedef synfp_state<tcbs, true>::synfp_entry cbentry_t;
          ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- vrfy.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- asmtpd.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- rbl.o ---
  typedef struct ref<T> ref;
          ^
--- runprog.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
../libasync/parseopt.h:115:12: note: in instantiation of template class 'ptr<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
           ^
--- asmtpd.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- runprog.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const conftab_el &, void, void>' requested here
--- asmtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
--- asmtpd.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const synfp_state<synfp_collect::tcbs, true>::synfp_entry &, void, void>' requested here
--- runprog.o ---
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
--- asmtpd.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink>' requested here
  : public ihash_core<V, field>
           ^
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::sin, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
--- runprog.o ---
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
--- asmtpd.o ---
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- asmtpd.o ---
./rawnet.h:136:11: note: in instantiation of template class 'synfp_state<synfp_collect::tcbs, true>' requested here
--- runprog.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
  typedef synfp_state<tcbs, true>::synfp_entry cbentry_t;
          ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
--- runprog.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- asmtpd.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/dns.h:120:19: note: in instantiation of template class 'ref<callback<void, ptr<srvlist>, int, void> >' requested here
               cbsrvlist cb, bool search = false)
                         ^
--- asmtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, synfp_state<str, false>::synfp_entry *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::hlink>' requested here
  : public ihash_core<V, field>
           ^
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::sin, &synfp_state<str, false>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
./rawnet.h:137:11: note: in instantiation of template class 'synfp_state<str, false>' requested here
  typedef synfp_state<str, false>::synfp_entry fpentry_t;
          ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
--- asmtpd.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- vrfy.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- asmtpd.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- vrfy.o ---
  typedef struct ref<T> ref;
          ^
../libasync/dns.h:122:10: note: in instantiation of template class 'ptr<srvlist>' requested here
--- asmtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
  return dns_srvbyname (strbuf ("_%s._%s.%s", srv, proto, name), cb, search);
         ^
--- asmtpd.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const synfp_state<str, false>::synfp_entry &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::hlink>' requested here
  : public ihash_core<V, field>
           ^
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::sin, &synfp_state<str, false>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
./rawnet.h:137:11: note: in instantiation of template class 'synfp_state<str, false>' requested here
  typedef synfp_state<str, false>::synfp_entry fpentry_t;
          ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
--- quota.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- quota.o ---
  typedef struct ref<T> ref;
          ^
--- spf.o ---
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
./asmtpd.h:373:31: note: in instantiation of template class 'ptr<const rbl_status>' requested here
--- spf.o ---
  typedef struct ref<T> ref;
          ^
--- quota.o ---
  const ptr<const rbl_status> rblcon;
                              ^
--- spf.o ---
../libasync/aios.h:45:9: note: in instantiation of template class 'ptr<callback<void, str, int, void> >' requested here
  rcb_t rcb;
        ^
--- asmtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./rawnet.h:176:11: note: in instantiation of template class 'callback<void, icmpsock::icmp_info *, void, void>' requested here
  typedef callback<void, icmp_info *>::ref cb_t;
          ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- asmtpd.o ---
./rawnet.h:180:16: note: in instantiation of template class 'ref<callback<void, icmpsock::icmp_info *, void, void> >' requested here
    const cb_t cb;
               ^
--- quota.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:386:15: note: in instantiation of template class 'ptr<mxlist>' requested here
  ptr<mxlist> mxl;
              ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, conftab_el *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- rbl.o ---
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
--- asmtpd.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- asmtpd.o ---
./rawnet.h:185:25: note: in instantiation of template class 'ref<icmpsock>' requested here
--- rbl.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
    const ref<icmpsock> is;
                        ^
--- rbl.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const conftab_el &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- rbl.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, icmpsock::icmpclnt *, void, void>' requested here
--- rbl.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- asmtpd.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- asmtpd.o ---
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<icmpsock::icmpclnt, &icmpsock::icmpclnt::hlink>' requested here
--- spf.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- asmtpd.o ---
  : public ihash_core<V, field>
           ^
--- spf.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
./rawnet.h:208:30: note: in instantiation of template class 'ihash<const in_addr, icmpsock::icmpclnt, &icmpsock::icmpclnt::addr, &icmpsock::icmpclnt::hlink, hashfn<const in_addr>, equals<const in_addr> >' requested here
--- spf.o ---
  typedef struct ptr<T> ptr;
          ^
--- asmtpd.o ---
        &icmpsock::icmpclnt::hlink> cbtab;
                                    ^
--- spf.o ---
../libasync/aios.h:58:39: note: in instantiation of template class 'ref<callback<void, str, int, void> >' requested here
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
    { infn = &aios::rnone; rcb_t::ref cb = rcb; rcb = NULL; (*cb) (s, err); }
                                      ^
--- asmtpd.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const icmpsock::icmpclnt &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<icmpsock::icmpclnt, &icmpsock::icmpclnt::hlink>' requested here
  : public ihash_core<V, field>
           ^
./rawnet.h:208:30: note: in instantiation of template class 'ihash<const in_addr, icmpsock::icmpclnt, &icmpsock::icmpclnt::addr, &icmpsock::icmpclnt::hlink, hashfn<const in_addr>, equals<const in_addr> >' requested here
        &icmpsock::icmpclnt::hlink> cbtab;
                                    ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:454:28: note: in instantiation of template class 'ptr<const hostent>' requested here
  const ptr<const hostent> ptr_cache;
                           ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./rawnet.h:232:17: note: in instantiation of template class 'ref<icmpsock::icmpclnt>' requested here
  ref<icmpclnt> setcb (in_addr a, cb_t cb)
                ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:67:29: note: in instantiation of template class 'ptr<callback<void, int, void, void> >' requested here
  virtual void mkwcb (wcb_t cb) { if (fd >= 0) (*cb) (err); }
                            ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:473:21: note: in instantiation of template class 'ptr<const mxlist>' requested here
  ptr<const mxlist> get_mxl () const { return mxl; }
                    ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./rawnet.h:240:11: note: in instantiation of template class 'callback<void, int, in_addr *, int>' requested here
  typedef callback<void, int, in_addr *, int>::ref cb_t;
          ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- spf.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:116:20: note: in instantiation of template class 'ref<aios>' requested here
  static ref<aios> alloc (int fd, size_t rbsz = defrbufsize)
                   ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:491:9: note: in instantiation of template class 'callback<void, ref<progout>, void, void>' requested here
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
typedef callback<void, ref<progout> >::ref runprogcb_t;
        ^
--- asmtpd.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/vec.h:43:27: note: in instantiation of template class 'ref<callback<void, int, in_addr *, int> >' requested here
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- asmtpd.o ---
    char defbuf_space[N * sizeof (elm_t)];
                          ^
--- quota.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- asmtpd.o ---
../libasync/vec.h:41:3: note: in instantiation of member class 'vec_base<ref<callback<void, int, in_addr *, int> >, 1>::(anonymous)' requested here
  union {
  ^
../libasync/vec.h:74:52: note: in instantiation of template class 'vec_base<ref<callback<void, int, in_addr *, int> >, 1>' requested here
--- quota.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
template<class T, size_t N = 0> class vec : public vec_base<T, N> {
                                                   ^
./rawnet.h:261:16: note: in instantiation of template class 'vec<ref<callback<void, int, in_addr *, int> >, 1>' requested here
--- quota.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- asmtpd.o ---
  vec<cb_t, 1> cbvec;
               ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:161:44: note: in instantiation of template class 'ptr<aios>' requested here
  aiosout (const aios_t::ptr &a) : strbuf (a->outb), s(a) { s->outstart (); }
                                           ^
--- quota.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:524:11: note: in instantiation of template class 'callback<void, avif::disp_t, str, void>' requested here
  typedef callback<void, disp_t, str>::ref cb_t;
          ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/list.h:62:27: note: in instantiation of template class 'callback<void, listener *, void, void>' requested here
  void traverse (typename callback<void, T*>::ref cb) const {
                          ^
asmtpd.C:54:40: note: in instantiation of template class 'list<listener, &listener::link>' requested here
static list<listener, &listener::link> listen_list;
                                       ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- netpath.o ---
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:45:9: note: in instantiation of template class 'ptr<callback<void, str, int, void> >' requested here
  rcb_t rcb;
        ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- vrfy.o ---
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- vrfy.o ---
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
--- quota.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
../libasync/parseopt.h:98:9: note: in instantiation of template class 'callback<void, vec<str, 0>, str, bool *>' requested here
--- quota.o ---
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:533:14: note: in instantiation of template class 'ref<callback<void, avif::disp_t, str, void> >' requested here
  const cb_t cb;
             ^
--- vrfy.o ---
typedef callback<void, vec<str>, str, bool *>::ref confcb;
        ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- asmtpd.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const listener &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<listener, &listener::hlink>' requested here
  : public ihash_core<V, field>
           ^
asmtpd.C:56:41: note: in instantiation of template class 'ihash<const sockaddr_in, listener, &listener::sin, &listener::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
             &listener::sin, &listener::hlink> listen_tab;
                                               ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/list.h:129:27: note: in instantiation of template class 'callback<void, avif::result *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) const {
                          ^
./asmtpd.h:539:32: note: in instantiation of template class 'tailq<avif::result, &avif::result::link>' requested here
  tailq<result, &result::link> reslist;
                               ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:114:3: note: in instantiation of template class 'ref<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
  ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- quota.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- vrfy.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:114:15: note: in instantiation of template class 'ptr<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
              ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:115:3: note: in instantiation of template class 'ref<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
  ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:115:12: note: in instantiation of template class 'ptr<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
           ^
--- quota.o ---
In file included from quota.C:24:
./asmtpd.h:571:1: warning: 'enqmsg' defined as a class here but previously declared as a struct [-Wmismatched-tags]
class enqmsg {
^
--- netpath.o ---
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:58:39: note: in instantiation of template class 'ref<callback<void, str, int, void> >' requested here
--- quota.o ---
./asmtpd.h:354:1: note: did you mean class here?
struct enqmsg;
^~~~~~
class
--- netpath.o ---
    { infn = &aios::rnone; rcb_t::ref cb = rcb; rcb = NULL; (*cb) (s, err); }
                                      ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:73:16: note: in instantiation of template class 'ptr<hostent>' requested here
  ptr<hostent> h;
               ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:74:19: note: in instantiation of template class 'ptr<rbl_status>' requested here
  ptr<rbl_status> rs;
                  ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, conftab_el *, void, void>' requested here
--- quota.o ---
In file included from quota.C:24:
--- vrfy.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- quota.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- vrfy.o ---
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
--- quota.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
--- quota.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:617:9: note: in instantiation of template class 'callback<void, str, ptr<mxlist>, void>' requested here
--- vrfy.o ---
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
--- quota.o ---
typedef callback<void, str, ptr<mxlist> >::ref vrfycb_t;
        ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
--- vrfy.o ---
In file included from ../libasync/suio++.h:30:
--- quota.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- vrfy.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- netpath.o ---
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
--- vrfy.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- netpath.o ---
../libasync/aios.h:67:29: note: in instantiation of template class 'ptr<callback<void, int, void, void> >' requested here
--- auth.o ---
mv -f .deps/auth.Tpo .deps/auth.Po
--- vrfy.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const conftab_el &, void, void>' requested here
--- netpath.o ---
  virtual void mkwcb (wcb_t cb) { if (fd >= 0) (*cb) (err); }
                            ^
--- vrfy.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, str> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- netpath.o ---
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:116:20: note: in instantiation of template class 'ref<aios>' requested here
--- quota.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- netpath.o ---
  static ref<aios> alloc (int fd, size_t rbsz = defrbufsize)
                   ^
--- quota.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, str> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<sockaddr_in, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
  bhash<sockaddr_in> bindaddrh;
                     ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<sockaddr_in, void> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
  bhash<sockaddr_in> bindaddrh;
                     ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- spf.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rcptcheck.o ---
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:45:9: note: in instantiation of template class 'ptr<callback<void, str, int, void> >' requested here
  rcb_t rcb;
        ^
--- starttls.o ---
--- netpath.o ---
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:161:44: note: in instantiation of template class 'ptr<aios>' requested here
  aiosout (const aios_t::ptr &a) : strbuf (a->outb), s(a) { s->outstart (); }
                                           ^
--- quota.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:694:11: note: in instantiation of template class 'callback<void, spf_t *, void, void>' requested here
  typedef callback<void, spf_t *>::ref cb_t;
          ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:696:3: note: in instantiation of template class 'ref<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
  ^
--- spf.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- spf.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
--- quota.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
  bhash<str> nocheck;
             ^
--- quota.o ---
  typedef struct ref<T> ref;
          ^
./asmtpd.h:696:13: note: in instantiation of template class 'ptr<callback<void, spf_t *, void, void> >' requested here
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- quota.o ---
  cb_t::ptr cb;
            ^
--- spf.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- spf.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, void> &, void, void>' requested here
--- avif.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
avif.C:159:6: note: in instantiation of template class 'ref<callback<void, ptr<hostent>, int, void> >' requested here
--- spf.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
--- avif.o ---
                          wrap (this, &avif::dns_a_cb, dnsarx[1], rp),
                          ^
--- spf.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
  bhash<str> nocheck;
             ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:58:39: note: in instantiation of template class 'ref<callback<void, str, int, void> >' requested here
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
    { infn = &aios::rnone; rcb_t::ref cb = rcb; rcb = NULL; (*cb) (s, err); }
                                      ^
--- quota.o ---
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:713:20: note: in instantiation of template class 'ref<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
  ref<bhash<str> > loopcheck;
                   ^
--- spf.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, long> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
  qhash<str, time_t> warn_filter;
                     ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- quota.o ---
In file included from quota.C:24:
--- spf.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- quota.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- spf.o ---
In file included from ../libasync/suio++.h:30:
--- quota.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- spf.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
--- spf.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
./asmtpd.h:762:20: note: in instantiation of template class 'ptr<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- quota.o ---
         ptr<bhash<str> > loopcheck = NULL, int recdepth = 0);
                          ^
--- rcptcheck.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
--- spf.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
../libasync/aios.h:67:29: note: in instantiation of template class 'ptr<callback<void, int, void, void> >' requested here
--- spf.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- rcptcheck.o ---
  virtual void mkwcb (wcb_t cb) { if (fd >= 0) (*cb) (err); }
                            ^
--- spf.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, long> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
  qhash<str, time_t> warn_filter;
                     ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- starttls.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT starttls.o -MD -MP -MF .deps/starttls.Tpo -c -o starttls.o starttls.C
--- spf.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:45:9: note: in instantiation of template class 'ptr<callback<void, str, int, void> >' requested here
  rcb_t rcb;
        ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./asmtpd.h:770:9: note: in instantiation of template class 'callback<void, spf_result, str, str>' requested here
typedef callback<void, spf_result, str, str>::ref spfckcb_t;
        ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- rcptcheck.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- quota.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- avif.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
  typedef struct ptr<T> ptr;
          ^
--- avif.o ---
  typedef struct ptr<T> ptr;
          ^
--- rcptcheck.o ---
../libasync/aios.h:116:20: note: in instantiation of template class 'ref<aios>' requested here
--- avif.o ---
avif.C:181:4: note: in instantiation of template class 'ref<callback<void, ptr<mxlist>, int, void> >' requested here
--- quota.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- avif.o ---
                        wrap (this, &avif::dns_mx_cb, dnsmxrx[1], rp),
                        ^
--- rcptcheck.o ---
  static ref<aios> alloc (int fd, size_t rbsz = defrbufsize)
                   ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:45:9: note: in instantiation of template class 'ptr<callback<void, str, int, void> >' requested here
  rcb_t rcb;
        ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
avif.C:189:4: note: in instantiation of template class 'ptr<txtlist>' requested here
                        wrap (this, &avif::dns_txt_cb, dnstxtrx[1], rp),
                        ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:58:39: note: in instantiation of template class 'ref<callback<void, str, int, void> >' requested here
    { infn = &aios::rnone; rcb_t::ref cb = rcb; rcb = NULL; (*cb) (s, err); }
                                      ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
avif.C:189:4: note: in instantiation of template class 'ref<callback<void, ptr<txtlist>, int, void> >' requested here
                        wrap (this, &avif::dns_txt_cb, dnstxtrx[1], rp),
                        ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:58:39: note: in instantiation of template class 'ref<callback<void, str, int, void> >' requested here
    { infn = &aios::rnone; rcb_t::ref cb = rcb; rcb = NULL; (*cb) (s, err); }
                                      ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
asmtpd.C:188:19: note: in instantiation of template class 'ref<callback<void, str, ptr<hostent>, int> >' requested here
    identptr (fd, wrap (this, &newcon::ident_cb), opt->ident_timeout);
                  ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
asmtpd.C:192:35: note: in instantiation of template class 'ref<callback<void, ptr<hostent>, int, void> >' requested here
    dns_hostbyaddr (sin.sin_addr, wrap (this, &newcon::ptr_cb));
                                  ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:67:29: note: in instantiation of template class 'ptr<callback<void, int, void, void> >' requested here
  virtual void mkwcb (wcb_t cb) { if (fd >= 0) (*cb) (err); }
                            ^
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:161:44: note: in instantiation of template class 'ptr<aios>' requested here
  aiosout (const aios_t::ptr &a) : strbuf (a->outb), s(a) { s->outstart (); }
                                           ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:67:29: note: in instantiation of template class 'ptr<callback<void, int, void, void> >' requested here
  virtual void mkwcb (wcb_t cb) { if (fd >= 0) (*cb) (err); }
                            ^
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:373:31: note: in instantiation of template class 'ptr<const rbl_status>' requested here
  const ptr<const rbl_status> rblcon;
                              ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- rbl.o ---
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:116:20: note: in instantiation of template class 'ref<aios>' requested here
  static ref<aios> alloc (int fd, size_t rbsz = defrbufsize)
                   ^
--- runprog.o ---
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:116:20: note: in instantiation of template class 'ref<aios>' requested here
  static ref<aios> alloc (int fd, size_t rbsz = defrbufsize)
                   ^
--- spf.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:386:15: note: in instantiation of template class 'ptr<mxlist>' requested here
  ptr<mxlist> mxl;
              ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:454:28: note: in instantiation of template class 'ptr<const hostent>' requested here
  const ptr<const hostent> ptr_cache;
                           ^
--- netpath.o ---
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./rawnet.h:132:9: note: in instantiation of template class 'ref<callback<void, str, void, void> >' requested here
    cbs cb;
        ^
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, synfp_state<synfp_collect::tcbs, true>::synfp_entry *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink>' requested here
  : public ihash_core<V, field>
           ^
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::sin, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
./rawnet.h:136:11: note: in instantiation of template class 'synfp_state<synfp_collect::tcbs, true>' requested here
  typedef synfp_state<tcbs, true>::synfp_entry cbentry_t;
          ^
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const synfp_state<synfp_collect::tcbs, true>::synfp_entry &, void, void>' requested here
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- netpath.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink>' requested here
  : public ihash_core<V, field>
           ^
--- spf.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- netpath.o ---
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::sin, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
--- spf.o ---
  typedef struct ref<T> ref;
          ^
--- netpath.o ---
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
./rawnet.h:136:11: note: in instantiation of template class 'synfp_state<synfp_collect::tcbs, true>' requested here
--- spf.o ---
./asmtpd.h:473:21: note: in instantiation of template class 'ptr<const mxlist>' requested here
--- netpath.o ---
  typedef synfp_state<tcbs, true>::synfp_entry cbentry_t;
          ^
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- spf.o ---
  ptr<const mxlist> get_mxl () const { return mxl; }
                    ^
--- netpath.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:161:44: note: in instantiation of template class 'ptr<aios>' requested here
  aiosout (const aios_t::ptr &a) : strbuf (a->outb), s(a) { s->outstart (); }
                                           ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:161:44: note: in instantiation of template class 'ptr<aios>' requested here
  aiosout (const aios_t::ptr &a) : strbuf (a->outb), s(a) { s->outstart (); }
                                           ^
--- netpath.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, synfp_state<str, false>::synfp_entry *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::hlink>' requested here
  : public ihash_core<V, field>
           ^
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::sin, &synfp_state<str, false>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
./rawnet.h:137:11: note: in instantiation of template class 'synfp_state<str, false>' requested here
  typedef synfp_state<str, false>::synfp_entry fpentry_t;
          ^
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const synfp_state<str, false>::synfp_entry &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::hlink>' requested here
  : public ihash_core<V, field>
           ^
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::sin, &synfp_state<str, false>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
--- netpath.o ---
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
--- spf.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- netpath.o ---
./rawnet.h:137:11: note: in instantiation of template class 'synfp_state<str, false>' requested here
--- spf.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- netpath.o ---
  typedef synfp_state<str, false>::synfp_entry fpentry_t;
          ^
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:491:9: note: in instantiation of template class 'callback<void, ref<progout>, void, void>' requested here
--- netpath.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- spf.o ---
typedef callback<void, ref<progout> >::ref runprogcb_t;
        ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
asmtpd.C:237:20: note: in instantiation of template class 'ref<rbl_status>' requested here
    rbl_check_con (rs, opt->rbls, sin.sin_addr,
                   ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:73:16: note: in instantiation of template class 'ptr<hostent>' requested here
  ptr<hostent> h;
               ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
asmtpd.C:237:5: note: in instantiation of template class 'ref<rbl>' requested here
--- netpath.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
    rbl_check_con (rs, opt->rbls, sin.sin_addr,
    ^
--- netpath.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
./rawnet.h:176:11: note: in instantiation of template class 'callback<void, icmpsock::icmp_info *, void, void>' requested here
  typedef callback<void, icmp_info *>::ref cb_t;
          ^
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./rawnet.h:180:16: note: in instantiation of template class 'ref<callback<void, icmpsock::icmp_info *, void, void> >' requested here
    const cb_t cb;
               ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:74:19: note: in instantiation of template class 'ptr<rbl_status>' requested here
  ptr<rbl_status> rs;
                  ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- netpath.o ---
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
  typedef struct ref<T> ref;
          ^
--- netpath.o ---
  typedef struct ptr<T> ptr;
          ^
--- vrfy.o ---
../libasync/aios.h:45:9: note: in instantiation of template class 'ptr<callback<void, str, int, void> >' requested here
--- netpath.o ---
./rawnet.h:185:25: note: in instantiation of template class 'ref<icmpsock>' requested here
--- vrfy.o ---
  rcb_t rcb;
        ^
--- netpath.o ---
    const ref<icmpsock> is;
                        ^
--- spf.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:524:11: note: in instantiation of template class 'callback<void, avif::disp_t, str, void>' requested here
--- netpath.o ---
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- spf.o ---
  typedef callback<void, disp_t, str>::ref cb_t;
          ^
--- netpath.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- netpath.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, icmpsock::icmpclnt *, void, void>' requested here
--- spf.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- netpath.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- spf.o ---
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- netpath.o ---
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<icmpsock::icmpclnt, &icmpsock::icmpclnt::hlink>' requested here
  : public ihash_core<V, field>
           ^
./rawnet.h:208:30: note: in instantiation of template class 'ihash<const in_addr, icmpsock::icmpclnt, &icmpsock::icmpclnt::addr, &icmpsock::icmpclnt::hlink, hashfn<const in_addr>, equals<const in_addr> >' requested here
--- spf.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- netpath.o ---
        &icmpsock::icmpclnt::hlink> cbtab;
                                    ^
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const icmpsock::icmpclnt &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<icmpsock::icmpclnt, &icmpsock::icmpclnt::hlink>' requested here
  : public ihash_core<V, field>
           ^
./rawnet.h:208:30: note: in instantiation of template class 'ihash<const in_addr, icmpsock::icmpclnt, &icmpsock::icmpclnt::addr, &icmpsock::icmpclnt::hlink, hashfn<const in_addr>, equals<const in_addr> >' requested here
        &icmpsock::icmpclnt::hlink> cbtab;
                                    ^
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:533:14: note: in instantiation of template class 'ref<callback<void, avif::disp_t, str, void> >' requested here
  const cb_t cb;
             ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- netpath.o ---
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- spf.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- netpath.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./rawnet.h:232:17: note: in instantiation of template class 'ref<icmpsock::icmpclnt>' requested here
--- spf.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/list.h:129:27: note: in instantiation of template class 'callback<void, avif::result *, void, void>' requested here
--- netpath.o ---
  ref<icmpclnt> setcb (in_addr a, cb_t cb)
                ^
--- spf.o ---
  void traverse (typename callback<void, T *>::ref cb) const {
                          ^
./asmtpd.h:539:32: note: in instantiation of template class 'tailq<avif::result, &avif::result::link>' requested here
  tailq<result, &result::link> reslist;
                               ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:58:39: note: in instantiation of template class 'ref<callback<void, str, int, void> >' requested here
    { infn = &aios::rnone; rcb_t::ref cb = rcb; rcb = NULL; (*cb) (s, err); }
                                      ^
--- netpath.o ---
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./rawnet.h:240:11: note: in instantiation of template class 'callback<void, int, in_addr *, int>' requested here
  typedef callback<void, int, in_addr *, int>::ref cb_t;
          ^
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- spf.o ---
In file included from spf.C:24:
./asmtpd.h:571:1: warning: 'enqmsg' defined as a class here but previously declared as a struct [-Wmismatched-tags]
class enqmsg {
^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:73:16: note: in instantiation of template class 'ptr<hostent>' requested here
  ptr<hostent> h;
               ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- netpath.o ---
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- rcptcheck.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- netpath.o ---
In file included from ../libasync/callback.h:612:
--- rcptcheck.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- netpath.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/vec.h:43:27: note: in instantiation of template class 'ref<callback<void, int, in_addr *, int> >' requested here
--- rcptcheck.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<sockaddr_in, void> *, void, void>' requested here
--- spf.o ---
./asmtpd.h:354:1: note: did you mean class here?
--- netpath.o ---
    char defbuf_space[N * sizeof (elm_t)];
                          ^
../libasync/vec.h:41:3: note: in instantiation of member class 'vec_base<ref<callback<void, int, in_addr *, int> >, 1>::(anonymous)' requested here
  union {
  ^
--- spf.o ---
struct enqmsg;
^~~~~~
class
--- netpath.o ---
../libasync/vec.h:74:52: note: in instantiation of template class 'vec_base<ref<callback<void, int, in_addr *, int> >, 1>' requested here
--- rcptcheck.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- netpath.o ---
template<class T, size_t N = 0> class vec : public vec_base<T, N> {
                                                   ^
./rawnet.h:261:16: note: in instantiation of template class 'vec<ref<callback<void, int, in_addr *, int> >, 1>' requested here
  vec<cb_t, 1> cbvec;
               ^
--- rcptcheck.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
  bhash<sockaddr_in> bindaddrh;
                     ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
--- rbl.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
  typedef struct ref<T> ref;
          ^
./asmtpd.h:73:16: note: in instantiation of template class 'ptr<hostent>' requested here
  ptr<hostent> h;
               ^
--- rcptcheck.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
--- runprog.o ---
  typedef struct ref<T> ref;
          ^
./asmtpd.h:74:19: note: in instantiation of template class 'ptr<rbl_status>' requested here
--- rcptcheck.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<sockaddr_in, void> &, void, void>' requested here
--- runprog.o ---
  ptr<rbl_status> rs;
                  ^
--- rcptcheck.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- rcptcheck.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
--- vrfy.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- vrfy.o ---
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:67:29: note: in instantiation of template class 'ptr<callback<void, int, void, void> >' requested here
--- rcptcheck.o ---
  bhash<sockaddr_in> bindaddrh;
                     ^
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- vrfy.o ---
  virtual void mkwcb (wcb_t cb) { if (fd >= 0) (*cb) (err); }
                            ^
--- rcptcheck.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:74:19: note: in instantiation of template class 'ptr<rbl_status>' requested here
  ptr<rbl_status> rs;
                  ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:116:20: note: in instantiation of template class 'ref<aios>' requested here
  static ref<aios> alloc (int fd, size_t rbsz = defrbufsize)
                   ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:617:9: note: in instantiation of template class 'callback<void, str, ptr<mxlist>, void>' requested here
typedef callback<void, str, ptr<mxlist> >::ref vrfycb_t;
        ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- rcptcheck.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
--- quota.o ---
In file included from quota.C:25:
./rawnet.h:129:1: warning: 'synfp_collect' defined as a class here but previously declared as a struct [-Wmismatched-tags]
--- rcptcheck.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
--- quota.o ---
class synfp_collect {
^
--- rcptcheck.o ---
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
  bhash<str> nocheck;
             ^
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, void> &, void, void>' requested here
--- spf.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
./asmtpd.h:63:1: note: did you mean class here?
--- spf.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- quota.o ---
struct synfp_collect;
^~~~~~
class
--- rcptcheck.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
--- spf.o ---
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, str> *, void, void>' requested here
--- rcptcheck.o ---
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
--- spf.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- rcptcheck.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
--- spf.o ---
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
--- rcptcheck.o ---
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
  bhash<str> nocheck;
             ^
--- spf.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- spf.o ---
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
--- rcptcheck.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- rcptcheck.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- spf.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, str> &, void, void>' requested here
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- spf.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
--- quota.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
--- quota.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- spf.o ---
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
--- quota.o ---
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, synfp_state<synfp_collect::tcbs, true>::synfp_entry *, void, void>' requested here
--- spf.o ---
  qhash<str, str> table;
                  ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- quota.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink>' requested here
--- spf.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
  : public ihash_core<V, field>
           ^
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::sin, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
--- spf.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
./rawnet.h:136:11: note: in instantiation of template class 'synfp_state<synfp_collect::tcbs, true>' requested here
  typedef synfp_state<tcbs, true>::synfp_entry cbentry_t;
          ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const synfp_state<synfp_collect::tcbs, true>::synfp_entry &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink>' requested here
  : public ihash_core<V, field>
           ^
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<synfp_collect::tcbs, true>::synfp_entry, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::sin, &synfp_state<synfp_collect::tcbs, true>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
./rawnet.h:136:11: note: in instantiation of template class 'synfp_state<synfp_collect::tcbs, true>' requested here
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- quota.o ---
  typedef synfp_state<tcbs, true>::synfp_entry cbentry_t;
          ^
--- asmtpd.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
--- asmtpd.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/list.h:62:27: note: in instantiation of template class 'callback<void, smtpd *, void, void>' requested here
--- quota.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- asmtpd.o ---
  void traverse (typename callback<void, T*>::ref cb) const {
                          ^
--- quota.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
asmtpd.C:377:27: note: in instantiation of template class 'list<smtpd, &smtpd::link>' requested here
  for (smtpd *s = smtplist.first, *ns; s; s = ns) {
                          ^
--- quota.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rcptcheck.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, long> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- rcptcheck.o ---
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
--- runprog.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- rcptcheck.o ---
  qhash<str, time_t> warn_filter;
                     ^
--- runprog.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- runprog.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- rcptcheck.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<sockaddr_in, void> *, void, void>' requested here
--- rcptcheck.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- runprog.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- rcptcheck.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
  bhash<sockaddr_in> bindaddrh;
                     ^
--- rcptcheck.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
--- rcptcheck.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, long> &, void, void>' requested here
--- runprog.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
--- runprog.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
--- quota.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- rcptcheck.o ---
  qhash<str, time_t> warn_filter;
                     ^
--- quota.o ---
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, synfp_state<str, false>::synfp_entry *, void, void>' requested here
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- rbl.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- rcptcheck.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- quota.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- rbl.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- rcptcheck.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::hlink>' requested here
--- rbl.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
  : public ihash_core<V, field>
           ^
--- rbl.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- rcptcheck.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::sin, &synfp_state<str, false>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
--- runprog.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- rbl.o ---
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<sockaddr_in, void> *, void, void>' requested here
--- runprog.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<sockaddr_in, void> &, void, void>' requested here
--- quota.o ---
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
./rawnet.h:137:11: note: in instantiation of template class 'synfp_state<str, false>' requested here
--- rbl.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- runprog.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- quota.o ---
  typedef synfp_state<str, false>::synfp_entry fpentry_t;
          ^
--- rbl.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- runprog.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- rbl.o ---
  bhash<sockaddr_in> bindaddrh;
                     ^
--- runprog.o ---
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- quota.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- runprog.o ---
  bhash<sockaddr_in> bindaddrh;
                     ^
--- quota.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- rbl.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- quota.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rbl.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- runprog.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- quota.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- vrfy.o ---
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:161:44: note: in instantiation of template class 'ptr<aios>' requested here
--- quota.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const synfp_state<str, false>::synfp_entry &, void, void>' requested here
--- rbl.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
--- vrfy.o ---
  aiosout (const aios_t::ptr &a) : strbuf (a->outb), s(a) { s->outstart (); }
                                           ^
--- quota.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
--- rbl.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<sockaddr_in, void> &, void, void>' requested here
--- quota.o ---
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::hlink>' requested here
  : public ihash_core<V, field>
           ^
--- rbl.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- quota.o ---
./rawnet.h:103:36: note: in instantiation of template class 'ihash<const sockaddr_in, synfp_state<str, false>::synfp_entry, &synfp_state<str, false>::synfp_entry::sin, &synfp_state<str, false>::synfp_entry::hlink, hashfn<const sockaddr_in>, equals<const sockaddr_in> >' requested here
        &synfp_entry::synfp_entry::hlink> tab;
                                          ^
--- rbl.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
--- quota.o ---
./rawnet.h:137:11: note: in instantiation of template class 'synfp_state<str, false>' requested here
--- rbl.o ---
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
  bhash<sockaddr_in> bindaddrh;
                     ^
--- quota.o ---
  typedef synfp_state<str, false>::synfp_entry fpentry_t;
          ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- rbl.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- spf.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- quota.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- spf.o ---
./asmtpd.h:694:11: note: in instantiation of template class 'callback<void, spf_t *, void, void>' requested here
  typedef callback<void, spf_t *>::ref cb_t;
          ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:696:3: note: in instantiation of template class 'ref<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
  ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:696:13: note: in instantiation of template class 'ptr<callback<void, spf_t *, void, void> >' requested here
--- runprog.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
  cb_t::ptr cb;
            ^
--- runprog.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
  bhash<str> nocheck;
             ^
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rbl.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- runprog.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
--- runprog.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- rbl.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
--- runprog.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, void> &, void, void>' requested here
--- rbl.o ---
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
--- quota.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
  bhash<str> nocheck;
             ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- quota.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- runprog.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
--- quota.o ---
./rawnet.h:176:11: note: in instantiation of template class 'callback<void, icmpsock::icmp_info *, void, void>' requested here
--- rbl.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
--- quota.o ---
  typedef callback<void, icmp_info *>::ref cb_t;
          ^
--- runprog.o ---
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
--- spf.o ---
  typedef struct ptr<T> ptr;
          ^
--- rbl.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
In file included from quota.C:24:
--- runprog.o ---
  bhash<str> nocheck;
             ^
--- spf.o ---
./asmtpd.h:713:20: note: in instantiation of template class 'ref<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
--- quota.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- spf.o ---
  ref<bhash<str> > loopcheck;
                   ^
--- quota.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
--- quota.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- runprog.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rbl.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, void> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
  bhash<str> nocheck;
             ^
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./rawnet.h:180:16: note: in instantiation of template class 'ref<callback<void, icmpsock::icmp_info *, void, void> >' requested here
    const cb_t cb;
               ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./rawnet.h:185:25: note: in instantiation of template class 'ref<icmpsock>' requested here
    const ref<icmpsock> is;
                        ^
--- runprog.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- runprog.o ---
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, long> *, void, void>' requested here
--- spf.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- runprog.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- spf.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
--- spf.o ---
  typedef struct ref<T> ref;
          ^
./asmtpd.h:762:20: note: in instantiation of template class 'ptr<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
--- runprog.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
  qhash<str, time_t> warn_filter;
                     ^
--- spf.o ---
         ptr<bhash<str> > loopcheck = NULL, int recdepth = 0);
                          ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
In file included from quota.C:24:
--- rbl.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- rbl.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- runprog.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, long> *, void, void>' requested here
--- quota.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- rbl.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- quota.o ---
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, icmpsock::icmpclnt *, void, void>' requested here
--- rbl.o ---
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
--- quota.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- rbl.o ---
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
--- quota.o ---
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<icmpsock::icmpclnt, &icmpsock::icmpclnt::hlink>' requested here
--- runprog.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
  : public ihash_core<V, field>
           ^
--- rbl.o ---
  qhash<str, time_t> warn_filter;
                     ^
--- quota.o ---
./rawnet.h:208:30: note: in instantiation of template class 'ihash<const in_addr, icmpsock::icmpclnt, &icmpsock::icmpclnt::addr, &icmpsock::icmpclnt::hlink, hashfn<const in_addr>, equals<const in_addr> >' requested here
--- runprog.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- rbl.o ---
In file included from rbl.C:24:
--- runprog.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, long> &, void, void>' requested here
--- rbl.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- quota.o ---
        &icmpsock::icmpclnt::hlink> cbtab;
                                    ^
--- rbl.o ---
In file included from ../libasync/suio++.h:30:
--- quota.o ---
In file included from quota.C:24:
--- rbl.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- runprog.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
--- quota.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
--- rbl.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- runprog.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
  qhash<str, time_t> warn_filter;
                     ^
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- quota.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- rbl.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const icmpsock::icmpclnt &, void, void>' requested here
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- rbl.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- asmtpd.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- rbl.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, long> &, void, void>' requested here
--- runprog.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- asmtpd.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
asmtpd.C:518:29: note: in instantiation of template class 'ref<callback<void, spf_result, str, str> >' requested here
--- quota.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<icmpsock::icmpclnt, &icmpsock::icmpclnt::hlink>' requested here
--- rbl.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
--- quota.o ---
  : public ihash_core<V, field>
           ^
--- rbl.o ---
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
--- asmtpd.o ---
    spf_check (a, parse[3], wrap (spftst_2, line), parse[5]);
                            ^
--- quota.o ---
./rawnet.h:208:30: note: in instantiation of template class 'ihash<const in_addr, icmpsock::icmpclnt, &icmpsock::icmpclnt::addr, &icmpsock::icmpclnt::hlink, hashfn<const in_addr>, equals<const in_addr> >' requested here
        &icmpsock::icmpclnt::hlink> cbtab;
                                    ^
--- rbl.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- rbl.o ---
  qhash<str, time_t> warn_filter;
                     ^
--- quota.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- quota.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rbl.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./asmtpd.h:770:9: note: in instantiation of template class 'callback<void, spf_result, str, str>' requested here
typedef callback<void, spf_result, str, str>::ref spfckcb_t;
        ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
--- rcptcheck.o ---
./asmtpd.h:373:31: note: in instantiation of template class 'ptr<const rbl_status>' requested here
--- quota.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- rcptcheck.o ---
  const ptr<const rbl_status> rblcon;
                              ^
--- quota.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./rawnet.h:232:17: note: in instantiation of template class 'ref<icmpsock::icmpclnt>' requested here
  ref<icmpclnt> setcb (in_addr a, cb_t cb)
                ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
--- vrfy.o ---
  typedef struct ref<T> ref;
          ^
--- rcptcheck.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
./asmtpd.h:73:16: note: in instantiation of template class 'ptr<hostent>' requested here
  ptr<hostent> h;
               ^
--- rcptcheck.o ---
  typedef struct ref<T> ref;
          ^
./asmtpd.h:386:15: note: in instantiation of template class 'ptr<mxlist>' requested here
  ptr<mxlist> mxl;
              ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:74:19: note: in instantiation of template class 'ptr<rbl_status>' requested here
  ptr<rbl_status> rs;
                  ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./rawnet.h:240:11: note: in instantiation of template class 'callback<void, int, in_addr *, int>' requested here
  typedef callback<void, int, in_addr *, int>::ref cb_t;
          ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:454:28: note: in instantiation of template class 'ptr<const hostent>' requested here
  const ptr<const hostent> ptr_cache;
                           ^
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:473:21: note: in instantiation of template class 'ptr<const mxlist>' requested here
  ptr<const mxlist> get_mxl () const { return mxl; }
                    ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/vec.h:43:27: note: in instantiation of template class 'ref<callback<void, int, in_addr *, int> >' requested here
    char defbuf_space[N * sizeof (elm_t)];
                          ^
../libasync/vec.h:41:3: note: in instantiation of member class 'vec_base<ref<callback<void, int, in_addr *, int> >, 1>::(anonymous)' requested here
  union {
  ^
../libasync/vec.h:74:52: note: in instantiation of template class 'vec_base<ref<callback<void, int, in_addr *, int> >, 1>' requested here
template<class T, size_t N = 0> class vec : public vec_base<T, N> {
                                                   ^
./rawnet.h:261:16: note: in instantiation of template class 'vec<ref<callback<void, int, in_addr *, int> >, 1>' requested here
  vec<cb_t, 1> cbvec;
               ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:373:31: note: in instantiation of template class 'ptr<const rbl_status>' requested here
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- runprog.o ---
  const ptr<const rbl_status> rblcon;
                              ^
--- rcptcheck.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:491:9: note: in instantiation of template class 'callback<void, ref<progout>, void, void>' requested here
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- rcptcheck.o ---
typedef callback<void, ref<progout> >::ref runprogcb_t;
        ^
--- vrfy.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- vrfy.o ---
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<sockaddr_in, void> *, void, void>' requested here
--- rbl.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- vrfy.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- rbl.o ---
  typedef struct ref<T> ref;
          ^
./asmtpd.h:373:31: note: in instantiation of template class 'ptr<const rbl_status>' requested here
--- vrfy.o ---
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
--- rbl.o ---
  const ptr<const rbl_status> rblcon;
                              ^
--- vrfy.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
  bhash<sockaddr_in> bindaddrh;
                     ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:386:15: note: in instantiation of template class 'ptr<mxlist>' requested here
  ptr<mxlist> mxl;
              ^
--- vrfy.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<sockaddr_in, void> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
  bhash<sockaddr_in> bindaddrh;
                     ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
  typedef struct ref<T> ref;
          ^
./asmtpd.h:386:15: note: in instantiation of template class 'ptr<mxlist>' requested here
--- vrfy.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rbl.o ---
  ptr<mxlist> mxl;
              ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, ipinfo *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<ipinfo, &ipinfo::link>' requested here
  : public ihash_core<V, field>
           ^
quota.C:27:60: note: in instantiation of template class 'ihash<const in_addr, ipinfo, &ipinfo::addr, &ipinfo::link, hashfn<const in_addr>, equals<const in_addr> >' requested here
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- quota.o ---
ihash<const in_addr, ipinfo, &ipinfo::addr, &ipinfo::link> iitab;
                                                           ^
--- asmtpd.o ---
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- asmtpd.o ---
asmtpd.C:586:48: note: in instantiation of template class 'ref<vec<str, 0> >' requested here
--- quota.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- asmtpd.o ---
avenge_c (aios_t in, strbuf sb, ref<vec<str> > cmdv, str line, int err)
                                               ^
--- quota.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const ipinfo &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<ipinfo, &ipinfo::link>' requested here
  : public ihash_core<V, field>
           ^
quota.C:27:60: note: in instantiation of template class 'ihash<const in_addr, ipinfo, &ipinfo::addr, &ipinfo::link, hashfn<const in_addr>, equals<const in_addr> >' requested here
ihash<const in_addr, ipinfo, &ipinfo::addr, &ipinfo::link> iitab;
                                                           ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:454:28: note: in instantiation of template class 'ptr<const hostent>' requested here
  const ptr<const hostent> ptr_cache;
                           ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- vrfy.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
--- vrfy.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, void> *, void, void>' requested here
--- rbl.o ---
./asmtpd.h:454:28: note: in instantiation of template class 'ptr<const hostent>' requested here
  const ptr<const hostent> ptr_cache;
                           ^
--- vrfy.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
--- rcptcheck.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
--- rcptcheck.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:524:11: note: in instantiation of template class 'callback<void, avif::disp_t, str, void>' requested here
--- vrfy.o ---
  bhash<str> nocheck;
             ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- rcptcheck.o ---
  typedef callback<void, disp_t, str>::ref cb_t;
          ^
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- vrfy.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rcptcheck.o ---
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- vrfy.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, void> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
--- quota.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
--- quota.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, userinfo *, void, void>' requested here
--- vrfy.o ---
  bhash<str> nocheck;
             ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- quota.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<userinfo, &userinfo::link>' requested here
  : public ihash_core<V, field>
           ^
--- vrfy.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
quota.C:28:62: note: in instantiation of template class 'ihash<const str, userinfo, &userinfo::user, &userinfo::link, hashfn<const str>, equals<const str> >' requested here
ihash<const str, userinfo, &userinfo::user, &userinfo::link> uitab;
                                                             ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
--- quota.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
./asmtpd.h:533:14: note: in instantiation of template class 'ref<callback<void, avif::disp_t, str, void> >' requested here
  const cb_t cb;
             ^
--- quota.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const userinfo &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<userinfo, &userinfo::link>' requested here
  : public ihash_core<V, field>
           ^
quota.C:28:62: note: in instantiation of template class 'ihash<const str, userinfo, &userinfo::user, &userinfo::link, hashfn<const str>, equals<const str> >' requested here
ihash<const str, userinfo, &userinfo::user, &userinfo::link> uitab;
                                                             ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
  typedef struct ref<T> ref;
          ^
./asmtpd.h:473:21: note: in instantiation of template class 'ptr<const mxlist>' requested here
--- quota.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- runprog.o ---
  ptr<const mxlist> get_mxl () const { return mxl; }
                    ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/list.h:129:27: note: in instantiation of template class 'callback<void, avif::result *, void, void>' requested here
--- rbl.o ---
  typedef struct ref<T> ref;
          ^
./asmtpd.h:473:21: note: in instantiation of template class 'ptr<const mxlist>' requested here
--- rcptcheck.o ---
  void traverse (typename callback<void, T *>::ref cb) const {
                          ^
--- rbl.o ---
  ptr<const mxlist> get_mxl () const { return mxl; }
                    ^
--- rcptcheck.o ---
./asmtpd.h:539:32: note: in instantiation of template class 'tailq<avif::result, &avif::result::link>' requested here
  tailq<result, &result::link> reslist;
                               ^
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- vrfy.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, long> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
  qhash<str, time_t> warn_filter;
                     ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:491:9: note: in instantiation of template class 'callback<void, ref<progout>, void, void>' requested here
--- vrfy.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
typedef callback<void, ref<progout> >::ref runprogcb_t;
        ^
--- vrfy.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, long> &, void, void>' requested here
--- runprog.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- vrfy.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
  qhash<str, time_t> warn_filter;
                     ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rbl.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:491:9: note: in instantiation of template class 'callback<void, ref<progout>, void, void>' requested here
typedef callback<void, ref<progout> >::ref runprogcb_t;
        ^
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
./asmtpd.h:571:1: warning: 'enqmsg' defined as a class here but previously declared as a struct [-Wmismatched-tags]
class enqmsg {
^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
spf.C:80:37: note: in instantiation of template class 'ptr<txtlist>' requested here
spf_t::getexp (cbv cb, ptr<txtlist> t, int err)
                                    ^
--- rcptcheck.o ---
./asmtpd.h:354:1: note: did you mean class here?
struct enqmsg;
^~~~~~
class
--- runprog.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:524:11: note: in instantiation of template class 'callback<void, avif::disp_t, str, void>' requested here
  typedef callback<void, disp_t, str>::ref cb_t;
          ^
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- rbl.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- rbl.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:524:11: note: in instantiation of template class 'callback<void, avif::disp_t, str, void>' requested here
  typedef callback<void, disp_t, str>::ref cb_t;
          ^
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
  typedef struct ptr<T> ptr;
          ^
quota.C:45:19: note: in instantiation of template class 'ref<callback<void, ipinfo *, void, void> >' requested here
--- rcptcheck.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:617:9: note: in instantiation of template class 'callback<void, str, ptr<mxlist>, void>' requested here
--- quota.o ---
  iitab.traverse (&ipinfo::maybe_delete);
                  ^
--- rcptcheck.o ---
typedef callback<void, str, ptr<mxlist> >::ref vrfycb_t;
        ^
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:533:14: note: in instantiation of template class 'ref<callback<void, avif::disp_t, str, void> >' requested here
--- rcptcheck.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- runprog.o ---
  const cb_t cb;
             ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:533:14: note: in instantiation of template class 'ref<callback<void, avif::disp_t, str, void> >' requested here
  const cb_t cb;
             ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
--- rcptcheck.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, str> *, void, void>' requested here
--- runprog.o ---
../libasync/list.h:129:27: note: in instantiation of template class 'callback<void, avif::result *, void, void>' requested here
--- rcptcheck.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- runprog.o ---
  void traverse (typename callback<void, T *>::ref cb) const {
                          ^
./asmtpd.h:539:32: note: in instantiation of template class 'tailq<avif::result, &avif::result::link>' requested here
--- rcptcheck.o ---
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
--- runprog.o ---
  tailq<result, &result::link> reslist;
                               ^
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- rcptcheck.o ---
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
--- runprog.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
--- runprog.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/list.h:129:27: note: in instantiation of template class 'callback<void, avif::result *, void, void>' requested here
--- rcptcheck.o ---
          ^
--- quota.o ---
  typedef struct ptr<T> ptr;
          ^
quota.C:45:19: note: in instantiation of template class 'ref<callback<void, const ipinfo &, void, void> >' requested here
--- rbl.o ---
  void traverse (typename callback<void, T *>::ref cb) const {
                          ^
./asmtpd.h:539:32: note: in instantiation of template class 'tailq<avif::result, &avif::result::link>' requested here
  tailq<result, &result::link> reslist;
                               ^
--- quota.o ---
  iitab.traverse (&ipinfo::maybe_delete);
                  ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rcptcheck.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, str> &, void, void>' requested here
--- rbl.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rcptcheck.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
quota.C:46:19: note: in instantiation of template class 'ref<callback<void, userinfo *, void, void> >' requested here
  uitab.traverse (&userinfo::maybe_delete);
                  ^
--- runprog.o ---
In file included from runprog.C:25:
./asmtpd.h:571:1: warning: 'enqmsg' defined as a class here but previously declared as a struct [-Wmismatched-tags]
class enqmsg {
^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
  typedef struct ref<T> ref;
          ^
./asmtpd.h:373:31: note: in instantiation of template class 'ptr<const rbl_status>' requested here
  const ptr<const rbl_status> rblcon;
                              ^
--- quota.o ---
  typedef struct ptr<T> ptr;
          ^
quota.C:46:19: note: in instantiation of template class 'ref<callback<void, const userinfo &, void, void> >' requested here
  uitab.traverse (&userinfo::maybe_delete);
                  ^
--- rbl.o ---
In file included from rbl.C:24:
./asmtpd.h:571:1: warning: 'enqmsg' defined as a class here but previously declared as a struct [-Wmismatched-tags]
class enqmsg {
^
--- runprog.o ---
./asmtpd.h:354:1: note: did you mean class here?
struct enqmsg;
^~~~~~
class
--- rbl.o ---
./asmtpd.h:354:1: note: did you mean class here?
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
--- rbl.o ---
struct enqmsg;
^~~~~~
class
--- vrfy.o ---
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:386:15: note: in instantiation of template class 'ptr<mxlist>' requested here
  ptr<mxlist> mxl;
              ^
--- rcptcheck.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:694:11: note: in instantiation of template class 'callback<void, spf_t *, void, void>' requested here
  typedef callback<void, spf_t *>::ref cb_t;
          ^
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:454:28: note: in instantiation of template class 'ptr<const hostent>' requested here
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
  const ptr<const hostent> ptr_cache;
                           ^
--- rcptcheck.o ---
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:696:3: note: in instantiation of template class 'ref<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
  ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
spf.C:103:22: note: in instantiation of template class 'ref<callback<void, ptr<txtlist>, int, void> >' requested here
        = dns_txtbyname (n, wrap (this, &spf_t::getexp,
                            ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:696:13: note: in instantiation of template class 'ptr<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
            ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:617:9: note: in instantiation of template class 'callback<void, str, ptr<mxlist>, void>' requested here
typedef callback<void, str, ptr<mxlist> >::ref vrfycb_t;
        ^
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:617:9: note: in instantiation of template class 'callback<void, str, ptr<mxlist>, void>' requested here
typedef callback<void, str, ptr<mxlist> >::ref vrfycb_t;
        ^
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:713:20: note: in instantiation of template class 'ref<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
  ref<bhash<str> > loopcheck;
                   ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
  typedef struct ref<T> ref;
          ^
./asmtpd.h:473:21: note: in instantiation of template class 'ptr<const mxlist>' requested here
--- runprog.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, str> *, void, void>' requested here
--- vrfy.o ---
  ptr<const mxlist> get_mxl () const { return mxl; }
                    ^
--- runprog.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
--- rbl.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
  qhash<str, str> table;
                  ^
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- rbl.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, str> *, void, void>' requested here
--- runprog.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
--- runprog.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rbl.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- runprog.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, str> &, void, void>' requested here
--- rbl.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- runprog.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
--- rbl.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
--- rbl.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, str> &, void, void>' requested here
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
--- runprog.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rbl.o ---
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:491:9: note: in instantiation of template class 'callback<void, ref<progout>, void, void>' requested here
typedef callback<void, ref<progout> >::ref runprogcb_t;
        ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:762:20: note: in instantiation of template class 'ptr<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
         ptr<bhash<str> > loopcheck = NULL, int recdepth = 0);
                          ^
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./asmtpd.h:770:9: note: in instantiation of template class 'callback<void, spf_result, str, str>' requested here
typedef callback<void, spf_result, str, str>::ref spfckcb_t;
        ^
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- runprog.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:694:11: note: in instantiation of template class 'callback<void, spf_t *, void, void>' requested here
  typedef callback<void, spf_t *>::ref cb_t;
          ^
--- rbl.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- vrfy.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:694:11: note: in instantiation of template class 'callback<void, spf_t *, void, void>' requested here
--- runprog.o ---
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- vrfy.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:524:11: note: in instantiation of template class 'callback<void, avif::disp_t, str, void>' requested here
--- rbl.o ---
  typedef callback<void, spf_t *>::ref cb_t;
          ^
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
  typedef callback<void, disp_t, str>::ref cb_t;
          ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- vrfy.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
--- runprog.o ---
./asmtpd.h:696:3: note: in instantiation of template class 'ref<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
  ^
--- rbl.o ---
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:696:3: note: in instantiation of template class 'ref<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
  ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:533:14: note: in instantiation of template class 'ref<callback<void, avif::disp_t, str, void> >' requested here
  const cb_t cb;
             ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
--- runprog.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
--- rbl.o ---
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
./asmtpd.h:696:13: note: in instantiation of template class 'ptr<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
            ^
--- rbl.o ---
  typedef struct ref<T> ref;
          ^
./asmtpd.h:696:13: note: in instantiation of template class 'ptr<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
            ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/list.h:129:27: note: in instantiation of template class 'callback<void, avif::result *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) const {
                          ^
./asmtpd.h:539:32: note: in instantiation of template class 'tailq<avif::result, &avif::result::link>' requested here
  tailq<result, &result::link> reslist;
                               ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- rbl.o ---
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:713:20: note: in instantiation of template class 'ref<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
--- runprog.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
  ref<bhash<str> > loopcheck;
                   ^
--- runprog.o ---
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:713:20: note: in instantiation of template class 'ref<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
  ref<bhash<str> > loopcheck;
                   ^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, qhash_slot<str, str> *, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
--- vrfy.o ---
In file included from vrfy.C:24:
./asmtpd.h:571:1: warning: 'enqmsg' defined as a class here but previously declared as a struct [-Wmismatched-tags]
class enqmsg {
^
--- avif.o ---
In file included from avif.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, const qhash_slot<str, str> &, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
--- vrfy.o ---
./asmtpd.h:354:1: note: did you mean class here?
struct enqmsg;
^~~~~~
class
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:762:20: note: in instantiation of template class 'ptr<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
         ptr<bhash<str> > loopcheck = NULL, int recdepth = 0);
                          ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:762:20: note: in instantiation of template class 'ptr<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
         ptr<bhash<str> > loopcheck = NULL, int recdepth = 0);
                          ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./asmtpd.h:770:9: note: in instantiation of template class 'callback<void, spf_result, str, str>' requested here
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- rbl.o ---
typedef callback<void, spf_result, str, str>::ref spfckcb_t;
        ^
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:617:9: note: in instantiation of template class 'callback<void, str, ptr<mxlist>, void>' requested here
--- rbl.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- vrfy.o ---
typedef callback<void, str, ptr<mxlist> >::ref vrfycb_t;
        ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- netpath.o ---
In file included from netpath.C:24:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- runprog.o ---
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./asmtpd.h:770:9: note: in instantiation of template class 'callback<void, spf_result, str, str>' requested here
--- vrfy.o ---
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- netpath.o ---
  typedef struct ref<T> ref;
          ^
netpath.C:656:22: note: in instantiation of template class 'ptr<icmpsock>' requested here
static ptr<icmpsock> is;
                     ^
--- runprog.o ---
typedef callback<void, spf_result, str, str>::ref spfckcb_t;
        ^
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
spf.C:150:43: note: in instantiation of template class 'ref<callback<void, ptr<hostent>, int, void> >' requested here
--- vrfy.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- spf.o ---
  if (dnsreq_t *d = dns_hostbyaddr (addr, wrap (this, &spf_t::getptr_2, cb)))
                                          ^
--- vrfy.o ---
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, str> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, str> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:694:11: note: in instantiation of template class 'callback<void, spf_t *, void, void>' requested here
  typedef callback<void, spf_t *>::ref cb_t;
          ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
runprog.C:39:15: note: in instantiation of template class 'ref<callback<void, ref<progout>, void, void> >' requested here
  runprogcb_t cb;
              ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:696:3: note: in instantiation of template class 'ref<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
  ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:696:13: note: in instantiation of template class 'ptr<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
            ^
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
runprog.C:42:16: note: in instantiation of template class 'ref<progout>' requested here
  ref<progout> po;
               ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:713:20: note: in instantiation of template class 'ref<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
  ref<bhash<str> > loopcheck;
                   ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:762:20: note: in instantiation of template class 'ptr<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
         ptr<bhash<str> > loopcheck = NULL, int recdepth = 0);
                          ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./asmtpd.h:770:9: note: in instantiation of template class 'callback<void, spf_result, str, str>' requested here
typedef callback<void, spf_result, str, str>::ref spfckcb_t;
        ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, addrcache_entry *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<addrcache_entry, &addrcache_entry::hashlink>' requested here
  : public ihash_core<V, field>
           ^
vrfy.C:43:59: note: in instantiation of template class 'ihash<const str, addrcache_entry, &addrcache_entry::addr, &addrcache_entry::hashlink, hashfn<const str>, equals<const str> >' requested here
             &addrcache_entry::addr, &addrcache_entry::hashlink> addrcache;
                                                                 ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const addrcache_entry &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<addrcache_entry, &addrcache_entry::hashlink>' requested here
  : public ihash_core<V, field>
           ^
vrfy.C:43:59: note: in instantiation of template class 'ihash<const str, addrcache_entry, &addrcache_entry::addr, &addrcache_entry::hashlink, hashfn<const str>, equals<const str> >' requested here
             &addrcache_entry::addr, &addrcache_entry::hashlink> addrcache;
                                                                 ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
rbl.C:95:19: note: in instantiation of template class 'ref<rbl_status>' requested here
  ref<rbl_status> stat;
                  ^
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
rbl.C:112:11: note: in instantiation of template class 'ref<rbl>' requested here
    if (!(rblv[i]->flags & (rbl::QUERY_IP | rbl::QUERY_PTR)))
          ^
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
rbl.C:117:29: note: in instantiation of template class 'ref<callback<void, ptr<hostent>, int, void> >' requested here
      dns_hostbyname (name, wrap (this, &rbl_check::result, rblv[i]),
                            ^
--- asmtpd.o ---
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, qhash_slot<str, str> *, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
In file included from asmtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, const qhash_slot<str, str> &, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
vrfy.C:153:3: note: in instantiation of template class 'ref<callback<void, bool, void, void> >' requested here
  cbb::ptr cb;
  ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
vrfy.C:153:12: note: in instantiation of template class 'ptr<callback<void, bool, void, void> >' requested here
  cbb::ptr cb;
           ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, mailserv *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<mailserv, &mailserv::hlink>' requested here
  : public ihash_core<V, field>
           ^
vrfy.C:175:70: note: in instantiation of template class 'ihash<const str, mailserv, &mailserv::name, &mailserv::hlink, hashfn<const str>, equals<const str> >' requested here
static ihash<const str, mailserv, &mailserv::name, &mailserv::hlink> mstab;
                                                                     ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const mailserv &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<mailserv, &mailserv::hlink>' requested here
  : public ihash_core<V, field>
           ^
vrfy.C:175:70: note: in instantiation of template class 'ihash<const str, mailserv, &mailserv::name, &mailserv::hlink, hashfn<const str>, equals<const str> >' requested here
static ihash<const str, mailserv, &mailserv::name, &mailserv::hlink> mstab;
                                                                     ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
spf.C:464:46: note: in instantiation of template class 'ref<hostent>' requested here
spf_t::addr_check (int cidrlen, ref<hostent> h)
                                             ^
--- quota.o ---
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, qhash_slot<str, str> *, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
In file included from quota.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, const qhash_slot<str, str> &, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
vrfy.C:260:18: note: in instantiation of template class 'ref<vec<str, 0> >' requested here
  ref<vec<str> > cv = New refcounted<vec<str> > (cmds);
                 ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
vrfy.C:355:11: note: in instantiation of template class 'callback<void, mailserv *, int, ptr<mxlist> >' requested here
  typedef callback<void, mailserv *, int, ptr<mxlist> >::ref cb_t;
          ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
vrfy.C:358:8: note: in instantiation of template class 'ref<callback<void, mailserv *, int, ptr<mxlist> > >' requested here
  cb_t cb;
       ^
--- rbl.o ---
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, qhash_slot<str, str> *, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
In file included from rbl.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, const qhash_slot<str, str> &, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
vrfy.C:368:25: note: in instantiation of template class 'ref<callback<void, ptr<mxlist>, int, void> >' requested here
    dns_mxbyname (name, wrap (this, &mxconnect::mxcb));
                        ^
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
vrfy.C:396:24: note: in instantiation of template class 'ref<callback<void, ptr<hostent>, int, void> >' requested here
    dns_hostbyname (a, wrap (this, &mxconnect::tryip, a));
                       ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
spf.C:693:29: note: in instantiation of template class 'ref<callback<void, ptr<mxlist>, int, void> >' requested here
      = dns_mxbyname (targ, wrap (this, &spf_t::mech_mx_2, cidrlen)))
                            ^
--- addrparse.o ---
88 warnings generated.
--- runprog.o ---
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, qhash_slot<str, str> *, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
In file included from runprog.C:25:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, const qhash_slot<str, str> &, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
vrfy.C:456:31: note: in instantiation of template class 'ref<callback<void, str, ptr<mxlist>, void> >' requested here
vrfy_mkcb (str addr, vrfycb_t cb, str msg, ptr<mxlist> mxl)
                              ^
--- rcptcheck.o ---
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, qhash_slot<str, str> *, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
In file included from rcptcheck.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, const qhash_slot<str, str> &, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
spf.C:814:24: note: in instantiation of template class 'ref<callback<void, spf_result, str, str> >' requested here
spf_check_3 (spfckcb_t cb, spf_result override, str omech, spf_t *spf)
                       ^
--- addrparse.o ---
mv -f .deps/addrparse.Tpo .deps/addrparse.Po
--- async_ssl.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT async_ssl.o -MD -MP -MF .deps/async_ssl.Tpo -c -o async_ssl.o async_ssl.C
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./async_ssl.h:48:13: note: in instantiation of template class 'ptr<suio>' requested here
  ptr<suio> oldout;
            ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./async_ssl.h:86:22: note: in instantiation of template class 'ref<aiossl>' requested here
  static ref<aiossl> alloc (int fd, size_t rbsz = defrbufsize)
                     ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, smtp_dispatch *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, qhash_slot<str, str> *, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
--- smtpd.o ---
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<smtp_dispatch, &smtp_dispatch::link>' requested here
  : public ihash_core<V, field>
           ^
smtpd.C:49:29: note: in instantiation of template class 'ihash<const char *, smtp_dispatch, &smtp_dispatch::cmd_name, &smtp_dispatch::link, hashfn<const char *>, equals<const char *> >' requested here
             &smtp_dispatch::link> dispatch_tab;
                                   ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- vrfy.o ---
In file included from vrfy.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- smtpd.o ---
In file included from ../libasync/amisc.h:29:
--- vrfy.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, const qhash_slot<str, str> &, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
--- smtpd.o ---
In file included from ../libasync/err.h:28:
--- vrfy.o ---
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
--- smtpd.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const smtp_dispatch &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<smtp_dispatch, &smtp_dispatch::link>' requested here
  : public ihash_core<V, field>
           ^
smtpd.C:49:29: note: in instantiation of template class 'ihash<const char *, smtp_dispatch, &smtp_dispatch::cmd_name, &smtp_dispatch::link, hashfn<const char *>, equals<const char *> >' requested here
             &smtp_dispatch::link> dispatch_tab;
                                   ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/list.h:62:27: note: in instantiation of template class 'callback<void, smtpd *, void, void>' requested here
  void traverse (typename callback<void, T*>::ref cb) const {
                          ^
smtpd.C:51:27: note: in instantiation of template class 'list<smtpd, &smtpd::link>' requested here
list<smtpd, &smtpd::link> smtplist;
                          ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- spf.o ---
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, qhash_slot<str, str> *, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
In file included from spf.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, const qhash_slot<str, str> &, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
smtpd.C:300:22: note: in instantiation of template class 'ref<rbl_status>' requested here
      rbl_check_env (rblenv, opt->rbls, relay,
                     ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
smtpd.C:300:7: note: in instantiation of template class 'ref<rbl>' requested here
      rbl_check_env (rblenv, opt->rbls, relay,
      ^
--- starttls.o ---
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:29:
In file included from ../libasync/vec.h:30:
../libasync/array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
smtpd.C:334:30: note: in instantiation of template class 'ref<callback<void, spf_result, str, str> >' requested here
    spf_check (ipaddr, addr, wrap (this, &smtpd::cmd_mail_3, addr),
                             ^
--- starttls.o ---
../libasync/array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
smtpd.C:344:35: note: in instantiation of template class 'ref<callback<void, str, ptr<mxlist>, void> >' requested here
    vrfy (myipaddr, addr, ipaddr, wrap (this, &smtpd::cmd_mail_4, addr));
                                  ^
--- osguess.o ---
98 warnings generated.
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
smtpd.C:719:7: note: in instantiation of template class 'ref<progout>' requested here
                           wrap (this, &smtpd::data_3, avc),
                           ^
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
smtpd.C:719:7: note: in instantiation of template class 'ref<callback<void, ref<progout>, void, void> >' requested here
                           wrap (this, &smtpd::data_3, avc),
                           ^
--- osguess.o ---
mv -f .deps/osguess.Tpo .deps/osguess.Po
--- synos.o ---
clang -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT synos.o -MD -MP -MF .deps/synos.Tpo -c -o synos.o synos.c
--- starttls.o ---
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
../libasync/suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
smtpd.C:913:26: note: in instantiation of template class 'ref<callback<void, ptr<hostent>, int, void> >' requested here
      dns_hostbyaddr (a, wrap (relaunch, myfd, myfd, nn, a));
                         ^
--- starttls.o ---
../libasync/suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
../libasync/suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
../libasync/suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
../libasync/str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
../libasync/str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:104:9: note: in instantiation of template class 'callback<void, ptr<hostent>, int, void>' requested here
typedef callback<void, ptr<hostent>, int>::ref cbhent;
        ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:109:9: note: in instantiation of template class 'callback<void, ptr<mxlist>, int, void>' requested here
typedef callback<void, ptr<mxlist>, int>::ref cbmxlist;
        ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:112:9: note: in instantiation of template class 'callback<void, ptr<srvlist>, int, void>' requested here
typedef callback<void, ptr<srvlist>, int>::ref cbsrvlist;
        ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:115:9: note: in instantiation of template class 'callback<void, ptr<txtlist>, int, void>' requested here
typedef callback<void, ptr<txtlist>, int>::ref cbtxtlist;
        ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/dns.h:120:19: note: in instantiation of template class 'ref<callback<void, ptr<srvlist>, int, void> >' requested here
               cbsrvlist cb, bool search = false)
                         ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/dns.h:122:10: note: in instantiation of template class 'ptr<srvlist>' requested here
  return dns_srvbyname (strbuf ("_%s._%s.%s", srv, proto, name), cb, search);
         ^
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, qhash_slot<str, str> *, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
--- starttls.o ---
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/parseopt.h:98:9: note: in instantiation of template class 'callback<void, vec<str, 0>, str, bool *>' requested here
typedef callback<void, vec<str>, str, bool *>::ref confcb;
        ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- smtpd.o ---
In file included from smtpd.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- starttls.o ---
In file included from ../libasync/suio++.h:30:
--- smtpd.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
--- starttls.o ---
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- smtpd.o ---
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- starttls.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- smtpd.o ---
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, const qhash_slot<str, str> &, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
--- starttls.o ---
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:114:3: note: in instantiation of template class 'ref<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
  ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:114:15: note: in instantiation of template class 'ptr<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
              ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:115:3: note: in instantiation of template class 'ref<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
  ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:115:12: note: in instantiation of template class 'ptr<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
           ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, conftab_el *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const conftab_el &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:45:9: note: in instantiation of template class 'ptr<callback<void, str, int, void> >' requested here
  rcb_t rcb;
        ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:58:39: note: in instantiation of template class 'ref<callback<void, str, int, void> >' requested here
    { infn = &aios::rnone; rcb_t::ref cb = rcb; rcb = NULL; (*cb) (s, err); }
                                      ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:67:29: note: in instantiation of template class 'ptr<callback<void, int, void, void> >' requested here
  virtual void mkwcb (wcb_t cb) { if (fd >= 0) (*cb) (err); }
                            ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:116:20: note: in instantiation of template class 'ref<aios>' requested here
  static ref<aios> alloc (int fd, size_t rbsz = defrbufsize)
                   ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:161:44: note: in instantiation of template class 'ptr<aios>' requested here
  aiosout (const aios_t::ptr &a) : strbuf (a->outb), s(a) { s->outstart (); }
                                           ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:73:16: note: in instantiation of template class 'ptr<hostent>' requested here
  ptr<hostent> h;
               ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:74:19: note: in instantiation of template class 'ptr<rbl_status>' requested here
  ptr<rbl_status> rs;
                  ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<sockaddr_in, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
  bhash<sockaddr_in> bindaddrh;
                     ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<sockaddr_in, void> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
  bhash<sockaddr_in> bindaddrh;
                     ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
  bhash<str> nocheck;
             ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, void> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
  bhash<str> nocheck;
             ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, long> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
  qhash<str, time_t> warn_filter;
                     ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, long> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
  qhash<str, time_t> warn_filter;
                     ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:373:31: note: in instantiation of template class 'ptr<const rbl_status>' requested here
  const ptr<const rbl_status> rblcon;
                              ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:386:15: note: in instantiation of template class 'ptr<mxlist>' requested here
  ptr<mxlist> mxl;
              ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:454:28: note: in instantiation of template class 'ptr<const hostent>' requested here
  const ptr<const hostent> ptr_cache;
                           ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:473:21: note: in instantiation of template class 'ptr<const mxlist>' requested here
  ptr<const mxlist> get_mxl () const { return mxl; }
                    ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:491:9: note: in instantiation of template class 'callback<void, ref<progout>, void, void>' requested here
typedef callback<void, ref<progout> >::ref runprogcb_t;
        ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:524:11: note: in instantiation of template class 'callback<void, avif::disp_t, str, void>' requested here
  typedef callback<void, disp_t, str>::ref cb_t;
          ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:533:14: note: in instantiation of template class 'ref<callback<void, avif::disp_t, str, void> >' requested here
  const cb_t cb;
             ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/list.h:129:27: note: in instantiation of template class 'callback<void, avif::result *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) const {
                          ^
./asmtpd.h:539:32: note: in instantiation of template class 'tailq<avif::result, &avif::result::link>' requested here
  tailq<result, &result::link> reslist;
                               ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from starttls.C:24:
./asmtpd.h:571:1: warning: 'enqmsg' defined as a class here but previously declared as a struct [-Wmismatched-tags]
class enqmsg {
^
./asmtpd.h:354:1: note: did you mean class here?
struct enqmsg;
^~~~~~
class
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:617:9: note: in instantiation of template class 'callback<void, str, ptr<mxlist>, void>' requested here
typedef callback<void, str, ptr<mxlist> >::ref vrfycb_t;
        ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, str> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, str> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:694:11: note: in instantiation of template class 'callback<void, spf_t *, void, void>' requested here
  typedef callback<void, spf_t *>::ref cb_t;
          ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:696:3: note: in instantiation of template class 'ref<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
  ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:696:13: note: in instantiation of template class 'ptr<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
            ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:713:20: note: in instantiation of template class 'ref<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
  ref<bhash<str> > loopcheck;
                   ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:762:20: note: in instantiation of template class 'ptr<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
         ptr<bhash<str> > loopcheck = NULL, int recdepth = 0);
                          ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./asmtpd.h:770:9: note: in instantiation of template class 'callback<void, spf_result, str, str>' requested here
typedef callback<void, spf_result, str, str>::ref spfckcb_t;
        ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- mxcheck.o ---
100 warnings generated.
mv -f .deps/mxcheck.Tpo .deps/mxcheck.Po
--- config.o ---
clang++ -DHAVE_CONFIG_H -I. -I..    -I/usr/pkg/include/db4 -I/usr/include -I.. -I/usr/include/pcap  -DETCDIR=\"/usr/pkg/etc/avenger\" -DLIBEXEC=\"/usr/pkg/libexec\" -DBINDIR=\"/usr/pkg/bin\" -DEXECDIR=LIBEXEC -DDATADIR=\"/usr/pkg/share\" -DPIDDIR=\"/var/run\" -I../libasync  -O2 -I/usr/pkg/include/db4 -I/usr/include -Wall  -MT config.o -MD -MP -MF .deps/config.Tpo -c -o config.o config.C
--- async_ssl.o ---
In file included from async_ssl.C:24:
In file included from ./async_ssl.h:28:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:29:
In file included from ../libasync/vec.h:30:
../libasync/array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
../libasync/array.h:75:29: note: did you mean class here?
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
In file included from async_ssl.C:24:
In file included from ./async_ssl.h:28:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
../libasync/suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from async_ssl.C:24:
In file included from ./async_ssl.h:28:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from async_ssl.C:24:
In file included from ./async_ssl.h:28:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- synos.o ---
mv -f .deps/synos.Tpo .deps/synos.Po
--- async_ssl.o ---
../libasync/suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
../libasync/suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
../libasync/suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- enqmsg.o ---
90 warnings generated.
--- async_ssl.o ---
In file included from async_ssl.C:24:
In file included from ./async_ssl.h:28:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
../libasync/str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
../libasync/str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
--- enqmsg.o ---
mv -f .deps/enqmsg.Tpo .deps/enqmsg.Po
--- async_ssl.o ---
In file included from async_ssl.C:24:
In file included from ./async_ssl.h:28:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
In file included from async_ssl.C:24:
In file included from ./async_ssl.h:28:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from async_ssl.C:24:
In file included from ./async_ssl.h:28:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from async_ssl.C:24:
In file included from ./async_ssl.h:28:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from async_ssl.C:24:
In file included from ./async_ssl.h:28:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from async_ssl.C:24:
In file included from ./async_ssl.h:28:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
--- starttls.o ---
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./async_ssl.h:48:13: note: in instantiation of template class 'ptr<suio>' requested here
  ptr<suio> oldout;
            ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./async_ssl.h:86:22: note: in instantiation of template class 'ref<aiossl>' requested here
  static ref<aiossl> alloc (int fd, size_t rbsz = defrbufsize)
                     ^
starttls.C:62:20: warning: 'RSA_generate_key' is deprecated [-Wdeprecated-declarations]
  ssl_tmpkey_key = RSA_generate_key (keylen, 17, NULL, NULL);
                   ^
/usr/include/openssl/rsa.h:193:1: note: 'RSA_generate_key' has been explicitly marked deprecated here
DEPRECATEDIN_0_9_8(RSA *RSA_generate_key(int bits, unsigned long e, void
^
/usr/include/openssl/opensslconf.h:139:34: note: expanded from macro 'DEPRECATEDIN_0_9_8'
# define DEPRECATEDIN_0_9_8(f)   DECLARE_DEPRECATED(f)
                                 ^
/usr/include/openssl/opensslconf.h:102:53: note: expanded from macro 'DECLARE_DEPRECATED'
# define DECLARE_DEPRECATED(f)    f __attribute__ ((deprecated));
                                                    ^
--- async_ssl.o ---
In file included from async_ssl.C:24:
In file included from ./async_ssl.h:28:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
--- starttls.o ---
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<int, dh_st *> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<int, dh_st *>, &qhash_slot<int, dh_st *>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
starttls.C:72:27: note: in instantiation of template class 'qhash<int, dh_st *, hashfn<int>, equals<int>, qhash_lookup_return<dh_st *>, &qhash_slot<int, dh_st *>::link>' requested here
  static qhash<int, DH *> parmtab;
                          ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- async_ssl.o ---
In file included from async_ssl.C:24:
In file included from ./async_ssl.h:28:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
--- starttls.o ---
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<int, dh_st *> &, void, void>' requested here
--- async_ssl.o ---
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
--- starttls.o ---
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<int, dh_st *>, &qhash_slot<int, dh_st *>::link>' requested here
--- async_ssl.o ---
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
--- starttls.o ---
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
--- async_ssl.o ---
In file included from async_ssl.C:24:
In file included from ./async_ssl.h:28:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
--- starttls.o ---
starttls.C:72:27: note: in instantiation of template class 'qhash<int, dh_st *, hashfn<int>, equals<int>, qhash_lookup_return<dh_st *>, &qhash_slot<int, dh_st *>::link>' requested here
--- async_ssl.o ---
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
--- starttls.o ---
  static qhash<int, DH *> parmtab;
                          ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
--- async_ssl.o ---
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- starttls.o ---
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- async_ssl.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from async_ssl.C:24:
In file included from ./async_ssl.h:28:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- config.o ---
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:29:
In file included from ../libasync/vec.h:30:
../libasync/array.h:85:29: warning: 'array' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
template<class T, size_t n> class array {
                            ^
../libasync/array.h:75:29: note: did you mean class here?
--- starttls.o ---
starttls.C:86:10: warning: 'DH_generate_parameters' is deprecated [-Wdeprecated-declarations]
--- config.o ---
template<class T, size_t n> struct array;
                            ^~~~~~
                            class
--- starttls.o ---
    dh = DH_generate_parameters (len, 2, NULL, NULL);
         ^
/usr/include/openssl/dh.h:135:1: note: 'DH_generate_parameters' has been explicitly marked deprecated here
DEPRECATEDIN_0_9_8(DH *DH_generate_parameters(int prime_len, int generator,
^
/usr/include/openssl/opensslconf.h:139:34: note: expanded from macro 'DEPRECATEDIN_0_9_8'
# define DEPRECATEDIN_0_9_8(f)   DECLARE_DEPRECATED(f)
                                 ^
/usr/include/openssl/opensslconf.h:102:53: note: expanded from macro 'DECLARE_DEPRECATED'
# define DECLARE_DEPRECATED(f)    f __attribute__ ((deprecated));
                                                    ^
starttls.C:207:7: warning: 'RAND_pseudo_bytes' is deprecated [-Wdeprecated-declarations]
  if (RAND_pseudo_bytes (sessid, sizeof (sessid)) >= 0)
      ^
/usr/include/openssl/rand.h:47:1: note: 'RAND_pseudo_bytes' has been explicitly marked deprecated here
DEPRECATEDIN_1_1_0(int RAND_pseudo_bytes(unsigned char *buf, int num))
^
/usr/include/openssl/opensslconf.h:127:34: note: expanded from macro 'DEPRECATEDIN_1_1_0'
# define DEPRECATEDIN_1_1_0(f)   DECLARE_DEPRECATED(f)
                                 ^
/usr/include/openssl/opensslconf.h:102:53: note: expanded from macro 'DECLARE_DEPRECATED'
--- async_ssl.o ---
In file included from async_ssl.C:24:
In file included from ./async_ssl.h:28:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
--- starttls.o ---
# define DECLARE_DEPRECATED(f)    f __attribute__ ((deprecated));
                                                    ^
--- async_ssl.o ---
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:45:9: note: in instantiation of template class 'ptr<callback<void, str, int, void> >' requested here
  rcb_t rcb;
        ^
In file included from async_ssl.C:24:
In file included from ./async_ssl.h:28:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:58:39: note: in instantiation of template class 'ref<callback<void, str, int, void> >' requested here
    { infn = &aios::rnone; rcb_t::ref cb = rcb; rcb = NULL; (*cb) (s, err); }
                                      ^
In file included from async_ssl.C:24:
In file included from ./async_ssl.h:28:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:67:29: note: in instantiation of template class 'ptr<callback<void, int, void, void> >' requested here
  virtual void mkwcb (wcb_t cb) { if (fd >= 0) (*cb) (err); }
                            ^
In file included from async_ssl.C:24:
In file included from ./async_ssl.h:28:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:116:20: note: in instantiation of template class 'ref<aios>' requested here
  static ref<aios> alloc (int fd, size_t rbsz = defrbufsize)
                   ^
In file included from async_ssl.C:24:
In file included from ./async_ssl.h:28:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:161:44: note: in instantiation of template class 'ptr<aios>' requested here
  aiosout (const aios_t::ptr &a) : strbuf (a->outb), s(a) { s->outstart (); }
                                           ^
--- starttls.o ---
starttls.C:267:13: error: cannot initialize a variable of type 'char *' with an rvalue of type 'const char *'
  if (char *vers = SSL_get_cipher_version (ssl->get_ssl ()))
            ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
starttls.C:302:13: error: cannot initialize a variable of type 'char *' with an rvalue of type 'const char *'
  if (char *vers = SSL_get_cipher_version (ssl->get_ssl ()))
            ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, qhash_slot<str, str> *, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, const qhash_slot<str, str> &, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, qhash_slot<int, dh_st *> *, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<int, dh_st *, hashfn<int>, equals<int>, qhash_lookup_return<dh_st *>, &qhash_slot<int, dh_st *>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
starttls.C:72:27: note: in instantiation of member function 'qhash<int, dh_st *, hashfn<int>, equals<int>, qhash_lookup_return<dh_st *>, &qhash_slot<int, dh_st *>::link>::~qhash' requested here
  static qhash<int, DH *> parmtab;
                          ^
In file included from starttls.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, const qhash_slot<int, dh_st *> &, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<int, dh_st *, hashfn<int>, equals<int>, qhash_lookup_return<dh_st *>, &qhash_slot<int, dh_st *>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
starttls.C:72:27: note: in instantiation of member function 'qhash<int, dh_st *, hashfn<int>, equals<int>, qhash_lookup_return<dh_st *>, &qhash_slot<int, dh_st *>::link>::~qhash' requested here
  static qhash<int, DH *> parmtab;
                          ^
--- config.o ---
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:673:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R> > ref;
          ^
../libasync/suio++.h:52:11: note: in instantiation of template class 'callback<void, void, void, void>' requested here
  typedef callback<void>::ref cb_t;
          ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:674:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R> > ptr;
          ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/suio++.h:57:10: note: in instantiation of template class 'ref<callback<void, void, void, void> >' requested here
    cb_t cb;
         ^
--- starttls.o ---
99 warnings and 2 errors generated.
--- config.o ---
../libasync/suio++.h:250:28: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:250:28: note: did you mean class here?
extern void suio_vuprintf (struct suio *, const char *, va_list);
                           ^~~~~~
                           class
../libasync/suio++.h:251:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:251:27: note: did you mean class here?
extern void suio_uprintf (struct suio *, const char *, ...)
                          ^~~~~~
                          class
../libasync/suio++.h:268:27: warning: struct 'suio' was previously declared as a class [-Wmismatched-tags]
char *suio_flatten (const struct suio *);
                          ^
../libasync/suio++.h:46:7: note: previous use is here
class suio {
      ^
../libasync/suio++.h:268:27: note: did you mean class here?
char *suio_flatten (const struct suio *);
                          ^~~~~~
                          class
--- starttls.o ---
*** [starttls.o] Error code 1

make[2]: stopped in /data/scratch/mail/avenger/work/avenger-0.8.4/asmtpd
--- config.o ---
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
../libasync/str.h:178:1: warning: 'bssstr' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct bssstr : public str {
^
../libasync/str.h:91:10: note: did you mean struct here?
  friend class bssstr;
         ^~~~~
         struct
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/str.h:273:19: note: in instantiation of template class 'ref<suio>' requested here
  const ref<suio> uio;
                  ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:39:9: note: in instantiation of template class 'callback<void, int, void, void>' requested here
typedef callback<void, int>::ref cbi;
        ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:40:9: note: in instantiation of template class 'callback<void, str, void, void>' requested here
typedef callback<void, str>::ref cbs;
        ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/amisc.h:41:9: note: in instantiation of template class 'callback<void, bool, void, void>' requested here
typedef callback<void, bool>::ref cbb;
        ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/amisc.h:104:16: note: in instantiation of template class 'ptr<callback<void, void, void, void> >' requested here
             cbv::ptr postforkcb = NULL, char *const *env = NULL);
                      ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/async.h:39:21: note: in instantiation of template class 'ref<callback<void, int, void, void> >' requested here
void chldcb (pid_t, cbi::ptr);
                    ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/async.h:77:24: note: in instantiation of template class 'callback<void, str, ptr<hostent>, int>' requested here
void identptr (int fd, callback<void, str, ptr<hostent>, int>::ref,
                       ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/async.h:79:21: note: in instantiation of template class 'callback<void, str, int, void>' requested here
void ident (int fd, callback<void, str, int>::ref, unsigned timeout = 15);
                    ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
--- quota.o ---
121 warnings generated.
--- config.o ---
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:104:9: note: in instantiation of template class 'callback<void, ptr<hostent>, int, void>' requested here
typedef callback<void, ptr<hostent>, int>::ref cbhent;
        ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:109:9: note: in instantiation of template class 'callback<void, ptr<mxlist>, int, void>' requested here
typedef callback<void, ptr<mxlist>, int>::ref cbmxlist;
        ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:112:9: note: in instantiation of template class 'callback<void, ptr<srvlist>, int, void>' requested here
typedef callback<void, ptr<srvlist>, int>::ref cbsrvlist;
        ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
../libasync/dns.h:115:9: note: in instantiation of template class 'callback<void, ptr<txtlist>, int, void>' requested here
typedef callback<void, ptr<txtlist>, int>::ref cbtxtlist;
        ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/dns.h:120:19: note: in instantiation of template class 'ref<callback<void, ptr<srvlist>, int, void> >' requested here
               cbsrvlist cb, bool search = false)
                         ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/dns.h:122:10: note: in instantiation of template class 'ptr<srvlist>' requested here
  return dns_srvbyname (strbuf ("_%s._%s.%s", srv, proto, name), cb, search);
         ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
../libasync/parseopt.h:98:9: note: in instantiation of template class 'callback<void, vec<str, 0>, str, bool *>' requested here
typedef callback<void, vec<str>, str, bool *>::ref confcb;
        ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- quota.o ---
mv -f .deps/quota.Tpo .deps/quota.Po
--- config.o ---
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:114:3: note: in instantiation of template class 'ref<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
  ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:114:15: note: in instantiation of template class 'ptr<callback<void, vec<str, 0>, str, bool *> >' requested here
  confcb::ptr cnfcb;
              ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/parseopt.h:115:3: note: in instantiation of template class 'ref<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
  ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/parseopt.h:115:12: note: in instantiation of template class 'ptr<callback<void, str, void, void> >' requested here
  cbs::ptr scb;
           ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, conftab_el *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const conftab_el &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/ihash.h:229:12: note: in instantiation of template class 'ihash_core<conftab_el, &conftab_el::lnk>' requested here
  : public ihash_core<V, field>
           ^
../libasync/parseopt.h:178:71: note: in instantiation of template class 'ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk, hashfn<const str>, equals<const str> >' requested here
  ihash<const str, conftab_el, &conftab_el::lcname, &conftab_el::lnk> tab;
                                                                      ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:45:9: note: in instantiation of template class 'ptr<callback<void, str, int, void> >' requested here
  rcb_t rcb;
        ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:58:39: note: in instantiation of template class 'ref<callback<void, str, int, void> >' requested here
    { infn = &aios::rnone; rcb_t::ref cb = rcb; rcb = NULL; (*cb) (s, err); }
                                      ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:67:29: note: in instantiation of template class 'ptr<callback<void, int, void, void> >' requested here
  virtual void mkwcb (wcb_t cb) { if (fd >= 0) (*cb) (err); }
                            ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/aios.h:116:20: note: in instantiation of template class 'ref<aios>' requested here
  static ref<aios> alloc (int fd, size_t rbsz = defrbufsize)
                   ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
../libasync/aios.h:161:44: note: in instantiation of template class 'ptr<aios>' requested here
  aiosout (const aios_t::ptr &a) : strbuf (a->outb), s(a) { s->outstart (); }
                                           ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:73:16: note: in instantiation of template class 'ptr<hostent>' requested here
  ptr<hostent> h;
               ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:74:19: note: in instantiation of template class 'ptr<rbl_status>' requested here
  ptr<rbl_status> rs;
                  ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<sockaddr_in, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
  bhash<sockaddr_in> bindaddrh;
                     ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<sockaddr_in, void> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<sockaddr_in, void>, &qhash_slot<sockaddr_in, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:187:22: note: in instantiation of template class 'bhash<sockaddr_in, hashfn<sockaddr_in>, equals<sockaddr_in>, &qhash_slot<sockaddr_in, void>::link>' requested here
  bhash<sockaddr_in> bindaddrh;
                     ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
  bhash<str> nocheck;
             ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, void> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, void>, &qhash_slot<str, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
./asmtpd.h:202:14: note: in instantiation of template class 'bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link>' requested here
  bhash<str> nocheck;
             ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, long> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
  qhash<str, time_t> warn_filter;
                     ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, long> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, long>, &qhash_slot<str, long>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:213:22: note: in instantiation of template class 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>' requested here
  qhash<str, time_t> warn_filter;
                     ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:373:31: note: in instantiation of template class 'ptr<const rbl_status>' requested here
  const ptr<const rbl_status> rblcon;
                              ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:386:15: note: in instantiation of template class 'ptr<mxlist>' requested here
  ptr<mxlist> mxl;
              ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:454:28: note: in instantiation of template class 'ptr<const hostent>' requested here
  const ptr<const hostent> ptr_cache;
                           ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:473:21: note: in instantiation of template class 'ptr<const mxlist>' requested here
  ptr<const mxlist> get_mxl () const { return mxl; }
                    ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:491:9: note: in instantiation of template class 'callback<void, ref<progout>, void, void>' requested here
typedef callback<void, ref<progout> >::ref runprogcb_t;
        ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:524:11: note: in instantiation of template class 'callback<void, avif::disp_t, str, void>' requested here
  typedef callback<void, disp_t, str>::ref cb_t;
          ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:533:14: note: in instantiation of template class 'ref<callback<void, avif::disp_t, str, void> >' requested here
  const cb_t cb;
             ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/list.h:129:27: note: in instantiation of template class 'callback<void, avif::result *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) const {
                          ^
./asmtpd.h:539:32: note: in instantiation of template class 'tailq<avif::result, &avif::result::link>' requested here
  tailq<result, &result::link> reslist;
                               ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from config.C:24:
./asmtpd.h:571:1: warning: 'enqmsg' defined as a class here but previously declared as a struct [-Wmismatched-tags]
class enqmsg {
^
./asmtpd.h:354:1: note: did you mean class here?
struct enqmsg;
^~~~~~
class
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1699:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2> > ref;
          ^
./asmtpd.h:617:9: note: in instantiation of template class 'callback<void, str, ptr<mxlist>, void>' requested here
typedef callback<void, str, ptr<mxlist> >::ref vrfycb_t;
        ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1700:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<str, str> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<str, str> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:63:12: note: in instantiation of template class 'ihash_core<qhash_slot<str, str>, &qhash_slot<str, str>::link>' requested here
  : public ihash_core<qhash_slot<K, V>, kludge> {
           ^
./asmtpd.h:622:19: note: in instantiation of template class 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>' requested here
  qhash<str, str> table;
                  ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
./asmtpd.h:694:11: note: in instantiation of template class 'callback<void, spf_t *, void, void>' requested here
  typedef callback<void, spf_t *>::ref cb_t;
          ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:696:3: note: in instantiation of template class 'ref<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
  ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:696:13: note: in instantiation of template class 'ptr<callback<void, spf_t *, void, void> >' requested here
  cb_t::ptr cb;
            ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./asmtpd.h:713:20: note: in instantiation of template class 'ref<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
  ref<bhash<str> > loopcheck;
                   ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./asmtpd.h:762:20: note: in instantiation of template class 'ptr<bhash<str, hashfn<str>, equals<str>, &qhash_slot<str, void>::link> >' requested here
         ptr<bhash<str> > loopcheck = NULL, int recdepth = 0);
                          ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2212:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1, B2, B3> > ref;
          ^
./asmtpd.h:770:9: note: in instantiation of template class 'callback<void, spf_result, str, str>' requested here
typedef callback<void, spf_result, str, str>::ref spfckcb_t;
        ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:2213:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1, B2, B3> > ptr;
          ^
--- rbl.o ---
91 warnings generated.
--- config.o ---
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
config.C:297:19: note: in instantiation of template class 'ref<rbl>' requested here
  rbls.push_back (New refcounted<rbl> (domain, flags, score));
                  ^
../libasync/opnew.h:64:13: note: expanded from macro 'New'
#define New new
            ^
--- rbl.o ---
mv -f .deps/rbl.Tpo .deps/rbl.Po
--- config.o ---
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:196:27: note: in instantiation of template class 'callback<void, qhash_slot<unsigned int, void> *, void, void>' requested here
  void traverse (typename callback<void, T *>::ref cb) {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<unsigned int, void>, &qhash_slot<unsigned int, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
config.C:471:25: note: in instantiation of template class 'bhash<unsigned int, hashfn<unsigned int>, equals<unsigned int>, &qhash_slot<unsigned int, void>::link>' requested here
    bhash <GROUPLIST_T> cache;
                        ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
../libasync/callback.h:1186:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<callback<R, B1> > ref;
          ^
../libasync/ihash.h:204:27: note: in instantiation of template class 'callback<void, const qhash_slot<unsigned int, void> &, void, void>' requested here
  void traverse (typename callback<void, const T &>::ref cb) const {
                          ^
../libasync/qhash.h:149:12: note: in instantiation of template class 'ihash_core<qhash_slot<unsigned int, void>, &qhash_slot<unsigned int, void>::link>' requested here
  : public ihash_core<qhash_slot<K, void>, kludge> {
           ^
config.C:471:25: note: in instantiation of template class 'bhash<unsigned int, hashfn<unsigned int>, equals<unsigned int>, &qhash_slot<unsigned int, void>::link>' requested here
    bhash <GROUPLIST_T> cache;
                        ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
../libasync/callback.h:1187:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<callback<R, B1> > ptr;
          ^
--- async_ssl.o ---
In file included from async_ssl.C:24:
In file included from ./async_ssl.h:28:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:482:11: warning: struct 'ref' was previously declared as a class [-Wmismatched-tags]
  typedef struct ref<T> ref;
          ^
./async_ssl.h:48:13: note: in instantiation of template class 'ptr<suio>' requested here
  ptr<suio> oldout;
            ^
In file included from async_ssl.C:24:
In file included from ./async_ssl.h:28:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
./async_ssl.h:86:22: note: in instantiation of template class 'ref<aiossl>' requested here
  static ref<aiossl> alloc (int fd, size_t rbsz = defrbufsize)
                     ^
--- config.o ---
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, qhash_slot<str, str> *, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, const qhash_slot<str, str> &, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
./asmtpd.h:626:3: note: in instantiation of member function 'qhash<str, str, hashfn<str>, equals<str>, qhash_lookup_return<str>, &qhash_slot<str, str>::link>::~qhash' requested here
  map_base () : loadno (0) {}
  ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, qhash_slot<str, long> *, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
config.C:54:10: note: in instantiation of member function 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>::~qhash' requested here
options::options ()
         ^
In file included from config.C:24:
In file included from ./asmtpd.h:25:
In file included from ../libasync/async.h:28:
In file included from ../libasync/amisc.h:29:
In file included from ../libasync/err.h:28:
In file included from ../libasync/str.h:29:
In file included from ../libasync/suio++.h:30:
In file included from ../libasync/callback.h:612:
../libasync/refcnt.h:420:11: warning: struct 'ptr' was previously declared as a class [-Wmismatched-tags]
  typedef struct ptr<T> ptr;
          ^
../libasync/qhash.h:90:21: note: in instantiation of template class 'ref<callback<void, const qhash_slot<str, long> &, void, void> >' requested here
    core::traverse (wrap (this, &qhash::delslot));
                    ^
../libasync/qhash.h:93:15: note: in instantiation of member function 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>::clear' requested here
  ~qhash () { clear (); }
              ^
config.C:54:10: note: in instantiation of member function 'qhash<str, long, hashfn<str>, equals<str>, qhash_lookup_return<long>, &qhash_slot<str, long>::link>::~qhash' requested here
options::options ()
         ^
--- runprog.o ---
90 warnings generated.
mv -f .deps/runprog.Tpo .deps/runprog.Po
--- netpath.o ---
48 warnings generated.
mv -f .deps/netpath.Tpo .deps/netpath.Po
--- synfp.o ---
68 warnings generated.
mv -f .deps/synfp.Tpo .deps/synfp.Po
--- async_ssl.o ---
28 warnings generated.
mv -f .deps/async_ssl.Tpo .deps/async_ssl.Po
--- rcptcheck.o ---
88 warnings generated.
mv -f .deps/rcptcheck.Tpo .deps/rcptcheck.Po
--- vrfy.o ---
105 warnings generated.
mv -f .deps/vrfy.Tpo .deps/vrfy.Po
--- avif.o ---
117 warnings generated.
mv -f .deps/avif.Tpo .deps/avif.Po
--- spf.o ---
94 warnings generated.
--- asmtpd.o ---
121 warnings generated.
--- spf.o ---
mv -f .deps/spf.Tpo .deps/spf.Po
--- asmtpd.o ---
mv -f .deps/asmtpd.Tpo .deps/asmtpd.Po
--- config.o ---
95 warnings generated.
mv -f .deps/config.Tpo .deps/config.Po
--- smtpd.o ---
124 warnings generated.
mv -f .deps/smtpd.Tpo .deps/smtpd.Po
1 error

make[2]: stopped in /data/scratch/mail/avenger/work/avenger-0.8.4/asmtpd
*** [all-recursive] Error code 1

make[1]: stopped in /data/scratch/mail/avenger/work/avenger-0.8.4
1 error

make[1]: stopped in /data/scratch/mail/avenger/work/avenger-0.8.4
*** [all] Error code 2

make: stopped in /data/scratch/mail/avenger/work/avenger-0.8.4
1 error

make: stopped in /data/scratch/mail/avenger/work/avenger-0.8.4
*** Error code 2

Stop.
make[1]: stopped in /data/pkgsrc/mail/avenger
*** Error code 1

Stop.
make: stopped in /data/pkgsrc/mail/avenger