SRI-NOSC/ncpd/kread.h

#

/*	kread.h		*/

struct	kr	/* just to define kr_op field */
{
char	kr_op;			/* op field for kernel reads */
};

struct	kr_open			/* open instruction structure */
{
char	kr_op;			/* op field */
char	kro_type;		/* type of open */
int	kro_id;			/* kernel's id for file */
char	*kro_lskt;		/* local socket */
char	*kro_fskt[2];		/* foreign socket */
char	kro_host;		/* host */
char	kro_bysz;		/* byte size */
int	kro_nmal;		/* nominal (initial) allocation */
int	kro_timo;		/* timeout */
int	kro_relid;		/* id of relative file for relative open */
};

/* open type bits--should be taken from netopen.h */
#define	otb_drct	01	/* icp | direct */
#define	otb_serv	02	/* user | server */
#define	otb_init	04	/* listen | init */
#define	otb_spcf	010	/* general | specific (for listen) */
#define	otb_dux		020	/* simplex | duplex */
#define	otb_rltv	040	/* absolute | relative (socket #'s) */

/*	open error codes--should be taken from user.h	*/
#define EDDWN		48	/* ncp daemon was killed */
#define EDAEIO		49	/* ncpdaemon I/O error */
#define EDINV		50	/* invalid argument to daemon */
#define EDNORES		51	/* no resource in daemon */

struct	kr_rcv			/* rcv instruction structure */
{
char	kr_op;			/* op field */
char	krr_type;		/* type field from imp leader */
char	krr_host;		/* source field from imp leader */
char	krr_link;		/* link filed from imp leader */
char	krr_sbty;		/* subtype field from imp leader */
char	krr_data;		/* data from message, if any, starts here */
char	krr_dts[1008];		/* space for data */
}
kr_buf;				/* this is the kernel read buffer */

#define	krr_ovhd	5	/* length of leader and op fields in rcv */

struct	kr_close		/* close instruction structure */
{
char	kr_op;			/* op field */
char	krc_sinx;		/* socket index in file */
int	krc_id;			/* kernel's file id */
};

struct	krr_reset
{
char	kr_op;			/* op field */
char	krst_host;		/* host to reset */
};
/*	kernel read instruction opcodes	*/
#define	kri_open	0
#define	kri_rcv		1
#define	kri_close	2
#define	kri_timo	3
#define kri_reset	4