| /* ckcnet.h -- Symbol and macro definitions for C-Kermit network support */ |
| |
| /* |
| Author: Frank da Cruz <fdc@columbia.edu> |
| Columbia University Academic Information Systems, New York City. |
| |
| Copyright (C) 1985, 2004, |
| Trustees of Columbia University in the City of New York. |
| All rights reserved. See the C-Kermit COPYING.TXT file or the |
| copyright text in the ckcmai.c module for disclaimer and permissions. |
| */ |
| #ifndef CKCNET_H |
| #define CKCNET_H |
| |
| /* Network types */ |
| |
| #define NET_NONE 0 /* None */ |
| #define NET_TCPB 1 /* TCP/IP Berkeley (socket) */ |
| #define NET_TCPA 2 /* TCP/IP AT&T (streams) */ |
| #define NET_SX25 3 /* SUNOS SunLink X.25 */ |
| #define NET_DEC 4 /* DECnet */ |
| #define NET_VPSI 5 /* VAX PSI */ |
| #define NET_PIPE 6 /* LAN Manager Named Pipe */ |
| #define NET_VX25 7 /* Stratus VOS X.25 */ |
| #define NET_BIOS 8 /* IBM NetBios */ |
| #define NET_SLAT 9 /* Meridian Technologies' SuperLAT */ |
| #define NET_FILE 10 /* Read from a file */ |
| #define NET_CMD 11 /* Read from a sub-process */ |
| #define NET_DLL 12 /* Load a DLL for use as comm channel*/ |
| #define NET_IX25 13 /* IBM AIX 4.1 X.25 */ |
| #define NET_HX25 14 /* HP-UX 10 X.25 */ |
| #define NET_PTY 15 /* Pseudoterminal */ |
| #define NET_SSH 16 /* SSH */ |
| |
| #ifdef OS2 /* In OS/2, only the 32-bit */ |
| #ifndef __32BIT__ /* version gets NETBIOS */ |
| #ifdef CK_NETBIOS |
| #undef CK_NETBIOS |
| #endif /* CK_NETBIOS */ |
| #endif /* __32BIT__ */ |
| #endif /* OS2 */ |
| |
| #ifdef _M_PPC |
| #ifdef SUPERLAT |
| #undef SUPERLAT |
| #endif /* SUPERLAT */ |
| #endif /* _M_PPC */ |
| |
| #ifdef NPIPE /* For items in common to */ |
| #define NPIPEORBIOS /* Named Pipes and NETBIOS */ |
| #endif /* NPIPE */ |
| #ifdef CK_NETBIOS |
| #ifndef NPIPEORBIOS |
| #define NPIPEORBIOS |
| #endif /* NPIPEORBIOS */ |
| #endif /* CK_NETBIOS */ |
| |
| /* Network virtual terminal protocols (for SET HOST connections) */ |
| /* FTP, HTTP and SSH have their own stacks */ |
| |
| #define NP_DEFAULT 255 |
| #define NP_NONE 0 /* None (async) */ |
| #define NP_TELNET 1 /* TCP/IP telnet */ |
| #define NP_VTP 2 /* ISO Virtual Terminal Protocol */ |
| #define NP_X3 3 /* CCITT X.3 */ |
| #define NP_X28 4 /* CCITT X.28 */ |
| #define NP_X29 5 /* CCITT X.29 */ |
| #define NP_RLOGIN 6 /* TCP/IP Remote login */ |
| #define NP_KERMIT 7 /* TCP/IP Kermit */ |
| #define NP_TCPRAW 8 /* TCP/IP Raw socket */ |
| #define NP_TCPUNK 9 /* TCP/IP Unknown */ |
| #define NP_SSL 10 /* TCP/IP SSLv23 */ |
| #define NP_TLS 11 /* TCP/IP TLSv1 */ |
| #define NP_SSL_TELNET 12 /* TCP/IP Telnet over SSLv23 */ |
| #define NP_TLS_TELNET 13 /* TCP/IP Telnet over TLSv1 */ |
| #define NP_K4LOGIN 14 /* TCP/IP Kerberized remote login */ |
| #define NP_EK4LOGIN 15 /* TCP/IP Encrypted Kerberized ... */ |
| #define NP_K5LOGIN 16 /* TCP/IP Kerberized remote login */ |
| #define NP_EK5LOGIN 17 /* TCP/IP Encrypted Kerberized ... */ |
| #define NP_K5U2U 18 /* TCP/IP Kerberos 5 User to User */ |
| #define NP_CTERM 19 /* DEC CTERM */ |
| #define NP_LAT 20 /* DEC LAT */ |
| /* others here... */ |
| |
| #ifdef CK_SSL |
| #define IS_TELNET() (nettype == NET_TCPB && (ttnproto == NP_TELNET \ |
| || ttnproto == NP_SSL_TELNET \ |
| || ttnproto == NP_TLS_TELNET \ |
| || ttnproto == NP_KERMIT)) |
| #else /* CK_SSL */ |
| #define IS_TELNET() (nettype == NET_TCPB && (ttnproto == NP_TELNET \ |
| || ttnproto == NP_KERMIT)) |
| #endif /* CK_SSL */ |
| |
| #ifdef CK_KERBEROS |
| #ifdef KRB5 |
| #ifdef KRB4 |
| #define IS_RLOGIN() (nettype == NET_TCPB && (ttnproto == NP_RLOGIN \ |
| || ttnproto == NP_K5LOGIN \ |
| || ttnproto == NP_EK5LOGIN \ |
| || ttnproto == NP_K4LOGIN \ |
| || ttnproto == NP_EK4LOGIN \ |
| )) |
| #else /* KRB4 */ |
| #define IS_RLOGIN() (nettype == NET_TCPB && (ttnproto == NP_RLOGIN \ |
| || ttnproto == NP_K5LOGIN \ |
| || ttnproto == NP_EK5LOGIN \ |
| )) |
| #endif /* KRB4 */ |
| #else /* KRB5 */ |
| #ifdef KRB4 |
| #define IS_RLOGIN() (nettype == NET_TCPB && (ttnproto == NP_RLOGIN \ |
| || ttnproto == NP_K4LOGIN \ |
| || ttnproto == NP_EK4LOGIN \ |
| )) |
| #else /* KRB4 */ |
| KERBEROS defined without either KRB4 or KRB5 |
| #endif /* KRB4 */ |
| #endif /* KRB5 */ |
| #else /* CK_KERBEROS */ |
| #define IS_RLOGIN() (nettype == NET_TCPB && (ttnproto == NP_RLOGIN)) |
| #endif /* CK_KERBEROS */ |
| |
| #define IS_SSH() (nettype == NET_SSH) |
| |
| /* RLOGIN Modes */ |
| #define RL_RAW 0 /* Do Not Process XON/XOFF */ |
| #define RL_COOKED 1 /* Do Process XON/XOFF */ |
| |
| /* Encryption types */ |
| |
| #define CX_NONE 999 |
| |
| #ifdef ENCTYPE_ANY |
| #define CX_AUTO ENCTYPE_ANY |
| #else |
| #define CX_AUTO 0 |
| #endif /* ENCTYPE_ANY */ |
| |
| #ifdef ENCTYPE_DES_CFB64 |
| #define CX_DESC64 ENCTYPE_DES_CFB64 |
| #else |
| #define CX_DESC64 1 |
| #endif /* ENCTYPE_DES_CFB64 */ |
| |
| #ifdef ENCTYPE_DES_OFB64 |
| #define CX_DESO64 ENCTYPE_DES_OFB64 |
| #else |
| #define CX_DESO64 2 |
| #endif /* ENCTYPE_DES_OFB64 */ |
| |
| #ifdef ENCTYPE_DES3_CFB64 |
| #define CX_DES3C64 ENCTYPE_DES3_CFB64 |
| #else |
| #define CX_DES3C64 3 |
| #endif /* ENCTYPE_DES_CFB64 */ |
| |
| #ifdef ENCTYPE_DES3_OFB64 |
| #define CX_DESO64 ENCTYPE_DES3_OFB64 |
| #else |
| #define CX_DES3O64 4 |
| #endif /* ENCTYPE_DES_OFB64 */ |
| |
| #ifdef ENCTYPE_CAST5_40_CFB64 |
| #define CX_C540C64 ENCTYPE_CAST5_40_CFB64 |
| #else |
| #define CX_C540C64 8 |
| #endif /* ENCTYPE_CAST5_40_CFB64 */ |
| |
| #ifdef ENCTYPE_CAST5_40_OFB64 |
| #define CX_C540O64 ENCTYPE_CAST5_40_OFB64 |
| #else |
| #define CX_C540O64 9 |
| #endif /* ENCTYPE_CAST5_40_OFB64 */ |
| |
| #ifdef ENCTYPE_CAST128_CFB64 |
| #define CX_C128C64 ENCTYPE_CAST128_CFB64 |
| #else |
| #define CX_C128C64 10 |
| #endif /* ENCTYPE_CAST128_CFB64 */ |
| |
| #ifdef ENCTYPE_CAST128_OFB64 |
| #define CX_C128O64 ENCTYPE_CAST128_OFB64 |
| #else |
| #define CX_C128O64 11 |
| #endif /* ENCTYPE_CAST128_OFB64 */ |
| |
| /* Basic network function prototypes, common to all. */ |
| |
| _PROTOTYP( int netopen, (char *, int *, int) ); |
| _PROTOTYP( int netclos, (void) ); |
| _PROTOTYP( int netflui, (void) ); |
| _PROTOTYP( int nettchk, (void) ); |
| _PROTOTYP( int netbreak, (void) ); |
| _PROTOTYP( int netinc, (int) ); |
| _PROTOTYP( int netxin, (int, CHAR *) ); |
| _PROTOTYP( int nettol, (CHAR *, int) ); |
| _PROTOTYP( int nettoc, (CHAR) ); |
| /* |
| SunLink X.25 support by Marcello Frutig, Catholic University, |
| Rio de Janeiro, Brazil, 1990. |
| |
| Maybe this can be adapted to VAX PSI and other X.25 products too. |
| */ |
| #ifndef SUNOS4 /* Only valid for SUNOS4 */ |
| #ifndef SOLARIS |
| #ifdef SUNX25 |
| #undef SUNX25 |
| #endif /* SUNX25 */ |
| #endif /* SOLARIS */ |
| #endif /* SUNOS4 */ |
| |
| #ifdef STRATUSX25 |
| #define ANYX25 |
| #define MAX_USER_DATA 128 /* SUN defines this in a header file, I believe. */ |
| #endif /* STRATUSX25 */ |
| |
| #ifdef SUNX25 |
| #define ANYX25 |
| #endif /* SUNX25 */ |
| |
| #ifdef IBMX25 /* AIX 4.1 X.25 */ |
| #ifndef AIX41 |
| #undef IBMX25 |
| #else /* AIX41 */ |
| #define ANYX25 |
| #define MAX_USER_DATA NPI_MAX_DATA /* used for buffer sizes */ |
| #endif /* AIX41 */ |
| #endif /* IBMX25 */ |
| |
| #ifdef HPX25 /* HP-UX 10.* X.25 */ |
| #ifndef HPUX10 |
| #undef HPX25 |
| #else /* HPUX10 */ |
| #define ANYX25 |
| #endif /* HPUX10 */ |
| #endif /* HPX25 */ |
| |
| #ifdef ANYX25 |
| #ifndef NETCONN /* ANYX25 implies NETCONN */ |
| #define NETCONN |
| #endif /* NETCONN */ |
| |
| #define MAXPADPARMS 22 /* Number of PAD parameters */ |
| #define MAXCUDATA 12 /* Max length of X.25 call user data */ |
| #define X29PID 1 /* X.29 protocol ID */ |
| #define X29PIDLEN 4 /* X.29 protocol ID length */ |
| |
| #define X29_SET_PARMS 2 |
| #define X29_READ_PARMS 4 |
| #define X29_SET_AND_READ_PARMS 6 |
| #define X29_INVITATION_TO_CLEAR 1 |
| #define X29_PARAMETER_INDICATION 0 |
| #define X29_INDICATION_OF_BREAK 3 |
| #define X29_ERROR 5 |
| |
| #define INVALID_PAD_PARM 1 |
| |
| #define PAD_BREAK_CHARACTER 0 |
| |
| #define PAD_ESCAPE 1 |
| #define PAD_ECHO 2 |
| #define PAD_DATA_FORWARD_CHAR 3 |
| #define PAD_DATA_FORWARD_TIMEOUT 4 |
| #define PAD_FLOW_CONTROL_BY_PAD 5 |
| #define PAD_SUPPRESSION_OF_SIGNALS 6 |
| #define PAD_BREAK_ACTION 7 |
| #define PAD_SUPPRESSION_OF_DATA 8 |
| #define PAD_PADDING_AFTER_CR 9 |
| #define PAD_LINE_FOLDING 10 |
| #define PAD_LINE_SPEED 11 |
| #define PAD_FLOW_CONTROL_BY_USER 12 |
| #define PAD_LF_AFTER_CR 13 |
| #define PAD_PADDING_AFTER_LF 14 |
| #define PAD_EDITING 15 |
| #define PAD_CHAR_DELETE_CHAR 16 |
| #define PAD_BUFFER_DELETE_CHAR 17 |
| #define PAD_BUFFER_DISPLAY_CHAR 18 |
| |
| #define MAXIX25 MAX_USER_DATA*7 |
| #define MAXOX25 MAX_USER_DATA |
| #endif /* ANYX25 */ |
| |
| #ifdef SUNX25 |
| #ifdef SOLARIS25 /* and presumably SunLink 9.xx */ |
| #include <fcntl.h> |
| #include <errno.h> |
| #include <sys/ioccom.h> |
| #include <sys/types.h> |
| #include <sys/socket.h> |
| #include <sys/sockio.h> |
| #include <sundev/syncstat.h> |
| #include <netx25/x25_pk.h> |
| #include <netx25/x25_ctl.h> |
| #include <netx25/x25_ioctl.h> |
| #else |
| #include <sys/ioctl.h> /* X.25 includes, Sun only */ |
| #include <sys/systm.h> |
| #ifndef SOLARIS |
| #include <sys/mbuf.h> |
| #endif /* SOLARIS */ |
| #include <sys/socket.h> |
| #include <sys/protosw.h> |
| #ifdef SOLARIS |
| #include <sys/sockio.h> |
| #else |
| #include <sys/domain.h> |
| #endif /* SOLARIS */ |
| #include <sys/socketvar.h> |
| #include <net/if.h> |
| #include <sundev/syncstat.h> |
| #include <netx25/x25_pk.h> |
| #include <netx25/x25_ctl.h> |
| #include <netx25/x25_ioctl.h> |
| #endif /* SOLARIS25 */ |
| #endif /* SUNX25 */ |
| |
| #ifdef ANYX25 |
| |
| #ifdef IBMX25 /* X.25 includes, AIX only */ |
| #include <fcntl.h> |
| #include <sys/twtypes.h> |
| #include <sys/twlib.h> |
| |
| #include <sys/stream.h> |
| #include <stropts.h> |
| |
| #define NPI_20 /* required to include the whole NPI */ |
| #include <sys/npi_20.h> |
| #include <sys/npiapi.h> |
| #include <sys/pktintf.h> |
| |
| #include <odmi.h> /* required for access to the ODM */ |
| #include <sys/cfgodm.h> /* database, needed to find out the */ |
| /* local NUA. see x25local_nua() */ |
| |
| |
| /* IBM X25 NPI generic primitive type */ |
| typedef union N_npi_ctl_t { |
| ulong PRIM_type; /* generic primitive type */ |
| char buffer[NPI_MAX_CTL]; /* maximum primitive size */ |
| N_bind_ack_t bind_ack; |
| N_bind_req_t bind_req; |
| N_conn_con_t conn_con; |
| N_conn_ind_t conn_ind; |
| N_conn_req_t conn_req; |
| N_conn_res_t conn_res; |
| N_data_req_t data_req; |
| N_data_ind_t data_ind; |
| N_discon_ind_t discon_ind; |
| N_discon_req_t discon_req; |
| N_error_ack_t error_ack; |
| N_exdata_ind_t exdata_ind; |
| N_info_ack_t info_ack; |
| N_ok_ack_t ok_ack; |
| N_reset_con_t reset_con; |
| N_reset_req_t reset_req; |
| N_reset_ind_t reset_ind; |
| } N_npi_ctl_t; |
| |
| /* some extra definitions to help out */ |
| typedef char x25addr_t[45]; /* max 40 defined by CCITT */ |
| typedef char N_npi_data_t[NPI_MAX_DATA]; |
| |
| /* fd or server waiting for connections, used by netclos and netopen */ |
| extern int x25serverfd; |
| |
| #endif /* IBMX25 */ |
| |
| #ifdef HPX25 /* X.25 includes, HP-UX only */ |
| #include <x25/ccittproto.h> |
| #include <x25/x25.h> |
| #include <x25/x25addrstr.h> |
| #include <x25/x25codes.h> |
| #include <x25/x25hd_ioctl.h> |
| #include <x25/x25ioctls.h> |
| #include <x25/x25str.h> |
| #include <sys/ioctl.h> |
| #endif /* HPX25 */ |
| |
| /* C-Kermit X.3 / X.25 / X.29 / X.121 support functions */ |
| |
| /* (riehm: this list of functions isn't quite right for AIX) */ |
| |
| _PROTOTYP( int shopad, (int) ); |
| _PROTOTYP( int shox25, (int) ); |
| _PROTOTYP( VOID initpad, (void) ); |
| _PROTOTYP( VOID setpad, (CHAR *, int) ); |
| _PROTOTYP( VOID readpad, (CHAR *, int, CHAR *) ); |
| _PROTOTYP( int qbitpkt, (CHAR *, int) ); |
| _PROTOTYP( VOID setqbit, (void) ); |
| _PROTOTYP( VOID resetqbit, (void) ); |
| _PROTOTYP( VOID breakact, (void) ); |
| _PROTOTYP( int pkx121, (char *, CHAR *) ); |
| _PROTOTYP( SIGTYP x25oobh, (int) ); |
| _PROTOTYP( int x25diag, (void) ); |
| _PROTOTYP( int x25intr, (char) ); |
| _PROTOTYP( int x25reset, (char, char) ); |
| _PROTOTYP( int x25clear, (void) ); |
| _PROTOTYP( int x25stat, (void) ); |
| _PROTOTYP( int x25in, (int, CHAR *) ); |
| _PROTOTYP( int setpadp, (void) ); |
| _PROTOTYP( int setx25, (void) ); |
| _PROTOTYP( int x25xin, (int, CHAR *) ); |
| _PROTOTYP( int x25inl, (CHAR *, int, int, CHAR) ); |
| |
| #ifdef IBMX25 |
| /* setup x25 */ |
| _PROTOTYP( ulong x25bind, (int, char *, char *, int, int, int, ulong) ); |
| _PROTOTYP( int x25call, (int, char *, char *) ); /* connect to remote */ |
| _PROTOTYP( int x25unbind, (int) ); /* disconnect */ |
| _PROTOTYP( char *x25prim, (int) ); /* display primitives */ |
| _PROTOTYP( int x25local_nua, (char *) ); /* find local NUA */ |
| #endif /* IBMX25 */ |
| |
| #endif /* ANYX25 */ |
| |
| /* CMU-OpenVMS/IP */ |
| |
| #ifdef CMU_TCPIP /* CMU_TCPIP implies TCPSOCKET */ |
| #ifndef TCPSOCKET |
| #define TCPSOCKET |
| #endif /* TCPSOCKET */ |
| #ifndef TCPIPLIB |
| #define TCPIPLIB |
| #endif /* TCPIPLIB */ |
| #endif /* CMU_TCPIP */ |
| |
| /* DEC TCP/IP for (Open)VMS, previously known as UCX */ |
| |
| #ifdef DEC_TCPIP /* DEC_TCPIP implies TCPSOCKET */ |
| #ifndef TCPSOCKET |
| #define TCPSOCKET |
| #endif /* TCPSOCKET */ |
| #ifndef TCPIPLIB |
| #define TCPIPLIB |
| #endif /* TCPIPLIB */ |
| #endif /* DEC_TCPIP */ |
| |
| /* SRI/TGV/Cisco/Process MultiNet, TCP/IP for VAX/VMS */ |
| |
| #ifdef MULTINET /* MULTINET implies TCPSOCKET */ |
| #ifndef TCPSOCKET |
| #define TCPSOCKET |
| #endif /* TCPSOCKET */ |
| #ifndef TCPIPLIB |
| #define TCPIPLIB |
| #endif /* TCPIPLIB */ |
| #ifndef TGVORWIN /* MULTINET and WINTCP */ |
| #define TGVORWIN /* share a lot of code... */ |
| #endif /* TGVORWIN */ |
| #endif /* MULTINET */ |
| |
| /* Wollongong TCP/IP for VAX/VMS */ |
| |
| #ifdef WINTCP /* WINTCP implies TCPSOCKET */ |
| #ifndef TCPSOCKET |
| #define TCPSOCKET |
| #endif /* TCPSOCKET */ |
| #ifndef TCPIPLIB |
| #define TCPIPLIB |
| #endif /* TCPIPLIB */ |
| #ifndef TGVORWIN /* WINTCP and MULTINET */ |
| #define TGVORWIN /* share a lot of code... */ |
| #endif /* TGVORWIN */ |
| #endif /* WINTCP */ |
| |
| /* Wollongong TCP/IP for AT&T Sys V */ |
| |
| #ifdef WOLLONGONG /* WOLLONGONG implies TCPSOCKET */ |
| #ifndef TCPSOCKET /* Don't confuse WOLLONGONG */ |
| #define TCPSOCKET /* (which is for UNIX) with */ |
| #endif /* TCPSOCKET */ /* WINTCP, which is for VMS! */ |
| #endif /* WOLLONGONG */ |
| |
| #ifdef EXCELAN /* EXCELAN implies TCPSOCKET */ |
| #ifndef TCPSOCKET |
| #define TCPSOCKET |
| #endif /* TCPSOCKET */ |
| #endif /* EXCELAN */ |
| |
| #ifdef INTERLAN /* INTERLAN implies TCPSOCKET */ |
| #ifndef TCPSOCKET |
| #define TCPSOCKET |
| #endif /* TCPSOCKET */ |
| #endif /* INTERLAN */ |
| |
| #ifdef BEBOX |
| #ifndef TCPSOCKET |
| #define TCPSOCKET |
| #endif /* TCPSOCKET */ |
| #ifndef TCPIPLIB |
| #define TCPIPLIB |
| #endif /* TCPIPLIB */ |
| #define socket_errno h_errno |
| #define socket_read(x,y,z) recv(x,y,sizeof(char),z) |
| #define socket_write(x,y,z) send(x,y,sizeof(char),z) |
| #define socket_ioctl ioctl |
| #define socket_close(x) closesocket(x) |
| #ifndef FIONBIO |
| #define FIONBIO 2 |
| #endif /* FIONBIO */ |
| #ifndef FIONREAD |
| #define FIONREAD 1 |
| #endif /* FIONREAD */ |
| #ifndef SIOCATMARK |
| #define SIOCATMARK 3 |
| #endif /* SIOCATMARK */ |
| #endif /* BEBOX */ |
| |
| #ifdef COMMENT /* no longer used but might come in handy again later... */ |
| /* |
| CK_READ0 can (and should) be defined if and only if: |
| (a) read(fd,&x,0) can be used harmlessly on a TCP/IP socket connection. |
| (b) read(fd,&x,0) returns 0 if the connection is up, -1 if it is down. |
| */ |
| #ifndef CK_READ0 |
| #ifdef TCPSOCKET |
| #ifdef SUNOS41 /* It works in SunOS 4.1 */ |
| #define CK_READ0 |
| #else |
| #ifdef NEXT /* and NeXTSTEP */ |
| #define CK_READ0 |
| #endif /* NEXT */ |
| #endif /* SUNOS41 */ |
| #endif /* TCPSOCKET */ |
| #endif /* CK_READ0 */ |
| #endif /* COMMENT */ |
| |
| /* Telnet protocol */ |
| |
| #ifdef TCPSOCKET /* TCPSOCKET implies TNCODE */ |
| #ifndef TNCODE /* Which means... */ |
| #define TNCODE /* Compile in telnet code */ |
| #endif /* TNCODE */ |
| |
| /* |
| Platforms where we must call gethostname(buf,len) and then |
| gethostbyname(buf) to get local IP address, rather than calling |
| gethostbyname(""). |
| */ |
| #ifndef CKGHNLHOST |
| #ifdef datageneral |
| #define CKGHNLHOST |
| #else |
| #ifdef SOLARIS |
| #define CKGHNLHOST |
| #else |
| #ifdef SUNOS4 |
| #define CKGHNLHOST |
| #else |
| #ifdef UNIXWARE |
| #define CKGHNLHOST |
| #else |
| #ifdef SINIX |
| #define CKGHNLHOST |
| #endif /* SINIX */ |
| #endif /* UNIXWARE */ |
| #endif /* SUNOS4 */ |
| #endif /* SOLARIS */ |
| #endif /* datageneral */ |
| #endif /* CKGHNLHOST */ |
| |
| #ifndef RLOGCODE /* What about Rlogin? */ |
| #ifndef NORLOGIN |
| /* |
| Rlogin can be enabled only for UNIX versions that have both SIGURG |
| (SCO doesn't) and CK_TTGWSIZ (OSF/1 doesn't), so we don't assume that |
| any others have these without verifying first. Not that it really makes |
| much difference since you can only use Rlogin if you are root... |
| */ |
| #ifdef SUNOS41 |
| #define RLOGCODE |
| #else |
| #ifdef SOLARIS |
| #define RLOGCODE |
| #else |
| #ifdef HPUX9 |
| #define RLOGCODE |
| #else |
| #ifdef HPUX10 |
| #define RLOGCODE |
| #else |
| #ifdef OSF40 |
| #define RLOGCODE |
| #else |
| #ifdef NEXT |
| #define RLOGCODE |
| #else |
| #ifdef AIX41 |
| #define RLOGCODE |
| #else |
| #ifdef UNIXWARE |
| #define RLOGCODE |
| #else |
| #ifdef IRIX51 |
| #define RLOGCODE |
| #else |
| #ifdef IRIX60 |
| #define RLOGCODE |
| #else |
| #ifdef QNX |
| #define RLOGCODE |
| #else |
| #ifdef __linux__ |
| #define RLOGCODE |
| #else |
| #ifdef BSD44 |
| #define RLOGCODE |
| #endif /* BSD44 */ |
| #endif /* __linux__ */ |
| #endif /* QNX */ |
| #endif /* IRIX60 */ |
| #endif /* IRIX51 */ |
| #endif /* UNIXWARE */ |
| #endif /* AIX41 */ |
| #endif /* NEXT */ |
| #endif /* OSF40 */ |
| #endif /* HPUX10 */ |
| #endif /* HPUX9 */ |
| #endif /* SOLARIS */ |
| #endif /* SUNOS41 */ |
| #endif /* NORLOGIN */ |
| #ifdef VMS /* VMS */ |
| #define RLOGCODE |
| #endif /* VMS */ |
| #endif /* RLOGCODE */ |
| #endif /* TCPSOCKET */ |
| |
| #ifdef TNCODE |
| /* |
| Telnet local-echo buffer, used for saving up user data that can't be |
| properly displayed and/or evaluated until pending Telnet negotiations are |
| complete. TTLEBUF is defined for platforms (like UNIX) where net i/o is |
| done by the same routines that do serial i/o (in which case the relevant |
| code goes into the ck?tio.c module, in the ttinc(), ttchk(), etc, routines); |
| NETLETBUF is defined for platforms (like VMS) that use different APIs for |
| network and serial i/o, and enables the copies of the same routines that |
| are in ckcnet.c. |
| */ |
| #ifndef TTLEBUF |
| #ifdef UNIX |
| #define TTLEBUF |
| #else |
| #ifdef datageneral |
| #define TTLEBUF |
| #endif /* datageneral */ |
| #endif /* UNIX */ |
| #endif /* TTLEBUF */ |
| |
| #ifndef NETLEBUF |
| #ifdef VMS |
| #define NETLEBUF |
| #endif /* VMS */ |
| #endif /* NETLEBUF */ |
| #endif /* TNCODE */ |
| |
| #ifdef SUNX25 /* SUNX25 implies TCPSOCKET */ |
| #ifndef TCPSOCKET /* But doesn't imply TNCODE */ |
| #define TCPSOCKET |
| #endif /* TCPSOCKET */ |
| #endif /* SUNX25 */ |
| |
| #ifndef TCPSOCKET |
| #ifndef NO_DNS_SRV |
| #define NO_DNS_SRV |
| #endif /* NO_DNS_SRV */ |
| #endif /* TCPSOCKET */ |
| |
| /* This is another TCPSOCKET section... */ |
| |
| #ifdef TCPSOCKET |
| #ifndef NETCONN /* TCPSOCKET implies NETCONN */ |
| #define NETCONN |
| #endif /* NETCONN */ |
| |
| #ifndef NO_DNS_SRV |
| #ifdef NOLOCAL |
| #define NO_DNS_SRV |
| #endif /* NOLOCAL */ |
| #ifdef OS2ONLY |
| #define NO_DNS_SRV |
| #endif /* OS2ONLY */ |
| #ifdef NT |
| #ifdef _M_PPC |
| #define NO_DNS_SRV |
| #endif /* _M_DNS */ |
| #endif /* NO_DNS_SRV */ |
| #ifdef VMS |
| #define NO_DNS_SRV |
| #endif /* VMS */ |
| #ifdef STRATUS |
| #define NO_DNS_SRV |
| #endif /* STRATUS */ |
| #ifdef datageneral |
| #define NO_DNS_SRV |
| #endif /* datageneral */ |
| #ifdef ultrix |
| #define NO_DNS_SRV |
| #endif /* ultrix */ |
| #ifdef NEXT |
| #define NO_DNS_SRV |
| #endif /* NEXT */ |
| #endif /* NO_DNS_SRV */ |
| |
| #ifndef CK_DNS_SRV /* Use DNS SRV records to determine */ |
| #ifndef NO_DNS_SRV /* host and ports */ |
| #define CK_DNS_SRV |
| #endif /* NO_DNS_SRV */ |
| #endif /* CK_DNS_SRV */ |
| |
| #ifndef NOLISTEN /* select() is required to support */ |
| #ifndef SELECT /* incoming connections. */ |
| #ifndef VMS |
| #ifndef OS2 |
| #define NOLISTEN |
| #endif /* OS2 */ |
| #endif /* VMS */ |
| #endif /* SELECT */ |
| #endif /* NOLISTEN */ |
| |
| /* BSD sockets library header files */ |
| |
| #ifdef VMS |
| /* |
| Because bzero() and bcopy() are not portable among VMS versions, |
| or compilers, or TCP/IP products, etc. |
| */ |
| #ifndef bzero |
| #define bzero(s,n) memset(s,0,n) |
| #endif /* bzero */ |
| #ifndef bcopy |
| #define bcopy(h,a,l) memcpy(a,h,l) |
| #endif /* bcopy */ |
| #endif /* VMS */ |
| |
| #ifdef UNIX /* UNIX section */ |
| |
| #ifdef SVR4 |
| /* |
| These suggested by Rob Healey, rhealey@kas.helios.mn.org, to avoid |
| bugs in Berkeley compatibility library on Sys V R4 systems, but untested |
| by me (fdc). Remove this bit if it gives you trouble. |
| (Later corrected by Marc Boucher <mboucher@iro.umontreal.ca> because |
| bzero/bcopy are not argument-compatible with memset/memcpy|memmove.) |
| */ |
| #ifndef bzero |
| #define bzero(s,n) memset(s,0,n) |
| #endif |
| #ifdef SOLARIS |
| #ifdef SUNX25 |
| #undef bzero |
| /* |
| WOULD YOU BELIEVE... That the Solaris X.25 /opt/SUNWcomm/lib/libsockx25 |
| library references bzero, even though the use of bzero is forbidden in |
| Solaris? Look for the function definition in ckcnet.c. |
| */ |
| _PROTOTYP( void bzero, (char *, int) ); |
| #endif /* SUNX25 */ |
| #ifndef bcopy |
| #define bcopy(h,a,l) memcpy(a,h,l) |
| #endif |
| #else |
| #ifndef bcopy |
| #define bcopy(h,a,l) memmove(a,h,l) |
| #endif |
| #endif /* SOLARIS */ |
| #else /* !SVR4 */ |
| #ifdef PTX /* Sequent DYNIX PTX 1.3 */ |
| #ifndef bzero |
| #define bzero(s,n) memset(s,0,n) |
| #endif |
| #ifndef bcopy |
| #define bcopy(h,a,l) memcpy(a,h,l) |
| #endif |
| #endif /* PTX */ |
| #endif /* SVR4 */ |
| |
| #ifdef INTERLAN /* Racal-Interlan TCP/IP */ |
| #include <interlan/socket.h> |
| #include <interlan/il_types.h> |
| #include <interlan/telnet.h> |
| #include <interlan/il_errno.h> |
| #include <interlan/in.h> |
| #include <interlan/telnet.h> /* Why twice ? ? ? */ |
| #else /* Not Interlan */ |
| #ifdef BEBOX |
| #include <socket.h> |
| #else /* Not BEBOX */ /* Normal BSD TCP/IP library */ |
| #ifdef COMMENT |
| #ifndef HPUX |
| #include <arpa/telnet.h> |
| #endif /* HPUX */ |
| #endif /* COMMENT */ |
| #ifdef SCO234 |
| #include <sys/errno.tcp.h> |
| #include <sys/types.tcp.h> |
| #endif /* SCO234 */ |
| #include <sys/socket.h> |
| #ifdef WOLLONGONG |
| #include <sys/in.h> |
| #else |
| #include <netinet/in.h> |
| #ifndef SV68R3V6 /* (maybe this should be SVR3 in general) */ |
| #include <netinet/tcp.h> /* Added June 2001 */ |
| #endif /* SV68R3V6 */ |
| #endif /* WOLLONGONG */ |
| #endif /* BEBOX */ |
| #endif /* INTERLAN */ |
| |
| #ifndef EXCELAN |
| #include <netdb.h> |
| #ifndef INTERLAN |
| #ifdef WOLLONGONG |
| #define minor /* Do not include <sys/macros.h> */ |
| #include <sys/inet.h> |
| #else |
| #ifndef OXOS |
| #ifndef HPUX |
| #ifndef BEBOX |
| #include <arpa/inet.h> |
| #endif /* BEBOX */ |
| #endif /* HPUX */ |
| #else /* OXOS */ |
| /* In too many releases of X/OS, <arpa/inet.h> declares inet_addr() as |
| * ``struct in_addr''. This is definitively wrong, and could cause |
| * core dumps. Instead of including that bad file, inet_addr() is |
| * correctly declared here. Of course, all the declarations done there |
| * has been copied here. |
| */ |
| unsigned long inet_addr(); |
| char *inet_ntoa(); |
| struct in_addr inet_makeaddr(); |
| unsigned long inet_network(); |
| #endif /* OXOS */ |
| #endif /* WOLLONGONG */ |
| #endif /* INTERLAN */ |
| #endif /* EXCELAN */ |
| |
| #ifdef EXCELAN /* Excelan TCP/IP */ |
| #ifndef bzero |
| #define bzero(s,n) memset(s,0,n) |
| #endif /* bzero */ |
| #ifndef bcopy |
| #define bcopy(h,a,l) memcpy(a,h,l) |
| #endif /* bcopy */ |
| #include <ex_errno.h> |
| #endif /* EXCELAN */ |
| |
| #ifdef I386IX /* Interactive Sys V R3 network. */ |
| /* #define TELOPTS */ /* This might need defining. */ |
| #define ORG_NLONG ENAMETOOLONG /* Resolve conflicting symbols */ |
| #undef ENAMETOOLONG /* in <errno.h> and <net/errno.h> */ |
| #define ORG_NEMPTY ENOTEMPTY |
| #undef ENOTEMPTY |
| #include <net/errno.h> |
| #undef ENAMETOOLONG |
| #define ENAMETOOLONG ORG_NLONG |
| #undef ENOTEMPTY |
| #define ENOTEMPTY ORG_NEMPTY |
| #include <netinet/tcp.h> /* for inet_addr() */ |
| #endif /* I386IX */ |
| /* |
| Data type of the inet_addr() function... |
| We define INADDRX if it is of type struct inaddr. |
| If it is undefined, unsigned long is assumed. |
| Look at <arpa/inet.h> to find out. The following known cases are |
| handled here. Other systems that need it can be added here, or else |
| -DINADDRX can be included in the CFLAGS on the cc command line. |
| */ |
| #ifndef NOINADDRX |
| #ifdef DU2 /* DEC Ultrix 2.0 */ |
| #define INADDRX |
| #endif /* DU2 */ |
| #endif /* NOINADDRX */ |
| |
| #else /* Not UNIX */ |
| |
| #ifdef VMS /* (Open)VMS section */ |
| |
| #ifdef MULTINET /* TGV MultiNet */ |
| /* |
| In C-Kermit 7.0 Beta.08 we started getting scads of compile time warnings |
| in Multinet builds: "blah" is implicitly declared as a function, where blah |
| is socket_read/write/close, ntohs, htons, getpeername, accept, select, etc. |
| I have no idea why -- these routines are declared in the header files below, |
| and the includes haven't changed. The executable still seems to work OK. |
| Messing with the order of the following includes is disastrous. |
| */ |
| #ifdef MULTINET_NO_PROTOTYPES |
| #undef MULTINET_NO_PROTOTYPES |
| #endif /* MULTINET_NO_PROTOTYPES */ |
| |
| #ifdef __cplusplus |
| #undef __cplusplus |
| #endif /* __cplusplus */ |
| |
| #include "multinet_root:[multinet.include]errno.h" |
| #include "multinet_root:[multinet.include.sys]types.h" |
| #include "multinet_root:[multinet.include.sys]socket.h" |
| #include "multinet_root:[multinet.include]netdb.h" |
| #include "multinet_root:[multinet.include.netinet]in.h" |
| #include "multinet_root:[multinet.include.arpa]inet.h" |
| #include "multinet_root:[multinet.include.sys]ioctl.h" |
| |
| #ifdef COMMENT |
| /* |
| No longer needed because now bzero/bcopy are macros defined as |
| memset/memmove in all VMS builds. |
| */ |
| /* |
| We should be able to pick these up from <strings.h> but it's |
| not portable between VAXC and DECC. And even with DECC 5.x we have a |
| difference between VAX and Alpha. We get warnings here on the VAX |
| with DECC 5.6-003 but they are not fatal. |
| */ |
| #ifndef __DECC_VER |
| #ifndef bzero |
| _PROTOTYP( void bzero, (char *, int) ); |
| #endif /* bzero */ |
| #ifndef bcopy |
| _PROTOTYP( void bcopy, (char *, char *, int) ); |
| #endif /* bcopy */ |
| #endif /* __DECC_VER */ |
| #endif /* COMMENT */ |
| |
| #ifdef __DECC |
| /* |
| If compiling under DEC C the socket calls must not be prefixed with |
| DECC$. This is done by using the compiler switch /Prefix=Ansi_C89. |
| However, this causes some calls that should be prefixed to not be |
| (which I think is a bug in the compiler - I've been told these calls |
| are present in ANSI compilers). At any rate, such calls are fixed |
| here by explicitly prefixing them. |
| */ |
| #ifdef COMMENT |
| /* |
| But this causes errors with VMS 6.2 / DEC C 5.3-006 / MultiNet 4.0A on |
| a VAX (but not on an Alpha). So now what happens if we skip doing this? |
| */ |
| #define close decc$close |
| #define alarm decc$alarm |
| #endif /* COMMENT */ |
| #endif /* __DECC */ |
| |
| #else /* Not MULTINET */ |
| |
| #ifdef WINTCP /* WIN/TCP = PathWay for VMS */ |
| #ifdef OLD_TWG |
| #include "twg$tcp:[netdist.include.sys]errno.h" |
| #include "twg$tcp:[netdist.include.sys]types2.h" /* avoid some duplicates */ |
| #else |
| #include "twg$tcp:[netdist.include]socket_aliases.h" |
| #include <errno.h> |
| #include "twg$tcp:[netdist.include.sys]types.h" |
| #endif /* OLD_TWG */ |
| #include "twg$tcp:[netdist.include.sys]socket.h" |
| #include "twg$tcp:[netdist.include]netdb.h" |
| #include "twg$tcp:[netdist.include.sys]domain.h" |
| #include "twg$tcp:[netdist.include.sys]protosw.h" |
| #include "twg$tcp:[netdist.include.netinet]in.h" |
| #include "twg$tcp:[netdist.include.arpa]inet.h" |
| #include "twg$tcp:[netdist.include.sys]ioctl.h" |
| |
| #else /* Not WINTCP */ |
| |
| #ifdef DEC_TCPIP |
| #ifdef UCX50 |
| #ifndef IF_DOT_H |
| #define IF_DOT_H |
| #endif /* IF_DOT_H */ |
| #endif /* UCX50 */ |
| |
| #ifdef IF_DOT_H |
| #include <if.h> /* Needed to put up u_int typedef */ |
| #else |
| #ifdef NEEDUINT |
| typedef unsigned int u_int; |
| #endif /* NEEDUINT */ |
| #endif /* IF_DOT_H */ |
| |
| #include <in.h> |
| #include <netdb.h> |
| #include <socket.h> |
| #include "ckvioc.h" |
| #define socket_errno errno |
| |
| #ifdef COMMENT |
| /* |
| No longer needed because now bzero/bcopy are macros defined as |
| memset/memmove in all VMS builds. |
| */ |
| /* |
| Translation: In <strings.h>, which exists only for DECC >= 5.2, bzero() |
| and bcopy() are declared only for OpenVMS >= 7.0. This still might need |
| adjustment for DECC 5.0 and higher. |
| */ |
| #ifdef __DECC_VER |
| #ifdef VMSV70 |
| /* |
| Note: you can't use "#if (__VMS_VER>=70000000)" because that is not |
| portable and kills non-VMS builds. |
| */ |
| #include <strings.h> |
| #else |
| #ifndef bzero |
| #define bzero(s,n) memset(s,0,n) |
| #endif |
| #ifndef bcopy |
| #define bcopy(h,a,l) memmove(a,h,l) |
| #endif |
| #endif /* VMSV70 */ |
| #else |
| #ifndef bzero |
| #define bzero(s,n) memset(s,0,n) |
| #endif |
| #ifndef bcopy |
| #define bcopy(h,a,l) memmove(a,h,l) |
| #endif |
| #endif /* __DECC_VER */ |
| #endif /* COMMENT */ |
| |
| #define socket_read read |
| #define socket_write write |
| #define socket_ioctl ioctl |
| #define socket_close close |
| |
| #ifdef __DECC |
| int ioctl (int d, int request, void *argp); |
| #else |
| int ioctl (int d, int request, char *argp); |
| #endif /* DECC */ |
| /* |
| UCX supports select(), but does not provide the needed symbol and |
| structure definitions in any header file, so ... |
| */ |
| #include <types.h> |
| #ifndef NBBY |
| /*- |
| * Copyright (c) 1982, 1986, 1991, 1993 |
| * The Regents of the University of California. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution. |
| * 3. All advertising materials mentioning features or use of this software |
| * must display the following acknowledgement: |
| * This product includes software developed by the University of |
| * California, Berkeley and its contributors. |
| * 4. Neither the name of the University nor the names of its contributors |
| * may be used to endorse or promote products derived from this software |
| * without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
| * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
| * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
| * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
| * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
| * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
| * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
| * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
| * SUCH DAMAGE. |
| * |
| * @(#)types.h 8.1 (Berkeley) 6/2/93 |
| */ |
| |
| #define NBBY 8 /* number of bits in a byte */ |
| |
| /* |
| * Select uses bit masks of file descriptors in longs. These macros |
| * manipulate such bit fields (the filesystem macros use chars). |
| * FD_SETSIZE may be defined by the user, but the default here should |
| * be enough for most uses. |
| */ |
| #ifndef FD_SETSIZE |
| #define FD_SETSIZE 256 |
| #endif |
| |
| typedef long fd_mask; |
| #define NFDBITS (sizeof(fd_mask) * NBBY) /* bits per mask */ |
| |
| #ifndef howmany |
| #define howmany(x, y) (((x)+((y)-1))/(y)) |
| #endif |
| |
| typedef struct fd_set { |
| fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)]; |
| } fd_set; |
| |
| #define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS))) |
| #define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS))) |
| #define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS))) |
| #define FD_COPY(f, t) bcopy(f, t, sizeof(*(f))) |
| #define FD_ZERO(p) bzero(p, sizeof(*(p))) |
| #endif /* !NBBY */ |
| |
| #else /* Not DEC_TCPIP */ |
| |
| #ifdef CMU_TCPIP |
| #include <types.h> |
| #include <in.h> |
| #include <netdb.h> |
| #include <socket.h> |
| #include <inet.h> |
| #include <ioctl.h> |
| #include "ckvioc.h" |
| #define socket_errno errno |
| |
| /* |
| * Routines supplied in LIBCMU.OLB |
| */ |
| #define socket_ioctl ioctl |
| #define socket_read cmu_read |
| #define socket_write cmu_write |
| #define socket_close cmu_close |
| |
| #endif /* CMU_TCPIP */ |
| #endif /* DEC_TCPIP */ |
| #endif /* WINTCP */ |
| #endif /* MULTINET */ |
| |
| #else /* Not VMS */ |
| |
| #ifdef OS2 |
| #include "ckonet.h" |
| #ifndef NT |
| #include <nerrno.h> |
| #endif |
| #endif /* OS2 */ |
| |
| #ifdef STRATUS /* Stratus VOS using OS TCP/IP products S235, S236, S237 */ |
| #include <tcp_socket.h> |
| /* This gets used some places when TCPSOCKET is defined. */ |
| /* OS TCP provides bzero(), but not bcopy()... go figure. */ |
| #define bcopy(s,d,z) memcpy(d,s,z) |
| #endif /* STRATUS */ |
| |
| #ifdef OSK |
| #ifndef OSKXXC |
| #include <inet/in.h> |
| #include <inet/netdb.h> |
| #include <inet/socket.h> |
| #else |
| #include <INET/in.h> |
| #include <INET/netdb.h> |
| #include <INET/socket.h> |
| #endif /* OSKXXC */ |
| #ifndef bzero |
| #define bzero(s,n) memset(s,0,n) |
| #endif |
| #ifndef bcopy |
| #define bcopy(h,a,l) memcpy(a,h,l) |
| #endif |
| typedef char * caddr_t; /* core address type */ |
| #endif /* OSK */ |
| |
| #endif /* VMS */ |
| #endif /* UNIX */ |
| #endif /* TCPSOCKET */ |
| |
| #ifdef TCPSOCKET |
| #ifndef NOHADDRLIST |
| #ifndef HADDRLIST |
| #ifdef SUNOS41 |
| #define HADDRLIST |
| #endif /* SUNOS41 */ |
| #ifdef SOLARIS |
| #define HADDRLIST |
| #endif /* SOLARIS */ |
| #ifdef LINUX |
| #define HADDRLIST |
| #endif /* LINUX */ |
| #ifdef AIXRS |
| #define HADDRLIST |
| #endif /* AIXRS */ |
| #ifdef HPUX |
| #define HADDRLIST |
| #endif /* HPUX */ |
| #ifdef IRIX |
| #define HADDRLIST |
| #endif /* IRIX */ |
| #ifdef I386IX |
| #define HADDRLIST |
| #endif /* I386IX */ |
| #endif /* HADDRLIST */ |
| /* A system that defines h_addr as h_addr_list[0] should be HADDRLIST */ |
| #ifndef HADDRLIST |
| #ifdef h_addr |
| #define HADDRLIST |
| #endif /* h_addr */ |
| #endif /* HADDRLIST */ |
| #endif /* NOHADDRLIST */ |
| #endif /* TCPSOCKET */ |
| |
| #ifdef TNCODE /* If we're compiling telnet code... */ |
| #ifndef IKS_OPTION |
| #ifndef STRATUS |
| #define IKS_OPTION |
| #endif /* STRATUS */ |
| #endif /* IKS_OPTION */ |
| #include "ckctel.h" |
| #else |
| extern int sstelnet; |
| #ifdef IKSD |
| #undef IKSD |
| #endif /* IKSD */ |
| #ifndef NOIKSD |
| #define NOIKSD |
| #endif /* NOIKSD */ |
| #ifdef IKS_OPTION |
| #undef IKS_OPTION |
| #endif /* IKS_OPTION */ |
| #endif /* TNCODE */ |
| |
| #ifndef NOTCPOPTS |
| /* |
| Automatically define NOTCPOPTS for configurations where they can't be |
| used at runtime or cause too much trouble at compile time. |
| */ |
| #ifdef CMU_TCPIP /* CMU/Tek */ |
| #define NOTCPOPTS |
| #endif /* CMU_TCPIP */ |
| #ifdef MULTINET /* Multinet on Alpha */ |
| #ifdef __alpha |
| #define NOTCPOPTS |
| #endif /* __alpha */ |
| #endif /* MULTINET */ |
| #endif /* NOTCPOPTS */ |
| |
| #ifdef NOTCPOPTS |
| #ifdef TCP_NODELAY |
| #undef TCP_NODELAY |
| #endif /* TCP_NODELAY */ |
| #ifdef SO_LINGER |
| #undef SO_LINGER |
| #endif /* SO_LINGER */ |
| #ifdef SO_KEEPALIVE |
| #undef SO_KEEPALIVE |
| #endif /* SO_KEEPALIVE */ |
| #ifdef SO_SNDBUF |
| #undef SO_SNDBUF |
| #endif /* SO_SNDBUF */ |
| #ifdef SO_RCVBUF |
| #undef SO_RCVBUF |
| #endif /* SO_RCVBUF */ |
| #endif /* NOTCPOPTS */ |
| |
| /* This function is declared even when TCPSOCKET is not available */ |
| _PROTOTYP( char * ckgetpeer, (VOID)); |
| |
| #ifdef TCPSOCKET |
| #ifdef SOL_SOCKET |
| #ifdef TCP_NODELAY |
| _PROTOTYP( int no_delay, (int, int) ); |
| #endif /* TCP_NODELAY */ |
| #ifdef SO_KEEPALIVE |
| _PROTOTYP( int keepalive, (int, int) ) ; |
| #endif /* SO_KEEPALIVE */ |
| #ifdef SO_LINGER |
| _PROTOTYP( int ck_linger, (int, int, int) ) ; |
| #endif /* SO_LINGER */ |
| #ifdef SO_SNDBUF |
| _PROTOTYP( int sendbuf,(int, int) ) ; |
| #endif /* SO_SNDBUF */ |
| #ifdef SO_RCVBUF |
| _PROTOTYP( int recvbuf, (int, int) ) ; |
| #endif /* SO_RCVBUF */ |
| #ifdef SO_DONTROUTE |
| _PROTOTYP(int dontroute, (int, int)); |
| #endif /* SO_DONTROUTE */ |
| #endif /* SOL_SOCKET */ |
| _PROTOTYP( int getlocalipaddr, (VOID)); |
| _PROTOTYP( int getlocalipaddrs, (char *,int,int)); |
| _PROTOTYP( char * ckgetfqhostname,(char *)); |
| _PROTOTYP( struct hostent * ck_copyhostent,(struct hostent *)); |
| _PROTOTYP( char * ckname2addr, (char *)); |
| _PROTOTYP( char * ckaddr2name, (char *)); |
| |
| /* AIX */ |
| |
| #ifdef AIXRS |
| #ifndef TCP_NODELAY |
| #define TCP_NODELAY 0x1 |
| #endif /* TCP_NODELAY */ |
| #ifndef TCP_MAXSEG |
| #define TCP_MAXSEG 0x2 |
| #endif /* TCP_MAXSEG */ |
| #ifndef TCP_KEEPALIVE |
| #define TCP_KEEPALIVE 0x8 |
| #endif /* TCP_KEEPALIVE */ |
| #endif /* AIXRS */ |
| #endif /* TCPSOCKET */ |
| |
| #ifdef RLOGCODE |
| #ifndef CK_TTGWSIZ |
| SORRY_RLOGIN_REQUIRES_TTGWSIZ_see_ckcplm.doc |
| #endif /* CK_TTGWSIZ */ |
| #endif /* RLOGCODE */ |
| |
| #ifdef CK_NAWS |
| #ifndef CK_TTGWSIZ |
| SORRY_CK_NAWS_REQUIRES_TTGWSIZ_see_ckcplm.doc |
| #endif /* CK_TTGWSIZ */ |
| #endif /* CK_NAWS */ |
| |
| #ifndef PF_INET |
| #ifdef AF_INET |
| #define PF_INET AF_INET |
| #endif /* AF_INET */ |
| #endif /* PF_INET */ |
| |
| #ifndef IPPORT_ECHO |
| #define IPPORT_ECHO 7 |
| #endif /* IPPORT_ECHO */ |
| |
| #ifdef CK_KERBEROS |
| #ifdef RLOGCODE |
| _PROTOTYP(int ck_krb_rlogin,(CHAR *, int, CHAR *, CHAR *, CHAR *, |
| struct sockaddr_in *, |
| struct sockaddr_in *, int, int)); |
| #endif /* RLOGCODE */ |
| #endif /* CK_KERBEROS */ |
| |
| _PROTOTYP( VOID ini_kerb, ( void ) ); /* Kerberos initialization routine */ |
| _PROTOTYP( int doauth, (int) ); /* AUTHENTICATE action routine */ |
| |
| #ifdef CK_DNS_SRV |
| _PROTOTYP(int locate_srv_dns,(char *host, char *service, |
| char *protocol, struct sockaddr **addr_pp, |
| int *naddrs)); |
| #endif /* CK_DNS_SRV */ |
| |
| #ifndef NOHTTP |
| _PROTOTYP(int http_open, (char *, char *, int, char *, int, char *)); |
| _PROTOTYP(int http_reopen, (VOID)); |
| _PROTOTYP(int http_close, (VOID)); |
| _PROTOTYP(int http_get, (char *,char **,char *,char *,char,char *,char *, |
| int)); |
| _PROTOTYP(int http_head, (char *,char **,char *,char *,char,char *,char *, |
| int)); |
| _PROTOTYP(int http_put, (char *,char **,char *,char *,char *,char,char *, |
| char *, char *, int)); |
| _PROTOTYP(int http_delete, (char *,char **,char *,char *,char,char *)); |
| _PROTOTYP(int http_connect, (int, char *,char **,char *,char *,char,char *)); |
| _PROTOTYP(int http_post, (char *,char **,char *,char *,char *,char,char *, |
| char *,char *, int)); |
| _PROTOTYP(int http_index, (char *,char **,char *,char *,char,char *,char *, |
| int)); |
| _PROTOTYP(int http_inc, (int)); |
| _PROTOTYP(int http_isconnected, (void)); |
| |
| extern char * tcp_http_proxy; /* Name[:port] of http proxy server */ |
| extern int tcp_http_proxy_errno; /* Return value from server */ |
| extern char * tcp_http_proxy_user; /* Name of user for authentication */ |
| extern char * tcp_http_proxy_pwd; /* Password of user */ |
| #endif /* NOHTTP */ |
| |
| #ifdef TCPSOCKET |
| |
| /* Type needed as 5th argument (length) to get/setsockopt() */ |
| |
| #ifndef SOCKOPT_T |
| #define SOCKOPT_T int |
| #ifdef AIX42 |
| #undef SOCKOPT_T |
| #define SOCKOPT_T unsigned long |
| #else |
| #ifdef PTX |
| #undef SOCKOPT_T |
| #define SOCKOPT_T size_t |
| #else |
| #ifdef NT |
| #undef SOCKOPT_T |
| #define SOCKOPT_T int |
| #else /* NT */ |
| #ifdef UNIXWARE |
| #undef SOCKOPT_T |
| #define SOCKOPT_T size_t |
| #else /* UNIXWARE */ |
| #ifdef VMS |
| #ifdef DEC_TCPIP |
| #ifdef __DECC_VER |
| #undef SOCKOPT_T |
| #define SOCKOPT_T size_t |
| #endif /* __DECC_VER */ |
| #endif /* DEC_TCPIP */ |
| #endif /* VMS */ |
| #endif /* UNIXWARE */ |
| #endif /* NT */ |
| #endif /* PTX */ |
| #endif /* AIX42 */ |
| #endif /* SOCKOPT_T */ |
| |
| /* Ditto for getsockname() */ |
| |
| #ifndef GSOCKNAME_T |
| #define GSOCKNAME_T int |
| #ifdef PTX |
| #undef GSOCKNAME_T |
| #define GSOCKNAME_T size_t |
| #else |
| #ifdef AIX42 /* size_t in 4.2++, int in 4.1-- */ |
| #undef GSOCKNAME_T |
| #define GSOCKNAME_T size_t |
| #else |
| #ifdef UNIXWARE |
| #undef GSOCKNAME_T |
| #define GSOCKNAME_T size_t |
| #else |
| #ifdef VMS |
| #ifdef DEC_TCPIP |
| #ifdef __DECC_VER |
| #undef GSOCKNAME_T |
| #define GSOCKNAME_T size_t |
| #endif /* __DECC_VER */ |
| #endif /* DEC_TCPIP */ |
| #endif /* VMS */ |
| #endif /* UNIXWARE */ |
| #endif /* AIX41 */ |
| #endif /* PTX */ |
| #endif /* GSOCKNAME_T */ |
| |
| #endif /* TCPSOCKET */ |
| |
| #ifdef MACOSX10 |
| #ifdef bcopy |
| #undef bcopy |
| #endif |
| #ifdef bzero |
| #undef bzero |
| #endif |
| #endif /* MACOSX10 */ |
| |
| #endif /* CKCNET_H */ |