priv.h 1.1 KB

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