/* RPC.h
   C Public interface to a lightweight RPC runtime
   Last modified by D. Swinehart, 20 July 1982 9:38 am PDT */
   
/* Requires #include <env.h> */

#define	maxRNameLength		64
#define	maxShortStringLength	64
#define	maxPrincipalLength	64

struct VersionRange {
	word first;
	word last; };
	
struct InterfaceName {
	struct ShortSTRING *type;	/* e.g., "Lark.Lark" */
	struct ShortSTRING *instance;	/* e.g., "173#6#" */
	struct VersionRange version; };
    #define lenInterfaceName (sizeof(struct InterfaceName)/2)
	
struct EncryptionKey {
	char ekNib[8]; };
    #define lenEncryptionKey (sizeof(struct EncryptionKey)/2)
 
struct IV {
 	int blob [4]; };
 	#define lenIV (sizeof (struct IV)/2)
  
#define unencrypted	0
	/* conversation handle for unencrypted request */

    /* AuthenticateFailed: ERROR[why: AuthenticateFailure */
#define	badCommunications	1
#define	badCaller		2
#define	badKey			3
#define	badCallee		4 

     /* ExportFailed: ERROR[why: ExportFailure */
     /* badCommunications,  */
#define	badType			5
#define	badInstance		6
#define	badVersion		7
#define	tooMany			8
#define	badCredentials		9

     /* ImportFailed: ERROR[why: ImportFailure */
     /* badCommunications, badType, badInstance, badVersion, */
#define	wrongVersion		10
#define	interfaceUnbound	11
#define	badStubProtocol		12

     /* CallFailed: ERROR [why: CallFailure */
     /* unbound, */
#define	timeout			13
#define	busy			14
#define	runtimeProtocol	15
#define	stubProtocol		16
#define	badArgs			17

	/* SecurityLevel: TYPE = { */
#define	slNone	0
#define	slAuthOnly	(1<<8)
#define	slECB		(2<<8)
#define	slCBC		(3<<8)
#define	slCBCCheck	(4<<8)