home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / k95source / ckotcp.h < prev    next >
C/C++ Source or Header  |  2020-01-01  |  6KB  |  234 lines

  1. /* ckotcp.h
  2.  *
  3.  * TCP/IP interface for OS/2 C-Kermit
  4.  *
  5.  * Author:  Kai-Uwe Rommel <rommel@ars.muc.de>
  6.  * Created: Wed May 25 1994
  7.  */
  8.  
  9. /*
  10.   Copyright (C) 1985, 2004, Trustees of Columbia University in the City of New
  11.   York.
  12. */
  13.  
  14. #ifndef CKOTCP_H
  15. #define CKOTCP_H
  16.  
  17. #ifdef  NT
  18. #include <nerrno.h>
  19. #endif /* NT */
  20.  
  21. /* macro functions */
  22.  
  23. #ifndef CK_DLL
  24. #define byteswap(x)       ((((x) & 0xFF) << 8) | (((x) >> 8) & 0xFF))
  25. #define longswap(x)       ((((x) & 0xFF) << 24) | ((((x) >> 8) & 0xFF) << 16) \
  26.                            | ((((x) >> 16) & 0xFF) << 8) | (((x) >> 24) & 0xFF))
  27. #define htons(x)          (byteswap(x))
  28. #define ntohs(x)          (byteswap(x))
  29. #define htonl(x)          (longswap(x))
  30. #define ntohl(x)          (longswap(x))
  31. #define bzero(x, y)       memset((x), 0, (y))
  32. #define bcopy(x, y, z)    memcpy((y), (x), (z))
  33. #endif
  34.  
  35. /* defines */
  36.  
  37. #ifndef CK_DLL
  38. #define AF_INET           CK_AF_INET
  39. #define INADDR_ANY        CK_INADDR_ANY
  40. #define SOCK_STREAM       CK_SOCK_STREAM
  41. #define SOCK_DGRAM        CK_SOCK_DGRAM
  42. #define FIONREAD          CK_FIONREAD
  43. #define FIONBIO           CK_FIONBIO
  44. #define SOL_SOCKET        CK_SOL_SOCKET
  45. #define SO_KEEPALIVE      CK_SO_KEEPALIVE
  46. #define SO_LINGER         CK_SO_LINGER
  47. #define SO_SNDBUF         CK_SO_SNDBUF
  48. #define SO_RCVBUF         CK_SO_RCVBUF
  49. #define SO_OOBINLINE      CK_SO_OOBINLINE
  50. #define SO_REUSEADDR      CK_SO_REUSEADDR
  51. #define PF_INET           CK_PF_INET
  52. #define SIOCATMARK        CK_SIOCATMARK
  53. #define MSG_OOB           CK_MSG_OOB
  54. #endif
  55.  
  56. #define CK_AF_INET        2
  57. #define CK_PF_INET        CK_AF_INET
  58. #define CK_SOCK_STREAM    1
  59. #define CK_SOCK_DGRAM     2
  60.  
  61. #define CK_FIONREAD       1
  62. #define CK_FIONBIO        2
  63. #define CK_SIOCATMARK     3
  64.  
  65. #define CK_SOL_SOCKET     0xffff
  66. #define CK_SO_KEEPALIVE   0x0008
  67. #define CK_SO_LINGER      0x0080
  68. #define CK_SO_SNDBUF      0x1001
  69. #define CK_SO_RCVBUF      0x1002
  70. #define CK_SO_OOBINLINE   0x0100
  71. #define CK_SO_REUSEADDR   0x0004
  72.  
  73. #define CK_MSG_OOB        0x1
  74. #define CK_INADDR_ANY     0x00000000L
  75.  
  76.  
  77. /* type definitions */
  78.  
  79. #ifndef CK_DLL
  80. typedef char *caddr_t;
  81. #define in_addr           ck_in_addr
  82. #define ck_sockaddr_in    sockaddr_in
  83. #define ck_sockaddr       sockaddr
  84. #define ck_hostent        hostent
  85. #define ck_servent        servent
  86. #define ck_linger         linger
  87. #endif
  88.  
  89. /*
  90.  * Structure used for manipulating linger option.
  91.  */
  92. struct  ck_linger {
  93.         int     l_onoff;                /* option on/off */
  94.         int     l_linger;               /* linger time */
  95. };
  96.  
  97.  
  98. struct ck_in_addr
  99. {
  100.   unsigned long s_addr;
  101. };
  102.  
  103. struct ck_sockaddr_in
  104. {
  105.   short sin_family;
  106.   unsigned short sin_port;
  107.   struct ck_in_addr sin_addr;
  108.   char sin_zero[8];
  109. };
  110.  
  111. struct ck_sockaddr
  112. {
  113.   unsigned short sa_family;
  114.   char sa_data[14];
  115. };
  116.  
  117. struct ck_hostent
  118. {
  119.   char *h_name;
  120.   char **h_aliases;
  121.   int h_addrtype;
  122.   int h_length;
  123.   char **h_addr_list;
  124. #ifndef CK_DLL
  125. #define h_addr h_addr_list[0]
  126. #endif
  127. };
  128.  
  129. struct ck_servent
  130. {
  131.   char *s_name;
  132.   char **s_aliases;
  133.   int s_port;
  134.   char *s_proto;
  135. };
  136.  
  137. /* prototypes */
  138.  
  139. #ifdef CK_DLL
  140.   #ifdef __32BIT__
  141.   #define ENTRY _System _Export
  142.   #else
  143.   #define ENTRY _export _loadds
  144.   #endif
  145. #else
  146.   #ifdef __32BIT__
  147.   #define SYSTEM _System
  148.   #else
  149.   #define SYSTEM
  150.   #endif
  151.   #define ck_sockinit       (* SYSTEM sockinit)
  152.   #define ck_connect        (* SYSTEM connect)
  153.   #define ck_bind           (* SYSTEM bind)
  154.   #define ck_listen         (* SYSTEM listen)
  155.   #define ck_accept         (* SYSTEM accept)
  156.   #define ck_ioctl          (* SYSTEM ioctl)
  157.   #define ck_recv           (* SYSTEM recv)
  158.   #define ck_select         (* SYSTEM select)
  159.   #define ck_send           (* SYSTEM send)
  160.   #define ck_setsockopt     (* SYSTEM setsockopt)
  161.   #define ck_getsockopt     (* SYSTEM getsockopt)
  162.   #define ck_socket         (* SYSTEM socket)
  163.   #define ck_soclose        (* SYSTEM soclose)
  164.   #define ck_gethostbyname  (* SYSTEM gethostbyname)
  165.   #define ck_getservbyname  (* SYSTEM getservbyname)
  166.   #define ck_gethostbyaddr  (* SYSTEM gethostbyaddr)
  167.   #define ck_getservbyport  (* SYSTEM getservbyport)
  168.   #define ck_inet_addr      (* SYSTEM inet_addr)
  169.   #define ck_inet_ntoa      (* SYSTEM inet_ntoa)
  170.   #define ck_getpeername    (* SYSTEM getpeername)
  171.   #define ck_getsockname    (* SYSTEM getsockname)
  172.   #define ck_addsockettolist (* SYSTEM addsockettolist)
  173.   #define ck_gethostname    (* SYSTEM gethostname)
  174. #endif
  175.  
  176. #ifndef ENTRY
  177. #define ENTRY
  178. #endif
  179.  
  180. #ifndef EXTERN
  181. #define EXTERN extern
  182. #endif
  183.  
  184. EXTERN int ENTRY ck_sockinit(void);
  185.  
  186. EXTERN int ENTRY ck_connect(int socket, struct ck_sockaddr *name, int namelen);
  187. EXTERN int ENTRY ck_bind(int socket, struct ck_sockaddr *name, int namelen);
  188. EXTERN int ENTRY ck_listen(int socket, int backlog);
  189. EXTERN int ENTRY ck_accept(int socket, struct ck_sockaddr *name, int *namelen);
  190. EXTERN int ENTRY ck_ioctl(int socket, int cmd, long *data);
  191. EXTERN int ENTRY ck_recv(int socket, char *buffer, int length, int flags);
  192. EXTERN int ENTRY ck_select(int *fds, int nread, int write, int except, long timeout);
  193. EXTERN int ENTRY ck_send(int socket, char *buffer, int length, int flags);
  194. EXTERN int ENTRY ck_setsockopt(int socket, int level, int optname,
  195.                                char *optvalue, int optlength);
  196. EXTERN int ENTRY ck_getsockopt(int socket, int level, int optname,
  197.                                char *optvalue, int *optlength);
  198. EXTERN int ENTRY ck_socket(int domain, int type, int protocol);
  199. EXTERN int ENTRY ck_soclose(int socket);
  200.  
  201. EXTERN struct ck_hostent * ENTRY ck_gethostbyname(char *name);
  202. EXTERN struct ck_servent * ENTRY ck_getservbyname(char *name, char *protocol);
  203. EXTERN struct ck_hostent * ENTRY ck_gethostbyaddr( char *, int, int );
  204. EXTERN struct ck_servent * ENTRY ck_getservbyport( int, char * );
  205. EXTERN unsigned long ENTRY ck_inet_addr(char *cp);
  206. EXTERN char * ENTRY ck_inet_ntoa(struct ck_in_addr in);
  207. EXTERN int ENTRY ck_getpeername(int, struct ck_sockaddr *name, int *namelen);
  208. EXTERN int ENTRY ck_getsockname(int, struct ck_sockaddr *name, int *namelen);
  209. EXTERN int ENTRY ck_addsockettolist(int);
  210. EXTERN int ENTRY ck_gethostname(char *, int);
  211.  
  212. #ifndef CK_DLL
  213. /* Ensure that IBM header files are not loaded */
  214. #define __SOCKET_32H
  215. #define __UTILS_32H
  216. #define __TYPES_32H
  217. #define __IN_32H
  218. #define __NETDB_32H
  219. #define __IF_32H
  220. #define __IF_ARPA_32H
  221. #define _SYS_PARAM_H_
  222. #define _ARPA_INET_H_
  223.  
  224. /* For Kerberos 5 */
  225. #define SIZEOF_INT      4
  226. #define SIZEOF_SHORT    2
  227. #define SIZEOF_LONG     4
  228.  
  229. #define getpid _getpid
  230. #endif /* CK_DLL */
  231.  
  232. /* end of ckotcp.h */
  233. #endif /* CKOTCP_H */
  234.