IPv6 support (hopefully with fewer future transition pains)
[ircu2.10.12-pk.git] / include / listener.h
index 26d5e86e34c123f375656e8bd71aa1b1a414ddfb..f33564e7ce5a411ee69397c88782ffad2f07f6a1 100644 (file)
 #ifndef INCLUDED_ircd_events_h
 #include "ircd_events.h"
 #endif
+#ifndef INCLUDED_res_h
+#include "res.h"
+#endif
 #ifndef INCLUDED_sys_types_h
 #include <sys/types.h>       /* size_t, broken BSD system headers */
 #define INCLUDED_sys_types_h
 #endif
-#ifndef INCLUDED_netinet_in_h
-#include <netinet/in.h>      /* in_addr */
-#define INCLUDED_netinet_in_h
-#endif
 
 struct Client;
+struct StatDesc;
 
 struct Listener {
   struct Listener* next;               /* list node pointer */
   int              fd;                 /* file descriptor */
-  int              port;               /* listener IP port */
   int              ref_count;          /* number of connection references */
   unsigned char    active;             /* current state of listener */
   unsigned char    hidden;             /* hidden in stats output for clients */
   unsigned char    server;             /* 1 if port is a server listener */
+  unsigned char    mask_bits;          /* number of bits in mask address */
   int              index;              /* index into poll array */
   time_t           last_accept;        /* last time listener accepted */
-  struct in_addr   addr;               /* virtual address or INADDR_ANY */
-  struct in_addr   mask;               /* listener hostmask */
+  struct irc_sockaddr addr;            /* virtual address and port */
+  struct irc_in_addr mask;             /* listener hostmask */
   struct Socket    socket;             /* describe socket to event system */
 };
 
@@ -62,8 +62,8 @@ extern void        close_listeners(void);
 extern void        count_listener_memory(int* count_out, size_t* size_out);
 extern const char* get_listener_name(const struct Listener* listener);
 extern void        mark_listeners_closing(void);
-extern void        show_ports(struct Client* client, int show_hidden,
-                              int port, int count);
+extern void show_ports(struct Client* client, struct StatDesc* sd, int stat,
+                       char* param);
 extern void        release_listener(struct Listener* listener);
 
 #endif /* INCLUDED_listener_h */