IPv6 support (hopefully with fewer future transition pains)
[ircu2.10.12-pk.git] / include / uping.h
index db0984c7a45f690abc7d4cdda31623a5170d1c3c..3bb44b127df22146c4763d8afc9d46d3b871f0a9 100644 (file)
 #ifndef INCLUDED_ircd_defs_h
 #include "ircd_defs.h"
 #endif
+#ifndef INCLUDED_ircd_events_h
+#include "ircd_events.h"
+#endif
+#ifndef INCLUDED_res_h
+#include "res.h"
+#endif
 
 struct Client;
 struct ConfItem;
@@ -39,22 +45,29 @@ struct UPing
 {
   struct UPing*      next;     /* next ping in list, usually null */
   int                fd;       /* socket file descriptor */
-  struct sockaddr_in sin;      /* socket name (ip addr, port, family ) */
+  struct irc_sockaddr addr;      /* socket name (ip addr, port, family ) */
   char               count;    /* number of pings requested */
   char               sent;     /* pings sent */
   char               received; /* pings received */
   char               active;   /* ping active flag */
   struct Client*     client;   /* who requested the pings */
   time_t             lastsent; /* when last ping was sent */
-  time_t             timeout;  /* current ping timeout time */
   int                ms_min;   /* minimum time in milliseconds */
   int                ms_ave;   /* average time in milliseconds */
   int                ms_max;   /* maximum time in milliseconds */
   int                index;    /* index into poll array */
+  struct Socket      socket;   /* socket structure */
+  struct Timer       sender;   /* timer telling when next to send a ping */
+  struct Timer       killer;   /* timer to kill us */
+  unsigned int       freeable; /* zero when structure can be free()'d */
   char               name[HOSTLEN + 1]; /* server name to poing */
   char               buf[BUFSIZE];      /* buffer to hold ping times */
 };
 
+#define UPING_PENDING_SOCKET   0x01 /* pending socket destruction event */
+#define UPING_PENDING_SENDER   0x02 /* pending sender destruction event */
+#define UPING_PENDING_KILLER   0x04 /* pending killer destruction event */
+
 extern int UPingFileDescriptor;
 
 extern int  uping_init(void);