diff options
author | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
---|---|---|
committer | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
commit | e5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch) | |
tree | d8d51eac403f07814b9e936eed0c9a79195e2450 /sys/src/ape/lib/bsd/priv.h |
Import sources from 2011-03-30 iso image
Diffstat (limited to 'sys/src/ape/lib/bsd/priv.h')
-rwxr-xr-x | sys/src/ape/lib/bsd/priv.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/sys/src/ape/lib/bsd/priv.h b/sys/src/ape/lib/bsd/priv.h new file mode 100755 index 000000000..f99fc5673 --- /dev/null +++ b/sys/src/ape/lib/bsd/priv.h @@ -0,0 +1,46 @@ +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); |