138621Skarels /* 2*45179Skarels * @(#)dk.h 1.3 (Berkeley) 09/03/90 3*45179Skarels * 438621Skarels * DATAKIT VCS User Level definitions 538621Skarels * @(#)dk.h 2.1 DKHOST 84/07/03 638621Skarels */ 738621Skarels 838621Skarels 938621Skarels /* 1038621Skarels * ioctl codes 1138621Skarels */ 1238621Skarels 1338621Skarels /* 1438621Skarels * Note: these take paramters, but the copyin-copyout must be handled in 1538621Skarels * the driver. 1638621Skarels */ 1738625Skarels #define DKIODIAL _IO('k', 0) /* dial out */ 1838625Skarels #define DKIOCNEW _IO('k', 1) /* offer a service */ 1938625Skarels #define DKIOCREQ _IO('k', 2) /* request service (SU only) */ 2038625Skarels #define DKIOCSPL _IO('s', 1) /* splice two circuits (SU only) */ 2138625Skarels #define DIOCSWAIT _IO('s', 2) /* wait for splice to take place */ 2238621Skarels 2338621Skarels /* driver control */ 2438621Skarels 2538625Skarels #define DIOCEXCL _IO('d', 1) /* exclusive use */ 2638625Skarels #define DIOCNXCL _IO('d', 2) /* reset exclusive use */ 2738625Skarels #define DIOCRMODE _IOW('d', 3, short) /* set receiver termination modes */ 2838625Skarels #define DIOCQQABO _IOR('d', 4, struct dkqqabo) /* inquire status of last read */ 2938625Skarels #define DIOCXCTL _IOW('d', 8, short) /* send ctl envelope on next write */ 3038625Skarels #define DIOCFLUSH _IO('d', 9) /* flush output */ 3138625Skarels #define DIOCSETK _IOW('d', 10, short) /* debug info from kmc xmit&recv */ 3238625Skarels #define DIOCXWIN _IOW('d', 11, struct diocxwin) /* Set window size */ 3338625Skarels #define KIOCINIT _IO('d', 12) /* Reinitialize transmitter */ 3438625Skarels #define DIOCRESET _IOW('d', 13, short) /* Reset a channel */ 3538625Skarels #define DIOCCTYPE _IOW('d', 14, struct diocctype) /* Set conn type */ 3638625Skarels #define DIOCINFO _IOR('d', 15, struct diocinfo) /* Get chan #, max # */ 3738625Skarels #define DIOCSTAT _IOWR('d', 16, int) /* Check if channel open */ 3838621Skarels 3938621Skarels /* special codes used by dkxstdio */ 4038625Skarels #define DXIOEXIT _IOW('D', 'T', int) /* process exit code */ 4138621Skarels 4238621Skarels /* 4338621Skarels * structure returned from DIOCQQABO giving receive status 4438621Skarels */ 4538621Skarels struct dkqqabo { 4638621Skarels short rcv_resid ; /* residual length in buffer */ 4738621Skarels short rcv_reason ; /* set of bits giving reasons */ 4838621Skarels short rcv_ctlchar ; /* ctl char that finished block */ 4938621Skarels } ; 5038621Skarels 5138621Skarels /* 5238621Skarels * receive mode, and completion indicators 5338621Skarels * also defined in sys/dkit.h 5438621Skarels */ 5538621Skarels 5638621Skarels #ifndef DKR_FULL 5738621Skarels #define DKR_FULL 01 /* buffer full, normal read done */ 5838621Skarels #define DKR_CNTL 02 /* read terminated on control character */ 5938621Skarels #define DKR_ABORT 010 /* receive aborted by higher level command */ 6038621Skarels #define DKR_BLOCK 040 /* end of block */ 6138621Skarels #define DKR_TIME 0100 /* end of time limit reached */ 6238621Skarels #endif 6338621Skarels 6438621Skarels 6538621Skarels 6638621Skarels /* 6738621Skarels * structure passed with ioctl to request a service 6838621Skarels */ 6938621Skarels struct diocreq { 7038621Skarels short req_traffic ; /* traffic intensity generated */ 7138621Skarels short req_1param ; /* typ: service requested */ 7238621Skarels short req_2param ; /* parameter to server */ 7338621Skarels } ; 7438621Skarels 7538621Skarels /* 7638621Skarels * structure passed to dial a number 7738621Skarels */ 7838621Skarels struct diocdial { 7938621Skarels struct diocreq iocb; 80*45179Skarels char dialstring[MLEN-sizeof (struct diocreq)]; 8138621Skarels }; 8238621Skarels 8338621Skarels /* 8438621Skarels * Structure passed to set URP limits 8538621Skarels */ 8638621Skarels struct diocxwin { 8738621Skarels int xwin_msgsize; /* Size of one message */ 8838621Skarels unsigned char xwin_nmsg; /* Number of outstanding messages */ 8938621Skarels }; 9038621Skarels 9138621Skarels /* 9238621Skarels * Structure passed to request configuration info 9338621Skarels */ 9438621Skarels struct diocinfo { 9538621Skarels short dioc_nchan; /* Number of channels configured */ 9638621Skarels short dioc_channum; /* This channel number */ 9738621Skarels short dioc_commchan; /* Common supervisory channel */ 9838621Skarels }; 9938621Skarels 10038621Skarels /* 10138621Skarels * structure passed with ioctl to request a splice 10238621Skarels */ 10338621Skarels struct diocspl { 10438621Skarels short spl_fdin; /* the other file descriptor */ 10538621Skarels short spl_un1used; 10638621Skarels short spl_un2used; 10738621Skarels } ; 10838621Skarels 10938621Skarels struct diocctype { 11038621Skarels int dct_type; /* Annotation type */ 111*45179Skarels char dct_name[MLEN-sizeof (int)-1]; /* Connection type */ 11238621Skarels }; 11338621Skarels #define DCT_DIAL 1 /* Dialstring uttered */ 11438621Skarels #define DCT_SERVE 2 /* Server name */ 11538621Skarels #define DCT_FROM 3 /* Connection source */ 11638621Skarels 11738621Skarels 11838621Skarels /* 11938621Skarels * values returned from service request 12038621Skarels */ 12138621Skarels #define req_error req_traffic 12238621Skarels #define req_driver req_traffic 12338621Skarels 12438621Skarels #ifndef KERNEL 12538621Skarels #include <sys/ioctl.h> 12638621Skarels /* 12738621Skarels * structure received by server when new connection made 12838621Skarels */ 12938621Skarels struct mgrmsg { 13038621Skarels short m_chan ; /* channel number of connection */ 13138621Skarels unsigned short m_tstamp ; /* time stamp of request */ 13238621Skarels char * m_protocol ; /* protocol options from user */ 13338621Skarels char * m_origtype ; /* type of originating device */ 13438621Skarels char * m_parm ; /* parameter string from user */ 13538621Skarels char * m_uid ; /* param from system/user, aka UID */ 13638621Skarels char * m_dial ; /* dial string entered */ 13738621Skarels char * m_source ; /* originator, as known to remote node */ 13838621Skarels char * m_lname ; /* originator, as known to local node */ 13938621Skarels char * m_service ; /* service type requested by user */ 14038621Skarels char * m_lflag ; /* L == call from local node, 14138621Skarels * R == call from a remote one. */ 14238621Skarels char * m_srcnode; /* originating node (last segment) */ 14338621Skarels char * m_srcmod; /* originating mod */ 14438621Skarels char * m_srcchan; /* originating channel */ 14538621Skarels char * m_cflag; /* call flag: F=first, P=previous */ 14638621Skarels char * m_errmsg ; /* possible error msg if m_chan <= 0 */ 14738621Skarels char * m_baudrate ; /* incoming terminal baud rate */ 14838621Skarels } ; 14938621Skarels 15038621Skarels 15138621Skarels 15238621Skarels /* 15338621Skarels * routines declared in libdk.a 15438621Skarels */ 15538621Skarels extern char *dknamer(); 15638621Skarels extern char *dtnamer(); 15738621Skarels extern char *dxnamer(); 15838621Skarels extern char *dinamer(); 15938621Skarels extern char *dketcf(); 16038621Skarels extern char *dkfcanon(), *dktcanon(); 16138621Skarels extern char *dkerr(); 16238621Skarels extern char *maphost(), *miscfield(); 16338621Skarels extern char mh_hostname[]; 16438621Skarels extern struct mgrmsg *dkmgr(); 16538621Skarels 16638621Skarels extern int dk_verbose, dk_errno; 16738621Skarels #endif KERNEL 16838621Skarels 169