/usr/include/ircd-hybrid-8/fdlist.h is in hybrid-dev 1:8.1.13.dfsg.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | /*
* ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
* fdlist.h: The file descriptor list header.
*
* Copyright (C) 2002 by the past and present ircd coders, and others.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*
* $Id: fdlist.h 1736 2013-01-13 09:31:46Z michael $
*/
#ifndef INCLUDED_fdlist_h
#define INCLUDED_fdlist_h
#define FILEIO_V2
#include "ircd_defs.h"
#define FD_DESC_SZ 128 /* hostlen + comment */
enum {
COMM_OK,
COMM_ERR_BIND,
COMM_ERR_DNS,
COMM_ERR_TIMEOUT,
COMM_ERR_CONNECT,
COMM_ERROR,
COMM_ERR_MAX
};
struct _fde;
struct Client;
/* Callback for completed IO events */
typedef void PF(struct _fde *, void *);
/* Callback for completed connections */
/* int fd, int status, void * */
typedef void CNCB(struct _fde *, int, void *);
typedef struct _fde {
/* New-school stuff, again pretty much ripped from squid */
/*
* Yes, this gives us only one pending read and one pending write per
* filedescriptor. Think though: when do you think we'll need more?
*/
int fd; /* So we can use the fde_t as a callback ptr */
int comm_index; /* where in the poll list we live */
int evcache; /* current fd events as set up by the underlying I/O */
char desc[FD_DESC_SZ];
PF *read_handler;
void *read_data;
PF *write_handler;
void *write_data;
PF *timeout_handler;
void *timeout_data;
time_t timeout;
PF *flush_handler;
void *flush_data;
time_t flush_timeout;
struct {
unsigned int open:1;
unsigned int is_socket:1;
#ifdef HAVE_LIBCRYPTO
unsigned int pending_read:1;
#endif
} flags;
struct {
/* We don't need the host here ? */
struct irc_ssaddr S;
struct irc_ssaddr hostaddr;
CNCB *callback;
void *data;
/* We'd also add the retry count here when we get to that -- adrian */
} connect;
#ifdef HAVE_LIBCRYPTO
SSL *ssl;
#endif
struct _fde *hnext;
} fde_t;
#define FD_HASH_SIZE 1024
extern int number_fd;
extern int hard_fdlimit;
extern fde_t *fd_hash[];
extern fde_t *fd_next_in_loop;
extern void fdlist_init(void);
extern fde_t *lookup_fd(int);
extern void fd_open(fde_t *, int, int, const char *);
extern void fd_close(fde_t *);
extern void fd_dump(struct Client *);
extern void fd_note(fde_t *, const char *, ...);
extern void close_standard_fds(void);
extern void close_fds(fde_t *);
#endif /* INCLUDED_fdlist_h */
|