Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
typedef struct Rock Rock;
2
 
3
enum
4
{
5
	Ctlsize=	128,
6
 
7
	/* states */
8
	Sopen=	0,
9
	Sbound,
10
	Sconnected,
11
 
12
	/* types of name */
13
	Tsys=	0,
14
	Tip,
15
	Tdom,
16
};
17
 
18
/*
19
 *  since BSD programs expect to perform both control and data functions
20
 *  through a single fd, we need to hide enough info under a rock to
21
 *  be able to open the control file when we need it.
22
 */
23
struct Rock
24
{
25
	Rock		*next;
26
	unsigned long	dev;		/* inode & dev of data file */
27
	unsigned long	inode;		/* ... */
28
	int		domain;		/* from socket call */
29
	int		stype;		/* ... */
30
	int		protocol;	/* ... */
31
	struct sockaddr	addr;		/* address from bind */
32
	int		reserved;	/* use a priveledged port # (< 1024) */
33
	struct sockaddr	raddr;		/* peer address */
34
	char		ctl[Ctlsize];	/* name of control file (if any) */
35
	int		other;		/* fd of the remote end for Unix domain */
36
};
37
 
38
extern Rock*	_sock_findrock(int, struct stat*);
39
extern Rock*	_sock_newrock(int);
40
extern void	_sock_srvname(char*, char*);
41
extern int	_sock_srv(char*, int);
42
extern int	_sock_data(int, char*, int, int, int, Rock**);
43
extern int	_sock_ipattr(char*);
44
extern void	_sock_ingetaddr(Rock*, struct sockaddr_in*, int*, char*);
45
 
46
extern void	_syserrno(void);