/*
* 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_
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 CALLBK_BUF_SIZE 64 /* max length of callback string */
#define ADDR_BUF_SIZE 64 /* max length of address string */
struct lpc_socket {
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];
struct object * owner_ob;
struct object * release_ob;
char read_callback[CALLBK_BUF_SIZE];
char write_callback[CALLBK_BUF_SIZE];
char close_callback[CALLBK_BUF_SIZE];
char * r_buf;
int r_off;
long r_len;
char * w_buf;
int w_off;
int w_len;
};
#define S_RELEASE 0x01
#define S_BLOCKED 0x02
#define S_HEADER 0x04
#define S_WACCEPT 0x08
#define S_BINARY 0x10
int socket_create PROT((enum socket_mode, char *, char *));
#endif /* _SOCKET_EFUNS_H_ */