home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
kermit.columbia.edu
/
kermit.columbia.edu.tar
/
kermit.columbia.edu
/
tmp9
/
ckotcp.h
< prev
next >
Wrap
C/C++ Source or Header
|
2011-07-19
|
6KB
|
234 lines
/* ckotcp.h
*
* TCP/IP interface for OS/2 C-Kermit
*
* Author: Kai-Uwe Rommel <rommel@ars.muc.de>
* Created: Wed May 25 1994
*/
/*
Copyright (C) 1985, 2004, Trustees of Columbia University in the City of New
York.
*/
#ifndef CKOTCP_H
#define CKOTCP_H
#ifdef NT
#include <nerrno.h>
#endif /* NT */
/* macro functions */
#ifndef CK_DLL
#define byteswap(x) ((((x) & 0xFF) << 8) | (((x) >> 8) & 0xFF))
#define longswap(x) ((((x) & 0xFF) << 24) | ((((x) >> 8) & 0xFF) << 16) \
| ((((x) >> 16) & 0xFF) << 8) | (((x) >> 24) & 0xFF))
#define htons(x) (byteswap(x))
#define ntohs(x) (byteswap(x))
#define htonl(x) (longswap(x))
#define ntohl(x) (longswap(x))
#define bzero(x, y) memset((x), 0, (y))
#define bcopy(x, y, z) memcpy((y), (x), (z))
#endif
/* defines */
#ifndef CK_DLL
#define AF_INET CK_AF_INET
#define INADDR_ANY CK_INADDR_ANY
#define SOCK_STREAM CK_SOCK_STREAM
#define SOCK_DGRAM CK_SOCK_DGRAM
#define FIONREAD CK_FIONREAD
#define FIONBIO CK_FIONBIO
#define SOL_SOCKET CK_SOL_SOCKET
#define SO_KEEPALIVE CK_SO_KEEPALIVE
#define SO_LINGER CK_SO_LINGER
#define SO_SNDBUF CK_SO_SNDBUF
#define SO_RCVBUF CK_SO_RCVBUF
#define SO_OOBINLINE CK_SO_OOBINLINE
#define SO_REUSEADDR CK_SO_REUSEADDR
#define PF_INET CK_PF_INET
#define SIOCATMARK CK_SIOCATMARK
#define MSG_OOB CK_MSG_OOB
#endif
#define CK_AF_INET 2
#define CK_PF_INET CK_AF_INET
#define CK_SOCK_STREAM 1
#define CK_SOCK_DGRAM 2
#define CK_FIONREAD 1
#define CK_FIONBIO 2
#define CK_SIOCATMARK 3
#define CK_SOL_SOCKET 0xffff
#define CK_SO_KEEPALIVE 0x0008
#define CK_SO_LINGER 0x0080
#define CK_SO_SNDBUF 0x1001
#define CK_SO_RCVBUF 0x1002
#define CK_SO_OOBINLINE 0x0100
#define CK_SO_REUSEADDR 0x0004
#define CK_MSG_OOB 0x1
#define CK_INADDR_ANY 0x00000000L
/* type definitions */
#ifndef CK_DLL
typedef char *caddr_t;
#define in_addr ck_in_addr
#define ck_sockaddr_in sockaddr_in
#define ck_sockaddr sockaddr
#define ck_hostent hostent
#define ck_servent servent
#define ck_linger linger
#endif
/*
* Structure used for manipulating linger option.
*/
struct ck_linger {
int l_onoff; /* option on/off */
int l_linger; /* linger time */
};
struct ck_in_addr
{
unsigned long s_addr;
};
struct ck_sockaddr_in
{
short sin_family;
unsigned short sin_port;
struct ck_in_addr sin_addr;
char sin_zero[8];
};
struct ck_sockaddr
{
unsigned short sa_family;
char sa_data[14];
};
struct ck_hostent
{
char *h_name;
char **h_aliases;
int h_addrtype;
int h_length;
char **h_addr_list;
#ifndef CK_DLL
#define h_addr h_addr_list[0]
#endif
};
struct ck_servent
{
char *s_name;
char **s_aliases;
int s_port;
char *s_proto;
};
/* prototypes */
#ifdef CK_DLL
#ifdef __32BIT__
#define ENTRY _System _Export
#else
#define ENTRY _export _loadds
#endif
#else
#ifdef __32BIT__
#define SYSTEM _System
#else
#define SYSTEM
#endif
#define ck_sockinit (* SYSTEM sockinit)
#define ck_connect (* SYSTEM connect)
#define ck_bind (* SYSTEM bind)
#define ck_listen (* SYSTEM listen)
#define ck_accept (* SYSTEM accept)
#define ck_ioctl (* SYSTEM ioctl)
#define ck_recv (* SYSTEM recv)
#define ck_select (* SYSTEM select)
#define ck_send (* SYSTEM send)
#define ck_setsockopt (* SYSTEM setsockopt)
#define ck_getsockopt (* SYSTEM getsockopt)
#define ck_socket (* SYSTEM socket)
#define ck_soclose (* SYSTEM soclose)
#define ck_gethostbyname (* SYSTEM gethostbyname)
#define ck_getservbyname (* SYSTEM getservbyname)
#define ck_gethostbyaddr (* SYSTEM gethostbyaddr)
#define ck_getservbyport (* SYSTEM getservbyport)
#define ck_inet_addr (* SYSTEM inet_addr)
#define ck_inet_ntoa (* SYSTEM inet_ntoa)
#define ck_getpeername (* SYSTEM getpeername)
#define ck_getsockname (* SYSTEM getsockname)
#define ck_addsockettolist (* SYSTEM addsockettolist)
#define ck_gethostname (* SYSTEM gethostname)
#endif
#ifndef ENTRY
#define ENTRY
#endif
#ifndef EXTERN
#define EXTERN extern
#endif
EXTERN int ENTRY ck_sockinit(void);
EXTERN int ENTRY ck_connect(int socket, struct ck_sockaddr *name, int namelen);
EXTERN int ENTRY ck_bind(int socket, struct ck_sockaddr *name, int namelen);
EXTERN int ENTRY ck_listen(int socket, int backlog);
EXTERN int ENTRY ck_accept(int socket, struct ck_sockaddr *name, int *namelen);
EXTERN int ENTRY ck_ioctl(int socket, int cmd, long *data);
EXTERN int ENTRY ck_recv(int socket, char *buffer, int length, int flags);
EXTERN int ENTRY ck_select(int *fds, int nread, int write, int except, long timeout);
EXTERN int ENTRY ck_send(int socket, char *buffer, int length, int flags);
EXTERN int ENTRY ck_setsockopt(int socket, int level, int optname,
char *optvalue, int optlength);
EXTERN int ENTRY ck_getsockopt(int socket, int level, int optname,
char *optvalue, int *optlength);
EXTERN int ENTRY ck_socket(int domain, int type, int protocol);
EXTERN int ENTRY ck_soclose(int socket);
EXTERN struct ck_hostent * ENTRY ck_gethostbyname(char *name);
EXTERN struct ck_servent * ENTRY ck_getservbyname(char *name, char *protocol);
EXTERN struct ck_hostent * ENTRY ck_gethostbyaddr( char *, int, int );
EXTERN struct ck_servent * ENTRY ck_getservbyport( int, char * );
EXTERN unsigned long ENTRY ck_inet_addr(char *cp);
EXTERN char * ENTRY ck_inet_ntoa(struct ck_in_addr in);
EXTERN int ENTRY ck_getpeername(int, struct ck_sockaddr *name, int *namelen);
EXTERN int ENTRY ck_getsockname(int, struct ck_sockaddr *name, int *namelen);
EXTERN int ENTRY ck_addsockettolist(int);
EXTERN int ENTRY ck_gethostname(char *, int);
#ifndef CK_DLL
/* Ensure that IBM header files are not loaded */
#define __SOCKET_32H
#define __UTILS_32H
#define __TYPES_32H
#define __IN_32H
#define __NETDB_32H
#define __IF_32H
#define __IF_ARPA_32H
#define _SYS_PARAM_H_
#define _ARPA_INET_H_
/* For Kerberos 5 */
#define SIZEOF_INT 4
#define SIZEOF_SHORT 2
#define SIZEOF_LONG 4
#define getpid _getpid
#endif /* CK_DLL */
/* end of ckotcp.h */
#endif /* CKOTCP_H */