X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=include%2Flistener.h;h=47dfff1645d87690f34b532961112179c559b30a;hb=a36ad5e29241b0c89379947b13887cb6930ef3e0;hp=4dd74db6c503e0a8eb06a52414edd83dead4612d;hpb=ef4270d668183cf9e9a3d96cab7f305c5c5f1aa7;p=ircu2.10.12-pk.git diff --git a/include/listener.h b/include/listener.h index 4dd74db..47dfff1 100644 --- a/include/listener.h +++ b/include/listener.h @@ -48,6 +48,10 @@ enum ListenerFlag { LISTEN_HIDDEN, /** Port accepts only server connections. */ LISTEN_SERVER, + /** Port listens for IPv4 connections. */ + LISTEN_IPV4, + /** Port listens for IPv6 connections. */ + LISTEN_IPV6, /** Sentinel for counting listener flags. */ LISTEN_LAST_FLAG }; @@ -58,14 +62,16 @@ DECLARE_FLAGSET(ListenerFlags, LISTEN_LAST_FLAG); struct Listener { struct Listener* next; /**< list node pointer */ struct ListenerFlags flags; /**< on-off flags for listener */ - int fd; /**< file descriptor */ + int fd_v4; /**< file descriptor for IPv4 */ + int fd_v6; /**< file descriptor for IPv6 */ int ref_count; /**< number of connection references */ 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 irc_sockaddr addr; /**< virtual address and port */ struct irc_in_addr mask; /**< listener hostmask */ - struct Socket socket; /**< describe socket to event system */ + struct Socket socket_v4; /**< describe IPv4 socket to event system */ + struct Socket socket_v6; /**< describe IPv6 socket to event system */ }; #define listener_server(LISTENER) FlagHas(&(LISTENER)->flags, LISTEN_SERVER)