home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OpenStep 4.2J (Developer)
/
os42jdev.iso
/
NextDeveloper
/
Headers
/
netinfo
/
ni_prot.x
< prev
next >
Wrap
Text File
|
1995-04-12
|
9KB
|
481 lines
/*
* NetInfo protocol specification
* Copyright (C) 1989 by NeXT, Inc.
*/
/* Preamble appearing on all generated output */
#ifndef NOPREAMBLE
%/*
% * Output of the RPC protocol compiler: DO NOT EDIT
% * Copyright (C) 1989 by NeXT, Inc.
% */
#endif
#ifndef RPC_HDR
%#include <stdio.h>
%#include <sys/time.h>
%#include "clib.h"
#endif
const NI_NAME_MAXLEN = 65535;
const NI_NAMELIST_MAXLEN = 65535;
const NI_PROPLIST_MAXLEN = 65535;
const NI_IDLIST_MAXLEN = 1048576;
/*
* Every object has a unique ID. One part of the ID identifies the object
* itself. The other identifies the instance of the object. Every time
* an object is written or an object is destroyed and then reallocated,
* its instance is incremented.
*
* All read operations ignore the instance field. All write operations
* refuse to operate on the object if there is an instance mismatch.
*/
/*
* Don't go through unnecessary overhead for xdr_ni_index using typedef
* rpcgen needs an optimizer so we don't have to do this!
*/
#ifdef RPC_HDR
%typedef unsigned long ni_index;
#endif
#define ni_index unsigned long
struct ni_id {
ni_index nii_object;
ni_index nii_instance;
};
/*
* Names are assumed to contain human-readable ASCII characters.
*/
typedef string ni_name<NI_NAME_MAXLEN>;
typedef ni_name ni_namelist<NI_NAMELIST_MAXLEN>;
/*
* A property
*/
struct ni_property {
ni_name nip_name;
ni_namelist nip_val;
};
/*
* A list of properties
*/
typedef ni_property ni_proplist<NI_PROPLIST_MAXLEN>;
/*
* A list of IDs (yet another variable-length array)
*/
typedef ni_index ni_idlist<NI_IDLIST_MAXLEN>;
/*
* A name object
*/
struct ni_object {
ni_id nio_id;
ni_proplist nio_props;
ni_index nio_parent;
ni_idlist nio_children;
};
/*
* All operations return a status indicating either that the requested
* operation succeeded or why it failed.
*/
enum ni_status {
NI_OK, /* Operation succeeded */
NI_BADID, /* ID is invalid */
NI_STALE, /* Write attempted on stale version of object */
NI_NOSPACE, /* No space available for write operation */
NI_PERM, /* Permission denied */
NI_NODIR, /* No such directory */
NI_NOPROP, /* No such property */
NI_NONAME, /* No such name */
NI_NOTEMPTY, /* Cannot delete name object with children */
NI_UNRELATED, /* Object is not child of parent: cannot destroy */
NI_SERIAL, /* Serialization error */
NI_NETROOT, /* Hit network root domain */
NI_NORESPONSE, /* No response from remote parent */
NI_RDONLY, /* No writes allowed: all objects are read-only */
NI_SYSTEMERR, /* generic remote error */
NI_ALIVE, /* Can't regenerate: already in use */
NI_NOTMASTER, /* Operation makes no sense on clone */
NI_CANTFINDADDRESS, /* Can't find address of server */
NI_DUPTAG, /* Duplicate domain tag: can't serve it */
NI_NOTAG, /* No such tag */
NI_AUTHERROR, /* Authentication error */
NI_NOUSER, /* No such user */
NI_MASTERBUSY, /* Master server is busy */
NI_INVALIDDOMAIN, /* Invalid Domain */
NI_BADOP, /* Invalid operation on master */
NI_FAILED = 9999 /* generic local error */
};
/*
* Wrappers needed to handle arguments and results
*/
union ni_id_res switch (ni_status status) {
case NI_OK:
ni_id id;
default:
void;
};
struct ni_parent_stuff {
ni_index object_id;
ni_id self_id;
};
union ni_parent_res switch (ni_status status) {
case NI_OK:
struct ni_parent_stuff stuff;
default:
void;
};
struct ni_children_stuff {
ni_idlist children;
ni_id self_id;
};
union ni_children_res switch (ni_status status) {
case NI_OK:
ni_children_stuff stuff;
default:
void;
};
struct ni_entry {
ni_index id;
ni_namelist *names;
};
typedef ni_entry ni_entrylist<NI_IDLIST_MAXLEN>;
struct ni_list_stuff {
ni_entrylist entries;
ni_id self_id;
};
union ni_list_res switch (ni_status status) {
case NI_OK:
ni_list_stuff stuff;
default:
void;
};
struct ni_proplist_stuff {
ni_id id;
ni_proplist props;
};
struct ni_create_args {
ni_id id;
ni_proplist props;
ni_index where;
ni_id *target_id;
};
union ni_proplist_res switch (ni_status status) {
case NI_OK:
ni_proplist_stuff stuff;
default:
void;
};
struct ni_create_stuff {
ni_id id;
ni_id self_id;
};
union ni_create_res switch (ni_status status) {
case NI_OK:
ni_create_stuff stuff;
default:
void;
};
struct ni_destroy_args {
ni_id parent_id;
ni_id self_id;
};
struct ni_lookup_args {
ni_id id;
ni_name key;
ni_name value;
};
struct ni_lookup_stuff {
ni_idlist idlist;
ni_id self_id;
};
union ni_lookup_res switch (ni_status status) {
case NI_OK:
ni_lookup_stuff stuff;
default:
void;
};
struct ni_name_args {
ni_id id;
ni_name name;
};
struct ni_createprop_args {
ni_id id;
ni_property prop;
ni_index where;
};
struct ni_writeprop_args {
ni_id id;
ni_index prop_index;
ni_namelist values;
};
struct ni_prop_args {
ni_id id;
ni_index prop_index;
};
struct ni_namelist_stuff {
ni_namelist values;
ni_id self_id;
};
union ni_namelist_res switch (ni_status status) {
case NI_OK:
ni_namelist_stuff stuff;
default:
void;
};
struct ni_propname_args {
ni_id id;
ni_index prop_index;
ni_name name;
};
struct ni_createname_args {
ni_id id;
ni_index prop_index;
ni_name name;
ni_index where;
};
struct ni_nameindex_args {
ni_id id;
ni_index prop_index;
ni_index name_index;
};
struct ni_writename_args {
ni_id id;
ni_index prop_index;
ni_index name_index;
ni_name name;
};
struct ni_readname_stuff {
ni_id id;
ni_name name;
};
union ni_readname_res switch (ni_status status) {
case NI_OK:
ni_readname_stuff stuff;
default:
void;
};
struct ni_binding {
ni_name tag;
unsigned addr;
};
union ni_rparent_res switch (ni_status status) {
case NI_OK:
ni_binding binding;
default:
void;
};
typedef struct ni_object_node *ni_object_list;
struct ni_object_node {
ni_object object;
ni_object_list next;
};
struct ni_readall_stuff {
unsigned checksum;
ni_index highestid;
ni_object_list list;
};
union ni_readall_res switch (ni_status status) {
case NI_OK:
ni_readall_stuff stuff;
default:
void;
};
typedef ni_proplist ni_proplist_list<NI_IDLIST_MAXLEN>;
struct ni_listall_stuff {
ni_id self_id;
ni_proplist_list entries;
};
union ni_listall_res switch (ni_status status) {
case NI_OK:
ni_listall_stuff stuff;
default:
void;
};
program NI_PROG {
version NI_VERS {
void
_NI_PING(void) = 0;
/*
* Get various server statistics
*/
ni_proplist
_NI_STATISTICS(void) = 1;
/*
* Procedures dealing with nodes
*/
ni_id_res
_NI_ROOT(void) = 2;
ni_id_res
_NI_SELF(ni_id) = 3;
ni_parent_res
_NI_PARENT(ni_id) = 4;
ni_create_res
_NI_CREATE(ni_create_args) = 5;
ni_id_res
_NI_DESTROY(ni_destroy_args) = 6;
ni_proplist_res
_NI_READ(ni_id) = 7;
ni_id_res
_NI_WRITE(ni_proplist_stuff) = 8;
ni_children_res
_NI_CHILDREN(ni_id) = 9;
ni_lookup_res
_NI_LOOKUP(ni_lookup_args) = 10;
ni_list_res
_NI_LIST(ni_name_args) = 11;
/*
* Procedures dealing with properties
*/
ni_id_res
_NI_CREATEPROP(ni_createprop_args) = 12;
ni_id_res
_NI_DESTROYPROP(ni_prop_args) = 13;
ni_namelist_res
_NI_READPROP(ni_prop_args) = 14;
ni_id_res
_NI_WRITEPROP(ni_writeprop_args) = 15;
ni_id_res
_NI_RENAMEPROP(ni_propname_args) = 16;
ni_namelist_res
_NI_LISTPROPS(ni_id) = 17;
/*
* Procedures dealing with names
*/
ni_id_res
_NI_CREATENAME(ni_createname_args) = 18;
ni_id_res
_NI_DESTROYNAME(ni_nameindex_args) = 19;
ni_readname_res
_NI_READNAME(ni_nameindex_args) = 20;
ni_id_res
_NI_WRITENAME(ni_writename_args) = 21;
/*
* Returns the address of this domain's remote parent
*/
ni_rparent_res
_NI_RPARENT(void) = 22;
/*
* List all properties of each subdirectory, not just
* just a single named property.
*
* WARNING: this routine is dangerous and may be
* removed from future implementations of the protocol.
* While it is good the the network in that there is
* less data on it because a lot is done in a single call,
* it is bad for the server because it ties it up and locks
* others out.
*/
ni_listall_res
_NI_LISTALL(ni_id) = 23;
/*
* Answers only if the given binding is served
*/
void
_NI_BIND(ni_binding) = 24;
/*
* Read the entire database if the checksum is different
* Implemented by master only.
*/
ni_readall_res
_NI_READALL(unsigned) = 25;
/*
* Informs server that master has crashed. Hands out
* latest checksum.
*/
void
_NI_CRASHED(unsigned) = 26;
/*
* If master, force clones to resync.
* If clone, resync with master.
*/
ni_status
_NI_RESYNC(void) = 27;
/*
* Extra procedure added for performance
* Terminates on first hit, returns proplist
*/
ni_proplist_res
_NI_LOOKUPREAD(ni_lookup_args) = 28;
} = 2;
} = 200100000;