2010-03-08 04:55:21 -06:00
|
|
|
/*****************************************************************************
|
|
|
|
*
|
|
|
|
* NCSA DTM version 2.3
|
|
|
|
* May 1, 1992
|
|
|
|
*
|
|
|
|
* NCSA DTM Version 2.3 source code and documentation are in the public
|
|
|
|
* domain. Specifically, we give to the public domain all rights for future
|
|
|
|
* licensing of the source code, all resale rights, and all publishing rights.
|
|
|
|
*
|
|
|
|
* We ask, but do not require, that the following message be included in all
|
|
|
|
* derived works:
|
|
|
|
*
|
|
|
|
* Portions developed at the National Center for Supercomputing Applications at
|
|
|
|
* the University of Illinois at Urbana-Champaign.
|
|
|
|
*
|
|
|
|
* THE UNIVERSITY OF ILLINOIS GIVES NO WARRANTY, EXPRESSED OR IMPLIED, FOR THE
|
|
|
|
* SOFTWARE AND/OR DOCUMENTATION PROVIDED, INCLUDING, WITHOUT LIMITATION,
|
|
|
|
* WARRANTY OF MERCHANTABILITY AND WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE
|
|
|
|
*
|
|
|
|
*****************************************************************************/
|
|
|
|
|
|
|
|
/*********************************************************************
|
|
|
|
**
|
|
|
|
** $Header: /X11/mosaic/cvsroot/xmosaic3/libdtm/dtmint.h,v 1.5 1996/02/18 23:40:13 spowers Exp $
|
|
|
|
**
|
|
|
|
**********************************************************************/
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Revision 1.2 1993/10/06 06:16:06 ebina
|
|
|
|
* Fix stupid cont annoyance
|
|
|
|
*
|
|
|
|
* Revision 1.1.1.1 1993/07/04 00:03:11 marca
|
|
|
|
* Mosaic for X version 2 distribution
|
|
|
|
*
|
|
|
|
* Revision 1.1 1993/01/18 21:50:19 marca
|
|
|
|
* I think I got it now.
|
|
|
|
*
|
|
|
|
* Revision 1.28 92/05/05 22:27:50 jplevyak
|
|
|
|
* Corrected X interface code.
|
2013-03-09 18:59:42 -06:00
|
|
|
*
|
2010-03-08 04:55:21 -06:00
|
|
|
* Revision 1.27 1992/04/30 20:27:05 jplevyak
|
|
|
|
* Changed Version to 2.3
|
|
|
|
*
|
|
|
|
* Revision 1.26 1992/04/29 21:58:54 jplevyak
|
|
|
|
* Add new structure elements to DTMPORT to support DTMaddInput.
|
|
|
|
* Add prototypes for dtm_accept_read_connections and
|
|
|
|
* dtm_set_Xcallback
|
|
|
|
*
|
|
|
|
* Revision 1.25 1992/03/10 22:07:10 jplevyak
|
|
|
|
* Added changed for PC/MAC from Quincey Koziol (koziol@ncsa.uiuc.edu)
|
|
|
|
* with modification.
|
|
|
|
*
|
|
|
|
* Revision 1.24 1992/03/02 18:29:41 jplevyak
|
|
|
|
* Fixed bug in EAGAIN handling.
|
|
|
|
*
|
|
|
|
* Revision 1.23 1992/03/02 17:20:14 jplevyak
|
|
|
|
* Temporary back out.
|
|
|
|
*
|
|
|
|
* Revision 1.21 1992/02/28 03:40:24 jplevyak
|
|
|
|
* int/long confict fix (no diff on workstations)
|
|
|
|
* ,
|
|
|
|
*
|
|
|
|
* Revision 1.20 92/02/27 23:59:56 jplevyak
|
|
|
|
* Fixup prototype problems.
|
2013-03-09 18:59:42 -06:00
|
|
|
*
|
2010-03-08 04:55:21 -06:00
|
|
|
* Revision 1.19 1992/01/30 19:28:50 jplevyak
|
|
|
|
* Add support for c++ type external definitions.
|
|
|
|
*
|
|
|
|
* Revision 1.18 92/01/24 18:45:50 jefft
|
|
|
|
* Removed prototypes for dtm_set_<type> and dtm_get_<type>, added them to dtm.h
|
2013-03-09 18:59:42 -06:00
|
|
|
*
|
2010-03-08 04:55:21 -06:00
|
|
|
* Revision 1.17 1991/12/16 19:44:04 jefft
|
|
|
|
* Fixed bug with defining of NULL macro
|
|
|
|
*
|
|
|
|
* Revision 1.16 1991/12/09 18:36:18 jplevyak
|
|
|
|
* Added support for Callback ( DTMreadReady ).
|
|
|
|
*
|
|
|
|
* Revision 1.15 1991/11/22 21:31:37 jplevyak
|
|
|
|
* Added fDiscard to port structure. Removed prototype for dtm_get_nlist
|
|
|
|
* and dtm_check_server.
|
|
|
|
*
|
|
|
|
* Revision 1.14 1991/10/16 11:25:23 jplevyak
|
|
|
|
* ifdef around a duplicated include that was giving the SGIs trouble.
|
|
|
|
*
|
|
|
|
* Revision 1.13 1991/10/14 16:48:21 jplevyak
|
|
|
|
* Add flag in DTMPORT indicating whether or not the address is
|
|
|
|
* logical.
|
|
|
|
*
|
|
|
|
* Revision 1.12 1991/10/11 20:24:11 jplevyak
|
|
|
|
* Changed DTMSendCTSAhead default to be 0 (no chance of deadlock) as
|
|
|
|
* default.
|
|
|
|
*
|
|
|
|
* Revision 1.11 1991/10/10 14:26:16 jplevyak
|
|
|
|
* Finished fixing naming convensions. All prototypes are now included.
|
|
|
|
*
|
|
|
|
* Revision 1.10 91/09/26 20:16:46 jplevyak
|
|
|
|
* Major reorganization. Made this file compatible with dtm.h. Moved
|
|
|
|
* redundant out. Added several configuration parameters, added
|
|
|
|
* prototypes for internally global functions.
|
2013-03-09 18:59:42 -06:00
|
|
|
*
|
2010-03-08 04:55:21 -06:00
|
|
|
* Revision 1.9 91/09/18 15:28:50 jplevyak
|
|
|
|
* Added some external definitions for shared functions.
|
2013-03-09 18:59:42 -06:00
|
|
|
*
|
2010-03-08 04:55:21 -06:00
|
|
|
* Revision 1.8 91/09/13 17:37:37 sreedhar
|
|
|
|
* MAX132 instead of MAXBUFSIZE
|
2013-03-09 18:59:42 -06:00
|
|
|
*
|
2010-03-08 04:55:21 -06:00
|
|
|
* Revision 1.7 1991/08/15 19:10:53 sreedhar
|
|
|
|
* Changes for logical portname version
|
|
|
|
*
|
|
|
|
* Revision 1.6 1991/06/11 15:22:46 sreedhar
|
|
|
|
* disclaimer added
|
|
|
|
*
|
|
|
|
* Revision 1.5 1991/06/07 16:06:03 sreedhar
|
|
|
|
* Changes for sequence start message
|
|
|
|
*
|
|
|
|
* Revision 1.4 1991/05/30 15:50:58 sreedhar
|
|
|
|
* Changes for readMsg/writeMsg internal release
|
|
|
|
*
|
|
|
|
* Revision 1.3 1991/03/14 23:26:55 jefft
|
|
|
|
* removed call to dtm_fatal when errors occur.
|
|
|
|
*
|
|
|
|
* Revision 1.2 90/11/21 12:35:44 jefft
|
|
|
|
* Removed trailing comma from DTM error enum type.
|
2013-03-09 18:59:42 -06:00
|
|
|
*
|
2010-03-08 04:55:21 -06:00
|
|
|
* Revision 1.1 90/11/08 16:32:03 jefft
|
|
|
|
* Initial revision
|
2013-03-09 18:59:42 -06:00
|
|
|
*
|
2010-03-08 04:55:21 -06:00
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef DTMINT_INC
|
|
|
|
#define DTMINT_INC
|
|
|
|
|
|
|
|
#ifndef DTM_INC
|
|
|
|
#include "dtm.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef u_char /* it is not clear if we can count on __sys_types_h */
|
|
|
|
#include <sys/types.h>
|
|
|
|
#endif
|
|
|
|
#ifndef IPPROTO_IP
|
|
|
|
#ifdef _ARCH_MSDOS
|
|
|
|
# include <nmpcip.h>
|
|
|
|
#else
|
|
|
|
# include <netinet/in.h>
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* Added to shut up the SGI compiler which quotes ANSI regulations at
|
2013-03-09 18:59:42 -06:00
|
|
|
you.
|
2010-03-08 04:55:21 -06:00
|
|
|
*/
|
|
|
|
#ifdef DTM_PROTOTYPES
|
|
|
|
struct sockaddr;
|
|
|
|
struct timeval;
|
|
|
|
struct iovec;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef MAIN
|
|
|
|
#define global
|
|
|
|
#define INIT(x) = x
|
|
|
|
#else
|
|
|
|
#define global extern
|
|
|
|
#define INIT(x)
|
|
|
|
#endif
|
|
|
|
|
2013-03-09 18:59:42 -06:00
|
|
|
#define reg register
|
2010-03-08 04:55:21 -06:00
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
MACHINE SPECIFIC #defines
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
|
|
These at least work on a 68k architecture....
|
|
|
|
*/
|
|
|
|
#ifdef _ARCH_MSDOS
|
|
|
|
typedef unsigned int uint16;
|
|
|
|
typedef unsigned long uint32;
|
|
|
|
typedef int int16;
|
|
|
|
typedef long int32;
|
|
|
|
#else /* _ARCH_MSDOS */
|
|
|
|
typedef unsigned short uint16;
|
|
|
|
typedef unsigned int uint32;
|
|
|
|
typedef short int16;
|
|
|
|
typedef int int32;
|
|
|
|
#endif /* _ARCH_MSDOS */
|
|
|
|
|
|
|
|
#ifdef SUN
|
|
|
|
#define BSD
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef CRAY
|
|
|
|
# define STDINT(x) (x <<= 32)
|
|
|
|
# define LOCALINT(x) (x >>= 32)
|
|
|
|
#else
|
|
|
|
# define STDINT(x) x = htonl(x)
|
|
|
|
# define LOCALINT(x) x = ntohl(x)
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/*
|
|
|
|
The SGI compiler does not like to see true floats in prototypes
|
|
|
|
*/
|
|
|
|
#ifdef SGI
|
|
|
|
#define FLOAT double
|
|
|
|
#else
|
|
|
|
#define FLOAT float
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(BSD) && !defined(NEXT) && !defined(SOLARIS)
|
|
|
|
#define FREE_RETURNS_INT
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define DTM_VERSION "2.3"
|
|
|
|
|
|
|
|
#if defined(_STDC_) || defined(__STDC__)
|
|
|
|
#define VOID void
|
|
|
|
#else
|
|
|
|
#define VOID
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
GENERIC #defines
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifdef _ARCH_MSDOS
|
|
|
|
#define CHECK_ERR(X) if (((long)(X)) == DTMERROR) return DTMERROR
|
|
|
|
#else
|
|
|
|
#define CHECK_ERR(X) if (((int)(X)) == DTMERROR) return DTMERROR
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef FALSE
|
|
|
|
# define FALSE 0
|
|
|
|
# define TRUE !FALSE
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define DTM_BUFF_SIZE 32768
|
|
|
|
#define DTM_REFUSE_LIMIT 120
|
|
|
|
#define DTM_NO_CONNECTION -1
|
|
|
|
|
|
|
|
/*
|
|
|
|
Perhaps we should distinguish these
|
|
|
|
*/
|
|
|
|
#define DTM_CTS 0
|
|
|
|
#define DTM_RTS 0
|
|
|
|
#define DTM_EOT 0
|
|
|
|
|
|
|
|
#if !defined(_ARCH_MACOS) && !defined(_ARCH_MSDOS)
|
|
|
|
# define DISCARDSIZE 32768
|
|
|
|
#else
|
|
|
|
# define DISCARDSIZE 4096
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define DTMSTD 0
|
|
|
|
#define DTMLOCAL 1
|
|
|
|
#define INPORTTYPE 0 /* input port type */
|
|
|
|
#define OUTPORTTYPE 1 /* output port type */
|
|
|
|
#define PNAMELEN 64 /* max length of portname */
|
|
|
|
#define REFNAMELEN 32 /* max length of reference name given by
|
|
|
|
nameserver.
|
|
|
|
*/
|
|
|
|
#define MAX132 132 /* max space of 132 */
|
|
|
|
#define SEP " " /* blank as separator */
|
2013-03-09 18:59:42 -06:00
|
|
|
#define COLON ":" /* colon as separator */
|
2010-03-08 04:55:21 -06:00
|
|
|
|
|
|
|
#ifndef NULL
|
|
|
|
# if defined( _STDC_ ) || defined( __STDC__ )
|
|
|
|
# define NULL ((void *)0)
|
|
|
|
# else
|
|
|
|
# define NULL 0
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define FOR_EACH_OUT_PORT( pcur, pp ) \
|
2013-03-09 18:59:42 -06:00
|
|
|
for ( pcur = pp->out; pcur != NULL ; pcur = pcur->next )
|
2010-03-08 04:55:21 -06:00
|
|
|
#define FOR_EACH_IN_PORT( inp, pp ) \
|
|
|
|
for ( inp = pp->in; inp != NULL ; inp = inp->next )
|
|
|
|
|
|
|
|
|
2013-03-09 18:59:42 -06:00
|
|
|
/*
|
|
|
|
PORT STRUCTURES
|
2010-03-08 04:55:21 -06:00
|
|
|
*/
|
|
|
|
|
|
|
|
typedef struct sockaddr_in S_ADDR;
|
|
|
|
|
2013-03-09 18:59:42 -06:00
|
|
|
typedef struct Port
|
2010-03-08 04:55:21 -06:00
|
|
|
{
|
|
|
|
uint32 nethostid ;
|
|
|
|
uint16 portid ;
|
|
|
|
} Port ;
|
|
|
|
|
2013-03-09 18:59:42 -06:00
|
|
|
typedef struct Outport
|
2010-03-08 04:55:21 -06:00
|
|
|
{
|
|
|
|
S_ADDR sockaddr ; /* Socket family, netid/hostid, portid */
|
2013-03-09 18:59:42 -06:00
|
|
|
int32 connfd ; /* connection fd */
|
|
|
|
int availwrite ; /* port availability for write */
|
|
|
|
int seqstart ; /* "Sequence start" message sent or not */
|
|
|
|
struct Outport * next; /* link to next outport */
|
2010-03-08 04:55:21 -06:00
|
|
|
} Outport ;
|
|
|
|
|
2013-03-09 18:59:42 -06:00
|
|
|
#define DTM_NEW_DATASET -1
|
2010-03-08 04:55:21 -06:00
|
|
|
typedef struct Inport {
|
|
|
|
int32 fd; /* connection fds */
|
|
|
|
int32 blocklen; /* records no. of bytes read */
|
|
|
|
/*
|
|
|
|
Perhaps we should make these sequence, enums... that
|
|
|
|
would allow > < comparisions
|
|
|
|
*/
|
|
|
|
int fCTSsent; /* CTS already sent */
|
|
|
|
int fGotHeader; /* Already got the header */
|
|
|
|
#ifdef _XtIntrinsic_h
|
|
|
|
#ifdef __STDC__
|
|
|
|
#if sizeof( XtInputId ) != sizeof( int )
|
|
|
|
Balk - The following structure definition needs to be repaired
|
|
|
|
to restore the assertion
|
|
|
|
#endif
|
|
|
|
#endif
|
2013-03-09 18:59:42 -06:00
|
|
|
XtInputId XinputId;
|
2010-03-08 04:55:21 -06:00
|
|
|
#else
|
|
|
|
int XinputId;
|
|
|
|
#endif
|
|
|
|
struct Inport * next;
|
|
|
|
} Inport;
|
|
|
|
|
2013-03-09 18:59:42 -06:00
|
|
|
typedef struct
|
2010-03-08 04:55:21 -06:00
|
|
|
{
|
2013-03-09 18:59:42 -06:00
|
|
|
S_ADDR sockaddr ;
|
2010-03-08 04:55:21 -06:00
|
|
|
/* Socket family, netid/hostid, portid */
|
2013-03-09 18:59:42 -06:00
|
|
|
int32 sockfd ; /* Main socket of port
|
2010-03-08 04:55:21 -06:00
|
|
|
Outport - UDP socket
|
|
|
|
Inport - TCP socket
|
|
|
|
*/
|
|
|
|
#ifdef _XtIntrinsic_h
|
2013-03-09 18:59:42 -06:00
|
|
|
XtInputId XinputId;
|
2010-03-08 04:55:21 -06:00
|
|
|
#else
|
|
|
|
int XinputId;
|
|
|
|
#endif
|
2013-03-09 18:59:42 -06:00
|
|
|
|
2010-03-08 04:55:21 -06:00
|
|
|
int fLogical;
|
|
|
|
char portname[ PNAMELEN ] ; /* Logical portname */
|
|
|
|
|
|
|
|
int porttype ; /* Input or Output port */
|
|
|
|
int qservice ; /* Quality of service - actually qserv enum */
|
|
|
|
int32 key ; /* unique value used to catch stale port access */
|
|
|
|
|
|
|
|
char * Xcallback_data;
|
|
|
|
void (*Xcallback)();
|
|
|
|
#ifdef _XtIntrinsic_h
|
|
|
|
XtInputCallbackProc XaddInput;
|
|
|
|
XtInputCallbackProc XremoveInput;
|
|
|
|
#else
|
|
|
|
int (*XaddInput)();
|
|
|
|
int (*XremoveInput)();
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* Input port specific data */
|
|
|
|
|
|
|
|
Inport *in;
|
|
|
|
Inport *nextToRead;
|
|
|
|
void (*callback)();
|
|
|
|
|
|
|
|
/* Output port specific data */
|
|
|
|
|
|
|
|
Outport *out ; /* Linked list of Out port specific structures */
|
|
|
|
/* If the last action on this port was a successful
|
|
|
|
availWrite, then when we do a beginWrite, we
|
|
|
|
will NOT check for new routing information */
|
|
|
|
int fLastWasSuccessfulAvailWrite;
|
|
|
|
int fGotList; /* initially false, TRUE after any list is read */
|
|
|
|
int fDiscard; /* initially false, TRUE means /dev/null output */
|
|
|
|
} DTMPORT ;
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
GLOBAL VARIABLES
|
|
|
|
*/
|
|
|
|
|
2013-03-09 18:59:42 -06:00
|
|
|
#define DTM_INITIALIZED (DTMpt != NULL)
|
2010-03-08 04:55:21 -06:00
|
|
|
#define DTM_PORTS_INITIAL 20
|
|
|
|
#define DTM_PORTS_GROW 20
|
|
|
|
global DTMPORT **DTMpt INIT( NULL );
|
2013-03-09 18:59:42 -06:00
|
|
|
global int32 DTMptCount INIT( 0 );
|
2010-03-08 04:55:21 -06:00
|
|
|
global int32 DTMportSequenceNumber INIT( 1 );
|
|
|
|
|
|
|
|
#ifdef _ARCH_MSDOS
|
|
|
|
#include <errno.h>
|
|
|
|
#else
|
|
|
|
extern int errno;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
global DTMerr DTMerrno INIT( DTM_OK );
|
|
|
|
global char * dtm_discard INIT( NULL );
|
|
|
|
|
|
|
|
extern int (*DTMconvertRtns[]) DTM_PROTO(( int, VOIDPTR, int ));
|
|
|
|
|
|
|
|
/* global options */
|
|
|
|
|
|
|
|
/*
|
|
|
|
NOTE: setting this value to anything other than 0 can result
|
|
|
|
in deadlock. However, in correctly configure graphs, this should
|
|
|
|
not occure and performance is considerably better with values > 0.
|
|
|
|
DO NOT SET THIS VALUE TO SOME ARBITRARILY LARGE NUMBER.
|
|
|
|
*/
|
|
|
|
global int DTMSendCTSAhead INIT( 0 );
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
FUNCTION PROTOTYPES
|
|
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define NOT_LOGICAL_NAME FALSE
|
|
|
|
#define LOGICAL_NAME TRUE
|
|
|
|
extern char * dtm_get_refname DTM_PROTO(( VOID ));
|
|
|
|
extern char * dtm_get_refname DTM_PROTO(( VOID ));
|
|
|
|
extern int dtm_nsend_ackroute DTM_PROTO(( char * portname ));
|
|
|
|
extern int dtm_nsend_sockaddr DTM_PROTO(( int fd, char * sendto_addr,
|
|
|
|
char * refname, char * portname, S_ADDR * sockaddr ));
|
|
|
|
extern Outport * dtm_new_out_port DTM_PROTO(( Port * port ));
|
|
|
|
#define DTM_PORT_MASK 0xFFFF
|
2013-03-09 18:59:42 -06:00
|
|
|
#define DTM_PORT_KEY_SHIFT 16
|
2010-03-08 04:55:21 -06:00
|
|
|
extern int dtm_map_port_internal DTM_PROTO(( int32 port ));
|
|
|
|
extern void dtm_map_port_external DTM_PROTO(( int32 * port ));
|
|
|
|
#define DTM_WAIT TRUE
|
|
|
|
#define DTM_DONT_WAIT FALSE
|
|
|
|
extern int dtm_check_server DTM_PROTO(( DTMPORT *pp, int fWait ));
|
|
|
|
extern int dtm_send_ack DTM_PROTO(( int fd, int32 ack ));
|
|
|
|
extern int dtm_recv_ack DTM_PROTO(( int fd, int32 * ack ));
|
|
|
|
|
|
|
|
extern int dtm_destroy_in_port DTM_PROTO(( Inport * inp, DTMPORT * pp ));
|
|
|
|
extern int dtm_writev_buffer DTM_PROTO(( int fd, struct iovec *iov,
|
|
|
|
int32 iovlen, int32 iovsize,
|
|
|
|
struct sockaddr * addr, int addrlen ));
|
2013-03-09 18:59:42 -06:00
|
|
|
extern int dtm_read_buffer DTM_PROTO(( int d, int32 * blocklen,
|
2010-03-08 04:55:21 -06:00
|
|
|
void * buffer, int length ));
|
2013-03-09 18:59:42 -06:00
|
|
|
extern int dtm_recv_header DTM_PROTO((int fd , void * header,
|
2010-03-08 04:55:21 -06:00
|
|
|
int length));
|
|
|
|
extern int dtm_read_header DTM_PROTO((int fd , void * header,
|
|
|
|
int length));
|
2013-03-09 18:59:42 -06:00
|
|
|
extern int dtm_parse_ipaddr DTM_PROTO(( char * source,
|
2010-03-08 04:55:21 -06:00
|
|
|
unsigned long * dest ));
|
|
|
|
extern int dtm_quick_select DTM_PROTO(( int socket, int32 * count ));
|
2013-03-09 18:59:42 -06:00
|
|
|
extern int dtm_select DTM_PROTO(( int fd, int32 * count,
|
2010-03-08 04:55:21 -06:00
|
|
|
int32 time ));
|
2013-03-09 18:59:42 -06:00
|
|
|
extern int dtm_accept DTM_PROTO(( int fd, S_ADDR * sn,
|
2010-03-08 04:55:21 -06:00
|
|
|
struct timeval * timeout ));
|
|
|
|
extern int dtm_connect DTM_PROTO(( S_ADDR * sn, int * sockret ));
|
|
|
|
extern int dtm_quick_connect DTM_PROTO(( S_ADDR * sn, int * sockret ));
|
2013-03-09 18:59:42 -06:00
|
|
|
extern int dmt_end_connect DTM_PROTO(( int32 socket ));
|
2010-03-08 04:55:21 -06:00
|
|
|
extern unsigned long dtm_get_ipaddr DTM_PROTO(( char * ipaddrstr ));
|
2013-03-09 18:59:42 -06:00
|
|
|
extern int dtm_socket_init DTM_PROTO(( S_ADDR * sockaddr, int porttype,
|
2010-03-08 04:55:21 -06:00
|
|
|
int fLogicalName ));
|
2013-03-09 18:59:42 -06:00
|
|
|
extern int dtm_init_sockaddr DTM_PROTO(( S_ADDR * sockaddr,
|
2010-03-08 04:55:21 -06:00
|
|
|
char * portname,
|
|
|
|
int * pfLogicalName ));
|
|
|
|
extern int dtm_ninit DTM_PROTO(( void ));
|
|
|
|
extern char * dtm_get_naddr DTM_PROTO(( S_ADDR * addr, int * sockfd ));
|
|
|
|
extern void dtm_version DTM_PROTO(( void ));
|
|
|
|
extern int dtm_sigio DTM_PROTO(( int ));
|
|
|
|
extern char * dtm_find_tag DTM_PROTO(( char *, char *));
|
|
|
|
extern int dtm_accept_read_connections DTM_PROTO(( DTMPORT *pp,int fWait ));
|
|
|
|
extern void dtm_set_Xcallback DTM_PROTO(( DTMPORT *pp, Inport * inp ));
|
|
|
|
#ifdef _XtIntrinsic_h
|
2013-03-09 18:59:42 -06:00
|
|
|
extern void dtm_handle_in DTM_PROTO(( caddr_t client_data,
|
2010-03-08 04:55:21 -06:00
|
|
|
int * fd, XtInputId * in ));
|
|
|
|
#else
|
2013-03-09 18:59:42 -06:00
|
|
|
extern void dtm_handle_in DTM_PROTO(( caddr_t client_data,
|
2010-03-08 04:55:21 -06:00
|
|
|
int * fd, void * in ));
|
|
|
|
#endif
|
2013-03-09 18:59:42 -06:00
|
|
|
|
2010-03-08 04:55:21 -06:00
|
|
|
#ifdef __cplusplus
|
|
|
|
};
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif /* DTMINT_INC */
|