summary refs log tree commit diff
path: root/nis/rpcsvc/nis.x
diff options
context:
space:
mode:
Diffstat (limited to 'nis/rpcsvc/nis.x')
-rw-r--r--nis/rpcsvc/nis.x118
1 files changed, 82 insertions, 36 deletions
diff --git a/nis/rpcsvc/nis.x b/nis/rpcsvc/nis.x
index 20a4733741..2d19f37931 100644
--- a/nis/rpcsvc/nis.x
+++ b/nis/rpcsvc/nis.x
@@ -28,13 +28,6 @@
 % * Mountain View, California  94043
 % */
 
-/*
- * From 4.1 : @(#)nis.x	1.61 Copyright 1989 Sun Microsystems
- *
- * RPC Language Protocol description file for NIS Plus
- * This version : 1.61
- * Last Modified : 3/19/91
- */
 #ifdef RPC_HDR
 %/*
 % *	nis.h
@@ -44,9 +37,9 @@
 % * 	structures used by the NIS service. It includes the file nis_tags.h
 % *	which defines the tag values. This allows the tags to change without
 % *	having to change the nis.x file.
-% *
+% * 	
 % *	NOTE : DO NOT EDIT THIS FILE! It is automatically generated when
-% *	       rpcgen is run on the nis.x file. Note that there is a
+% *	       rpcgen is run on the nis.x file. Note that there is a 
 % *	       simple sed script to remove some unneeded lines. (See the
 % *	       Makefile target nis.h)
 % *
@@ -75,7 +68,7 @@ enum nis_error {
 	NIS_NAMEUNREACHABLE = 5, /* Can't get there from here */
 	NIS_UNKNOWNOBJ = 6,	/* Object type is bogus */
 	NIS_TRYAGAIN = 7,	/* I'm busy, call back */
-	NIS_SYSTEMERROR = 8,	/* Out of band failure */
+	NIS_SYSTEMERROR = 8,	/* Generic system error */
 	NIS_CHAINBROKEN = 9,	/* First/Next warning */
 	NIS_PERMISSION = 10,	/* Not enough permission to access */
 	NIS_NOTOWNER = 11,	/* You don't own it, sorry */
@@ -118,11 +111,11 @@ enum nis_error {
 };
 
 
-/*
+/* 
  * Structure definitions for the parameters and results of the actual
  * NIS RPC calls.
  *
- * This is the standard result (in the protocol) of most of the nis
+ * This is the standard result (in the protocol) of most of the nis 
  * requests.
  */
 
@@ -136,11 +129,11 @@ struct nis_result {
 	u_long		cticks;		/* Client ticks		  */
 };
 
-/*
- * A Name Service request
- * This request is used to access the name space, ns_name is the name
+/* 
+ * A Name Service request 
+ * This request is used to access the name space, ns_name is the name 
  * of the object within the namespace and the object is it's value, for
- * add/modify, a copy of the original for remove.
+ * add/modify, a copy of the original for remove. 
  */
 
 struct ns_request {
@@ -148,7 +141,7 @@ struct ns_request {
 	nis_object	ns_object<1>;	/* Optional Object (add/remove)	*/
 };
 
-/*
+/* 
  * An information base request
  * This request includes the NIS name of the table we wish to search, the
  * search criteria in the form of attribute/value pairs and an optional
@@ -168,7 +161,7 @@ struct ib_request {
 };
 
 /*
- * This argument to the PING call notifies the replicas that something in
+ * This argument to the PING call notifies the replicas that something in 
  * a directory has changed and this is it's timestamp. The replica will use
  * the timestamp to determine if its resync operation was successful.
  */
@@ -177,8 +170,8 @@ struct ping_args {
 	u_long		stamp;	/* timestamp of the transaction  */
 };
 
-/*
- * These are the type of entries that are stored in the transaction log,
+/* 
+ * These are the type of entries that are stored in the transaction log, 
  * note that modifications will appear as two entries, for names, they have
  * a "OLD" entry followed by a "NEW" entry. For entries in tables, there
  * is a remove followed by an add. It is done this way so that we can read
@@ -196,13 +189,13 @@ enum log_entry_t {
 	MOD_IBASE = 7,		/* Entry was modified in information base */
 	UPD_STAMP = 8		/* Update timestamp (used as fenceposts)  */
 };
-
+	
 /*
- * This result is returned from the name service when it is requested to
+ * This result is returned from the name service when it is requested to 
  * dump logged entries from its transaction log. Information base updates
  * will have the name of the information base in the le_name field and
  * a canonical set of attribute/value pairs to fully specify the entry's
- * 'name'.
+ * 'name'. 
  */
 struct log_entry {
 	u_long		le_time;	/* Time in seconds 		*/
@@ -218,7 +211,7 @@ struct log_result {
 	netobj		lr_cookie;	/* Used by the dump callback	*/
 	log_entry	lr_entries<>;	/* zero or more entries 	*/
 };
-
+	
 struct cp_result {
 	nis_error	cp_status;	/* Status of the checkpoint 	*/
 	u_long		cp_zticks;	/* Service 'ticks' 	    	*/
@@ -227,7 +220,7 @@ struct cp_result {
 
 /*
  * This structure defines a generic NIS tag list. The taglist contains
- * zero or tags, each of which is a type and a value. (u_long).
+ * zero or tags, each of which is a type and a value. (u_long). 
  * These are used to report statistics (see tag definitions below)
  * and to set or reset state variables.
  */
@@ -254,17 +247,59 @@ struct fd_args {
 struct fd_result {
 	nis_error	status;		/* Status returned by function	*/
 	nis_name	source;		/* Source of this answer   	*/
-	opaque		dir_data<>;	/* Directory Data (XDR'ed) 	*/
+	opaque		dir_data<>;	/* Directory Data (XDR'ed) 	*/ 
 	opaque		signature<>;	/* Signature of the source 	*/
 };
 
+%/*
+% * Structures used for server binding.
+% */
+struct nis_bound_endpoint {
+	endpoint ep;
+	int generation;
+	int rank;
+	u_long flags;
+	int hostnum;
+	int epnum;
+	nis_name uaddr;
+	endpoint cbep;
+};
+typedef struct nis_bound_endpoint nis_bound_endpoint;
+ 
+struct nis_bound_directory {
+	int generation;
+	int min_rank;           /* minimum rank of bound endpoints */
+	int optimal_rank;       /* best possible rank of all endpoints */
+	directory_obj dobj;
+	nis_bound_endpoint BEP<>;
+};
+typedef struct nis_bound_directory nis_bound_directory;
+%#define bep_len BEP.BEP_len
+%#define bep_val BEP.BEP_val
+ 
+struct nis_active_endpoint {
+	endpoint ep;
+	nis_name hostname;
+	int rank;
+	int uaddr_generation;
+	nis_name uaddr;
+	int cbep_generation;
+	endpoint cbep;
+};
+typedef struct nis_active_endpoint nis_active_endpoint;
+ 
+%/* defines for nis_bound_endpoint.flags */
+%#define NIS_BOUND 0x1
+%#define NIS_TRANSIENT_ERRORS 0x2
+
 
-/*
+
+/* 
  * What's going on here? Well, it's like this. When the service
  * is being compiled it wants to have the service definition specific
  * info included, and when the client is being compiled it wants that
  * info. This includes the appropriate file which was generated by
- * make in the protocols directory (probably /usr/include/rpcsvc).
+ * make in the protocols directory (probably /usr/include/rpcsvc). 
  */
 #ifdef RPC_SVC
 %#include "nis_svc.h"
@@ -296,10 +331,10 @@ program  NIS_PROG {
 
 		/* If fetch and optionally reset statistics */
 		nis_taglist  NIS_STATUS(nis_taglist) = 14;
-
+		
 		/* Dump changes to directory since time in da_time */
 		log_result  NIS_DUMPLOG(dump_args) = 15;
-
+		
 		/* Dump contents of directory named */
 		log_result  NIS_DUMP(dump_args) = 16;
 
@@ -314,16 +349,16 @@ program  NIS_PROG {
 
 		/* Send 'status changed' ping to replicates */
 		void	    NIS_PING(ping_args) = 20;
-
+	
 		/* Modify server behaviour (such as debugging) */
 		nis_taglist NIS_SERVSTATE(nis_taglist) = 21;
-
+	
 		/* Create a Directory */
 		nis_error   NIS_MKDIR(nis_name) = 22;
-
+	
 		/* Remove a Directory */
 		nis_error   NIS_RMDIR(nis_name) = 23;
-
+		
 		/* Update public keys of a directory object */
 		nis_error   NIS_UPDKEYS(nis_name) = 24;
 	} = 3;
@@ -372,6 +407,15 @@ program  NIS_PROG {
 %#define NIS_CREATE_ACC		4
 %#define NIS_DESTROY_ACC	8
 %/* Test macros. a == access rights, m == desired rights. */
+%#define NIS_WORLD(a, m)	(((a) & (m)) != 0)
+%#define NIS_GROUP(a, m)	(((a) & ((m) << 8)) != 0)
+%#define NIS_OWNER(a, m)	(((a) & ((m) << 16)) != 0)
+%#define NIS_NOBODY(a, m)	(((a) & ((m) << 24)) != 0)
+%/* 
+% * EOL Alert - The following non-prefixed test macros are 
+% * here for backward compatability, and will be not be present
+% * in future releases - use the NIS_*() macros above.
+% */
 %#define WORLD(a, m)	(((a) & (m)) != 0)
 %#define GROUP(a, m)	(((a) & ((m) << 8)) != 0)
 %#define OWNER(a, m)	(((a) & ((m) << 16)) != 0)
@@ -418,6 +462,8 @@ program  NIS_PROG {
 %#define ENTRY_LEN(obj, col) \
 %	(obj)->EN_data.en_cols.en_cols_val[col].ec_value.ec_value_len
 %
+%
+%
 %#ifdef __cplusplus
 %}
 %#endif
@@ -429,12 +475,12 @@ program  NIS_PROG {
 %
 %/*
 % * nis_3.h
-% *
+% * 
 % * This file contains definitions that are only of interest to the actual
 % * service daemon and client stubs. Normal users of NIS will not include
 % * this file.
 % *
-% * NOTE : This include file is automatically created by a combination
+% * NOTE : This include file is automatically created by a combination 
 % * of rpcgen and sed. DO NOT EDIT IT, change the nis.x file instead
 % * and then remake this file.
 % */