sock.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. /*
  2. * Copyright (c) 1993 W. Richard Stevens. All rights reserved.
  3. * Permission to use or modify this software and its documentation only for
  4. * educational purposes and without fee is hereby granted, provided that
  5. * the above copyright notice appear in all copies. The author makes no
  6. * representations about the suitability of this software for any purpose.
  7. * It is provided "as is" without express or implied warranty.
  8. */
  9. #include "unp.h"
  10. #include <sys/uio.h>
  11. #ifdef __bsdi__
  12. #include <machine/endian.h> /* required before tcp.h, for BYTE_ORDER */
  13. #endif
  14. #include <netinet/tcp.h> /* TCP_NODELAY */
  15. #include <netdb.h> /* getservbyname(), gethostbyname() */
  16. /* declare global variables */
  17. extern int bindport;
  18. extern int broadcast;
  19. extern int cbreak;
  20. extern int chunkwrite;
  21. extern int client;
  22. extern int connectudp;
  23. extern int crlf;
  24. extern int debug;
  25. extern int dofork;
  26. extern int dontroute;
  27. extern char foreignip[];
  28. extern int foreignport;
  29. extern int halfclose;
  30. extern int ignorewerr;
  31. extern int iptos;
  32. extern int ipttl;
  33. extern char joinip[];
  34. extern int keepalive;
  35. extern long linger;
  36. extern int listenq;
  37. extern char localip[];
  38. extern int maxseg;
  39. extern int mcastttl;
  40. extern int msgpeek;
  41. extern int nodelay;
  42. extern int nbuf;
  43. extern int onesbcast;
  44. extern int pauseclose;
  45. extern int pauseinit;
  46. extern int pauselisten;
  47. extern int pauserw;
  48. extern int reuseaddr;
  49. extern int reuseport;
  50. extern int readlen;
  51. extern int writelen;
  52. extern int recvdstaddr;
  53. extern int rcvbuflen;
  54. extern int sndbuflen;
  55. extern long rcvtimeo;
  56. extern long sndtimeo;
  57. extern char *rbuf;
  58. extern char *wbuf;
  59. extern int server;
  60. extern int sigio;
  61. extern int sourcesink;
  62. extern int sroute_cnt;
  63. extern int udp;
  64. extern int urgwrite;
  65. extern int verbose;
  66. extern int usewritev;
  67. extern struct sockaddr_in cliaddr, servaddr;
  68. /* Earlier versions of gcc under SunOS 4.x have problems passing arguments
  69. that are structs (as opposed to pointers to structs). This shows up
  70. with inet_ntoa, whose argument is a "struct in_addr". */
  71. #if defined(sun) && defined(__GNUC__) && defined(GCC_STRUCT_PROBLEM)
  72. #define INET_NTOA(foo) inet_ntoa(&foo)
  73. #else
  74. #define INET_NTOA(foo) inet_ntoa(foo)
  75. #endif
  76. /* function prototypes */
  77. void buffers(int);
  78. int cliopen(char *, char *);
  79. int crlf_add(char *, int, const char *, int);
  80. int crlf_strip(char *, int, const char *, int);
  81. void join_mcast(int, struct sockaddr_in *);
  82. void loop_tcp(int);
  83. void loop_udp(int);
  84. void pattern(char *, int);
  85. int servopen(char *, char *);
  86. void sink_tcp(int);
  87. void sink_udp(int);
  88. void source_tcp(int);
  89. void source_udp(int);
  90. void sroute_doopt(int, char *);
  91. void sroute_set(int);
  92. void sleep_us(unsigned int);
  93. void sockopts(int, int);
  94. ssize_t dowrite(int, const void *, size_t);
  95. void TELL_WAIT(void);
  96. void TELL_PARENT(pid_t);
  97. void WAIT_PARENT(void);
  98. void TELL_CHILD(pid_t);
  99. void WAIT_CHILD(void);