12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- typedef struct Rock Rock;
- enum
- {
- Ctlsize= 128,
- /* states */
- Sopen= 0,
- Sbound,
- Sconnected,
- /* types of name */
- Tsys= 0,
- Tip,
- Tdom,
- };
- /*
- * since BSD programs expect to perform both control and data functions
- * through a single fd, we need to hide enough info under a rock to
- * be able to open the control file when we need it.
- */
- struct Rock
- {
- Rock *next;
- unsigned long dev; /* inode & dev of data file */
- unsigned long inode; /* ... */
- int domain; /* from socket call */
- int stype; /* ... */
- int protocol; /* ... */
- struct sockaddr addr; /* address from bind */
- int reserved; /* use a priveledged port # (< 1024) */
- struct sockaddr raddr; /* peer address */
- char ctl[Ctlsize]; /* name of control file (if any) */
- int other; /* fd of the remote end for Unix domain */
- };
- extern Rock* _sock_findrock(int, struct stat*);
- extern Rock* _sock_newrock(int);
- extern void _sock_srvname(char*, char*);
- extern int _sock_srv(char*, int);
- extern int _sock_data(int, char*, int, int, int, Rock**);
- extern int _sock_ipattr(char*);
- extern void _sock_ingetaddr(Rock*, struct sockaddr_in*, int*, char*);
- extern void _syserrno(void);
|