
/*
 *  DNETLIB.H
 */

#include "/version.h"

#define CHANN	struct _CHANN

#define NAMELEN sizeof("DNET.PORT.XXXXX")
#define NAMEPAT "DNET.PORT.%ld"

CHANN {
    PORT    port;	    /*	receive data, replies	    */
    PORT    *dnetport;	    /*	dnet's master port          */
    LIST    rdylist;	    /*	ready to be read	    */
    uword   chan;	    /*	channel # for open channels */
    ubyte   eof;	    /*	channel remotely closed/eof */
    ubyte   filler;
    int     qlen;	    /*	allowed write queue size    */
    int     queued;	    /*	current # packets queued    */
};

#define EFATAL	0
#define EWARN	1
#define EDEBUG	2

#define NT_REQUEUE  0x40

#define elog(how, ctl, data)    _elog(__LINE__,__FILE__,how,ctl,data)

extern char *Program;

/*
 *  Routines
 */

extern void Version	ARGS((char *, char *, char *));
extern PORT *DListen	ARGS((uword));
extern void DUnListen	ARGS((PORT *));
extern PORT *DAccept	ARGS((PORT *));
extern int  DNAAccept	ARGS((PORT *));
extern void DPri	ARGS((void *, int));
extern PORT *DOpen	ARGS((char *, uword, int, int));
extern int  DCheckEof	ARGS((void *));
extern short DGetIoctl	ARGS((void *, short *, char *));
extern long DNRead  ARGS((void *, void *, long));
extern long DRead   ARGS((void *, void *, long));
extern void DQueue  ARGS((void *, long));
extern long DWrite  ARGS((void *, void *, long));
extern void DEof    ARGS((void *));
extern void DIoctl  ARGS((void *, ubyte, uword, ubyte));
extern int  DStat   ARGS((char *, APTR, long));
extern int  DQuit   ARGS((char *));
extern void DClose  ARGS((void *));
extern int  DExec   ARGS((void *, char *));
extern short WaitQueue	ARGS((void *, IOSTD *));

extern void *MakeChannel    ARGS((IOSTD *, char *));
extern void DeleteChannel   ARGS((void *));
extern void FixSignal	    ARGS((void *));
extern int  GetEnvVal	    ARGS((char *));
extern int  OpenCfgFile     ARGS((void));
extern char *GetCfgLine     ARGS((char *));
extern void CloseCfgFile    ARGS((void));
extern void GetOneCfg	    ARGS((char *));
extern int  ExtractFieldVal ARGS((char *, char *, short *));

extern void _elog   ARGS((int, char *, int, char *, void *));

