home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / KA9QTCPP / NNTP4NOS.ZIP / SOCKET.H < prev   
Encoding:
C/C++ Source or Header  |  1990-04-30  |  4.8 KB  |  167 lines

  1. #ifndef    SOCK_STREAM
  2.  
  3. #include "global.h"
  4.  
  5. /* Local IP wildcard address */
  6. #define    INADDR_ANY    0x0L
  7.  
  8. /* IP protocol numbers */
  9. #define    IPPROTO_ICMP    1
  10. #define    IPPROTO_TCP    6
  11. #define    IPPROTO_UDP    17
  12.  
  13. /* TCP port numbers */
  14. #define    IPPORT_ECHO    7    /* Echo data port */
  15. #define    IPPORT_DISCARD    9    /* Discard data port */
  16. #define    IPPORT_FTPD    20    /* FTP Data port */
  17. #define    IPPORT_FTP    21    /* FTP Control port */
  18. #define IPPORT_TELNET    23    /* Telnet port */
  19. #define IPPORT_SMTP    25    /* Mail port */
  20. #define    IPPORT_FINGER    79    /* Finger port */
  21. #define    IPPORT_TTYLINK    87    /* Chat port */
  22. #define IPPORT_NNTP    119    /* News port */
  23.      
  24. /* UDP port numbers */
  25. #define    IPPORT_DOMAIN    53
  26. #define    IPPORT_RIP    520
  27. #define    IPPORT_REMOTE    1234    /* Pulled out of the air */
  28.  
  29. #define    AF_INET        0
  30. #define    AF_AX25        1
  31. #define AF_NETROM    2
  32. #define    AF_LOCAL    3
  33.  
  34. #define    SOCK_STREAM    0
  35. #define    SOCK_DGRAM    1
  36. #define    SOCK_RAW    2
  37. #define SOCK_SEQPACKET    3
  38.  
  39. #define    EMFILE    1
  40. #define    EBADF    2
  41. #define    EINVAL    3
  42. #define    ESOCKTNOSUPPORT    4
  43. #define    EAFNOSUPPORT    5
  44. #define    EOPNOTSUPP    6
  45. #define    EFAULT        7
  46. #define    ENOTCONN    8
  47. #define    ECONNREFUSED    9
  48. #define EAFNOSUPP    10
  49. #define    EISCONN        11
  50. #define    EWOULDBLOCK    12
  51. #define    EINTR        13
  52. #define    EADDRINUSE    14
  53. #define    ENOMEM        15
  54. #define EMSGSIZE    16
  55. #define    EALARM        17
  56. #define    EABORT        18
  57.  
  58. extern int Console;    /* Console socket number */
  59. extern int Axi_sock;    /* Socket listening to AX25 (there can be only one) */
  60.  
  61. /* Berkeley format socket address structures. These things were rather
  62.  * poorly thought out, but compatibility is important (or so they say).
  63.  * Note that all the sockaddr variants must be of the same size, 16 bytes
  64.  * to be specific. Although attempts have been made to account for alignment
  65.  * requirements (notably in sockaddr_ax), porters should check each
  66.  * structure.
  67.  */
  68.  
  69. /* Generic socket address structure */
  70. struct sockaddr {
  71.     short sa_family;
  72.     char sa_data[14];
  73. };
  74.  
  75. /* This is a structure for "historical" reasons (whatever they are) */
  76. struct in_addr {
  77.     unsigned long s_addr;
  78. };
  79.  
  80. /* Socket address, DARPA Internet style */
  81. struct sockaddr_in {
  82.     short sin_family;
  83.     unsigned short sin_port;
  84.     struct in_addr sin_addr;
  85.     char sin_zero[8];
  86. };
  87.  
  88. /* AX.25 sockaddr stuff */
  89. #define    AXALEN        7
  90.  
  91. /* Number of chars in interface field. The involved definition takes possible
  92.  * alignment requirements into account, since ax25_addr is of an odd size.
  93.  */
  94. #define    ILEN    (sizeof(struct sockaddr) - sizeof(short) - AXALEN)
  95.  
  96. /* Socket address, AX.25 style */
  97. struct sockaddr_ax {
  98.     short sax_family;        /* 2 bytes */
  99.     char ax25_addr[AXALEN];
  100.     char iface[ILEN];        /* Interface name */
  101. };
  102.  
  103. /* Netrom socket address. */
  104. #ifndef NR4MAXCIRC
  105. struct nr4_addr {
  106.     char user[AXALEN];
  107.     char node[AXALEN];
  108. };
  109. #endif
  110.  
  111. struct sockaddr_nr {
  112.     short nr_family;
  113.     struct nr4_addr nr_addr;
  114. };
  115.  
  116. #define    SOCKSIZE    (sizeof(struct sockaddr))
  117. #define MAXSOCKSIZE    SOCKSIZE /* All sockets are of the same size for now */
  118.  
  119. extern int32 Ip_addr;
  120. /* In socket.c: */
  121. int accept __ARGS((int s,char *peername,int *peernamelen));
  122. int bind __ARGS((int s,char *name,int namelen));
  123. int close_s __ARGS((int s));
  124. int connect __ARGS((int s,char *peername,int peernamelen));
  125. void freesock __ARGS((struct proc *pp));
  126. int getpeername __ARGS((int s,char *peername,int *peernamelen));
  127. int getsockname __ARGS((int s,char *name,int *namelen));
  128. int listen __ARGS((int s,int backlog));
  129. int recv_mbuf __ARGS((int s,struct mbuf **bpp,int flags,char *from,int *fromlen));
  130. int send_mbuf __ARGS((int s,struct mbuf *bp,int flags,char *to,int tolen));
  131. int setflush __ARGS((int s,int c));
  132. int shutdown __ARGS((int s,int how));
  133. int socket __ARGS((int af,int type,int protocol));
  134. void sockinit __ARGS((void));
  135. int sockkick __ARGS((int s));
  136. int socklen __ARGS((int s,int rtx));
  137. struct proc *sockowner __ARGS((int s,struct proc *newowner));
  138. int usesock __ARGS((int s));
  139.  
  140. /* In sockuser.c: */
  141. void flushsocks __ARGS((void));
  142. int keywait __ARGS((char *prompt,int flush));
  143. int recv __ARGS((int s,char *buf,int len,int flags));
  144. int recvchar __ARGS((int s));
  145. int recvfrom __ARGS((int s,char *buf,int len,int flags,char *from,int *fromlen));
  146. int recvline __ARGS((int s,char *buf,unsigned len));
  147. int send __ARGS((int s,char *buf,int len,int flags));
  148. int sendto __ARGS((int s,char *buf,int len,int flags,char *to,int tolen));
  149. int seteol __ARGS((int s,char *seq));
  150. void tflush __ARGS((void));
  151. int tprintf __ARGS((char *fmt,...));
  152. int tputc __ARGS((char c));
  153. int tputs __ARGS((char *s));
  154. void usflush __ARGS((int s));
  155. int usprintf __ARGS((int s,char *fmt,...));
  156. int usputc __ARGS((int s,char c));
  157. int usputs __ARGS((int s,char *x));
  158. int usvprintf __ARGS((int s,char *fmt, va_list args));
  159.  
  160. /* In file sockutil.c: */
  161. struct usock *itop __ARGS((int s));
  162. char *psocket __ARGS((void *p));
  163. char *sockerr __ARGS((int s));
  164. char *sockstate __ARGS((int s));
  165.  
  166. #endif    /* SOCK_STREAM */
  167.