/* * socket_efuns.h -- definitions and prototypes for socket_efuns.c * 5-92 : Dwayne Fontenot : original coding. * 10-92 : Dave Richards : less original coding. */ #ifndef _SOCKET_EFUNS_H_ #define _SOCKET_EFUNS_H_ #include "std.h" enum socket_mode { MUD, STREAM, DATAGRAM, STREAM_BINARY, DATAGRAM_BINARY }; enum socket_state { CLOSED, UNBOUND, BOUND, LISTEN, DATA_XFER }; #define BUF_SIZE 2048 /* max reliable packet size */ #define ADDR_BUF_SIZE 64 /* max length of address string */ typedef struct { int fd; short flags; enum socket_mode mode; enum socket_state state; struct sockaddr_in l_addr; struct sockaddr_in r_addr; char name[ADDR_BUF_SIZE]; object_t *owner_ob; object_t *release_ob; union string_or_func read_callback; union string_or_func write_callback; union string_or_func close_callback; char *r_buf; int r_off; long r_len; char *w_buf; int w_off; int w_len; } lpc_socket_t; extern lpc_socket_t lpc_socks[MAX_EFUN_SOCKS]; #define S_RELEASE 0x01 #define S_BLOCKED 0x02 #define S_HEADER 0x04 #define S_WACCEPT 0x08 #define S_BINARY 0x10 #define S_READ_FP 0x20 #define S_WRITE_FP 0x40 #define S_CLOSE_FP 0x80 void init_sockets PROT((void)); int check_valid_socket PROT((char *, int, object_t *, char *, int)); void socket_read_select_handler PROT((int)); void socket_write_select_handler PROT((int)); void assign_socket_owner PROT((svalue_t *, object_t *)); object_t *get_socket_owner PROT((int)); void dump_socket_status PROT((outbuffer_t *)); void close_referencing_sockets PROT((object_t *)); int get_socket_address PROT((int, char *, int *)); int socket_bind PROT((int, int)); int socket_create PROT((enum socket_mode, svalue_t *, svalue_t *)); int socket_listen PROT((int, svalue_t *)); int socket_accept PROT((int, svalue_t *, svalue_t *)); int socket_connect PROT((int, char *, svalue_t *, svalue_t *)); int socket_write PROT((int, svalue_t *, char *)); int socket_close PROT((int, int)); int socket_release PROT((int, object_t *, svalue_t *)); int socket_acquire PROT((int, svalue_t *, svalue_t *, svalue_t *)); char *socket_error PROT((int)); #endif /* _SOCKET_EFUNS_H_ */