Coda Distributed File System
rpc2.h
Go to the documentation of this file.
1/* BLURB lgpl
2
3 Coda File System
4 Release 7
5
6 Copyright (c) 1987-2019 Carnegie Mellon University
7 Additional copyrights listed below
8
9This code is distributed "AS IS" without warranty of any kind under
10the terms of the GNU Library General Public Licence Version 2, as
11shown in the file LICENSE. The technical and financial contributors to
12Coda are listed in the file CREDITS.
13
14 Additional copyrights
15
16#*/
17
18/*
19 IBM COPYRIGHT NOTICE
20
21 Copyright (C) 1986
22 International Business Machines Corporation
23 All Rights Reserved
24
25This file contains some code identical to or derived from the 1986
26version of the Andrew File System ("AFS"), which is owned by the IBM
27Corporation. This code is provided "AS IS" and IBM does not warrant
28that it is free of infringement of any intellectual rights of any
29third party. IBM disclaims liability of any kind for any damages
30whatsoever resulting directly or indirectly from use of this software
31or of any derivative work. Carnegie Mellon University has obtained
32permission to modify, distribute and sublicense this code, which is
33based on Version 2 of AFS and does not contain the features and
34enhancements that are part of Version 3 of AFS. Version 3 of AFS is
35commercially available and supported by Transarc Corporation,
36Pittsburgh, PA.
37
38*/
39
40#ifndef _RPC2_
41#define _RPC2_
42
43#ifdef HAVE_CONFIG_H
44#include <config.h>
45#endif
46
47#include <stdio.h>
48#include <sys/time.h>
49#include <netinet/in.h>
50
51#ifdef HAVE_ARPA_INET_H
52#include <arpa/inet.h>
53#endif
54
55/* This string is used in RPC initialization calls to ensure that the
56runtime system and the header files are mutually consistent. Also
57passed across on RPC2_NewBinding for advisory information to other
58side. Changes to this string may cause RPC2_OLDVERSION to be returned
59on RPC2_NewBinding()s. */
60/* #define RPC2_VERSION "Version 14.0: Satya, 6 May 1988, 10:00" */
61#define RPC2_VERSION "Version 15.0: JH, 10 Dec 1998, 12:00"
62
63/* Found as the first 4 bytes of EVERY packet. Change this if you
64change any aspect of the protocol sequence, or if you change the
65packet header, or the body formats of the initialization packets.
66Used in initial packet exchange to verify that the client and server
67speak exactly the same protocol. Orthogonal to RPC2_VERSION. We need
68this in the header at the very beginning, else we cannot change packet
69formats in a detectable manner. */
70#define RPC2_PROTOVERSION 8
71
72/*
73The following constants are used to indicate the security-level of RPC
74connections.
75*/
76#define RPC2_OPENKIMONO 98 /* Neither authenticated nor encrypted */
77#define RPC2_AUTHONLY 12 /* Authenticated but not encrypted */
78#define RPC2_HEADERSONLY 73 /* Authenticated but only headers encrypted */
79#define RPC2_SECURE 66 /* Authenticated and fully encrypted */
80
81/* RPC2 supports multiple encryption types; the key length is fixed,
82and you must always supply a field of RPC2_KEYSIZE bytes wherever an
83encryption key is called for. However, individual algorithms can
84choose to ignore excess bytes in the keys.
85
86The encryption types are specified as integer bit positions so that
87the EncryptionTypesMask field of RPC2_GetRequest() can be a mask of
88these types. The required type must also be specified in
89RPC2_NewBinding().
90
91To add support for other encryption types only the constants below and
92the internal runtime procedures rpc2_Encrypt() and rpc2_Decrypt() have
93to be modified. */
94#define RPC2_DES 1
95#define RPC2_XOR 2
96#define RPC2_ENCRYPTIONTYPES (RPC2_DES | RPC2_XOR)
97/* union of all supported types */
98#define RPC2_KEYSIZE 8 /*Size in bytes of the encryption keys */
99
100/*
101RPC procedure return codes:
102
103These may also occur in the RPC2_ReturnCode field of reply headers:
104Values of 0 and below in those fields are reserved for RPC stub use.
105Codes greater than 0 are assigned and managed by subsystems.
106
107There are three levels of errors: Warning, Error, and Fatal Error.
108RPC2_SUCCESS > RPC2_WLIMIT > warning codes > RPC2_ELIMIT > error codes
109> RPC2_FLIMIT > fatal error codes
110
111The semantics of these codes are:
112
113RPC2_SUCCESS: Everything was perfect.
114
115Warning: Advisory information.
116
117Error: Something went wrong, but the connection (if any) is
118 still usable.
119
120Fatal: The connection (if any) has been marked unusable.
121
122Note that the routine RPC2_ErrorMsg() will translate return codes into
123printable strings. */
124
125#define RPC2_SUCCESS 0
126
127#define RPC2_WLIMIT -1
128#define RPC2_ELIMIT -1000
129#define RPC2_FLIMIT -2000
130
131/*
132Warnings
133*/
134#define RPC2_OLDVERSION RPC2_WLIMIT - 1
135#define RPC2_INVALIDOPCODE RPC2_WLIMIT - 2
136/* Never returned by RPC2 itself; Used by higher levels, such as rp2gen */
137#define RPC2_BADDATA RPC2_WLIMIT - 3
138/* Never used by RPC2 itself; used by rp2gen or higher levels to indicate bogus
139 * data */
140#define RPC2_NOGREEDY RPC2_WLIMIT - 4
141/* ioctl to allocate plenty of socket buffer space
142 failed; packet losses may be high especially on
143 bulk transfers */
144#define RPC2_ABANDONED RPC2_WLIMIT - 5
145
146/*
147Errors
148*/
149#define RPC2_CONNBUSY RPC2_ELIMIT - 1
150#define RPC2_SEFAIL1 RPC2_ELIMIT - 2
151#define RPC2_TOOLONG RPC2_ELIMIT - 3
152#define RPC2_NOMGROUP RPC2_ELIMIT - 4
153#define RPC2_MGRPBUSY RPC2_ELIMIT - 5
154#define RPC2_NOTGROUPMEMBER RPC2_ELIMIT - 6
155#define RPC2_DUPLICATEMEMBER RPC2_ELIMIT - 7
156#define RPC2_BADMGROUP RPC2_ELIMIT - 8
157
158/*
159Fatal Errors
160*/
161#define RPC2_FAIL RPC2_FLIMIT - 1
162#define RPC2_NOCONNECTION RPC2_FLIMIT - 2
163#define RPC2_TIMEOUT RPC2_FLIMIT - 3
164#define RPC2_NOBINDING RPC2_FLIMIT - 4
165#define RPC2_DUPLICATESERVER RPC2_FLIMIT - 5
166#define RPC2_NOTWORKER RPC2_FLIMIT - 6
167#define RPC2_NOTCLIENT RPC2_FLIMIT - 7
168#define RPC2_WRONGVERSION RPC2_FLIMIT - 8
169#define RPC2_NOTAUTHENTICATED RPC2_FLIMIT - 9
170#define RPC2_CLOSECONNECTION RPC2_FLIMIT - 10
171#define RPC2_BADFILTER RPC2_FLIMIT - 11
172#define RPC2_LWPNOTINIT RPC2_FLIMIT - 12
173#define RPC2_BADSERVER RPC2_FLIMIT - 13
174#define RPC2_SEFAIL2 RPC2_FLIMIT - 14
175#define RPC2_DEAD RPC2_FLIMIT - 15
176#define RPC2_NAKED RPC2_FLIMIT - 16
177#define RPC2_SEFAIL3 RPC2_FLIMIT - 17 /* More error codes for side effects */
178#define RPC2_SEFAIL4 RPC2_FLIMIT - 18 /* More error codes for side effects */
179
180#define MGRPERROR(code) \
181 (code == RPC2_NOMGROUP || code == RPC2_MGRPBUSY || \
182 code == RPC2_NOTGROUPMEMBER || code == RPC2_DUPLICATEMEMBER || \
183 code == RPC2_BADMGROUP)
184
185/*
186Universal opcode values: opcode values equal to or less than 0 are reserved.
187Values greater than 0
188are usable by mutual agreement between clients and servers.
189*/
190#define RPC2_INIT1OPENKIMONO \
191 -2 /* Begin a new connection with security level RPC2_OPENKIMONO */
192#define RPC2_INIT1AUTHONLY \
193 -3 /* Begin a new connection with security level RPC2_AUTHONLY */
194#define RPC2_INIT1HEADERSONLY \
195 -4 /* Begin a new connection with security level RPC2_HEADERSONLY */
196#define RPC2_INIT1SECURE \
197 -5 /* Begin a new connection with security level RPC2_SECURE */
198#define RPC2_LASTACK -6 /* Packet that acknowledges a reply */
199#define RPC2_REPLY -8 /* Reply packet */
200#define RPC2_INIT2 -10 /* Phase 2 of bind handshake */
201#define RPC2_INIT3 -11 /* Phase 3 of bind handshake */
202#define RPC2_INIT4 -12 /* Phase 4 of bind handshake */
203#define RPC2_NEWCONNECTION \
204 -13 /* opcode of fake request generated by RPC2_GetRequest() on new \
205 connection */
206#define RPC2_BUSY -14 /* keep alive packet */
207#define RPC2_INITMULTICAST -15 /* Establish a multicast connection */
208
209/****
210System Limits
211****/
212
213/* size of the largest acceptable packet buffer in bytes
214 * (includes prefix and header) */
215#define RPC2_MAXPACKETSIZE 4500
216
217/* Host, Mgrp, Port and Subsys Representations */
219typedef enum
225} HostTag;
227typedef enum
230 RPC2_PORTBYNAME = 64,
232} PortTag;
234typedef enum
239} SubsysTag;
241typedef enum
245 RPC2_MGRPBYNAME = 137,
247} MgrpTag;
248
249/*
250Global variables for debugging:
251
252RPC2_DebugLevel controls the level of debugging output produced on stdout.
253A value of 0 turns off the output altogether; values of 1, 10, and 100
254are currently meaningful.
255The default value of this variable is 0.
256
257RPC2_Perror controls the printing of Unix error messages on stdout.
258A value of 1 turns on the printing, while 0 turns it off. The default value for
259this variable is 1.
260
261RPC2_Trace controls the tracing of RPC calls, packet transmissions and packet
262reception. Set it to 1
263for tracing. Set to zero for stopping tracing. The internal circular trace
264buffer can be printed out
265by calling RPC2_DumpTrace().
266
267*/
268
269extern long RPC2_DebugLevel;
270extern long RPC2_Perror;
271extern long RPC2_Trace;
272
273/* Misc. global variables
274 *
275 * RPC2_strict_ip_matching enables stricter matching of incoming packets on
276 * sender ip/port addresses. When this is enabled, multihomed or masqueraded
277 * hosts will get rejected when they send their packet from the wrong IP
278 * address. But connections are less likely to get spoofed.
279 */
280extern long RPC2_strict_ip_matching;
281
282/* The application can request a preferred minimal encryption key length
283 * The value is in bytes.
284 *
285 * AES_CCM uses three bytes of salt + AES key length, so useful values would be,
286 * 19 (128-bit AES key), 27 (192-bit AES key), or 35 (256-bit AES key).
287 *
288 * You can also set the environment variable 'RPC2_KEYSIZE', which is evaluated
289 * when RPC2_Init() is called, the environment variable can be set either in
290 * bytes or in bits. (19/152, 27/216, 35/280)
291 */
292extern size_t RPC2_Preferred_Keysize;
293extern int RPC2_secure_only;
294
295/*
296************************* Data Types known to RPGen ***********************
298typedef int32_t RPC2_Integer; /* 32-bit, 2's complement representation. On
299 other machines, an explicit conversion may
300 be needed. */
301typedef uint32_t RPC2_Unsigned; /* 32-bits.*/
303typedef uint8_t RPC2_Byte; /*A single 8-bit byte.*/
305typedef double RPC2_Double; /*A single 64-bit float.*/
307typedef RPC2_Byte *RPC2_ByteSeq;
308/* A contiguous sequence of bytes. In the C implementation this is a
309pointer. RPC2Gen knows how to allocate and transform the pointer
310values on transmission. Beware if you are not dealing via RPC2Gen.
311May be differently represented in other languages. */
313typedef RPC2_ByteSeq RPC2_String; /*no nulls except last byte*/
314/* A null-terminated sequence of characters. Identical to the C
315language string definition. */
317typedef struct {
318 RPC2_Unsigned SeqLen; /*length of SeqBody*/
319 RPC2_ByteSeq SeqBody; /*no restrictions on contents*/
321/*
322A means of transmitting binary data.
323*/
325typedef struct {
326 RPC2_Unsigned MaxSeqLen; /*max size of buffer represented by SeqBody*/
327 RPC2_Unsigned SeqLen; /*number of interesting bytes in SeqBody*/
328 RPC2_ByteSeq SeqBody; /*No restrictions on contents*/
330
331/* RPC2_BoundedBS is intended to allow you to remotely play the game
332that C programmers play all the time: allocate a large buffer, fill in
333some bytes, then call a procedure which takes this buffer as a
334parameter and replaces its contents by a possibly longer sequence of
335bytes. Example: strcat(). */
338/*
339Keys used for encryption are fixed length byte sequences
340*/
341
342/*********************************
343 * Data Types used only in runtime calls
344 *********************************/
346typedef RPC2_Integer RPC2_Handle; /* NOT a small integer!!! */
347
348/* Values for the Tag field of the following structures are defined above */
349typedef struct {
350 HostTag Tag;
351 union {
353 *AddrInfo; /* includes sockaddr, which includes port */
354 struct in_addr InetAddress; /* NOTE: in network order, not host order */
355 char Name[64]; /* minimum length for use with domain names */
356 } Value;
359typedef struct {
360 PortTag Tag;
361 union {
362 uint16_t InetPortNumber; /* NOTE: in network order, not host order */
363 char Name[20]; /* this is a pretty arbitrary length */
364 } Value;
367typedef struct {
369 union {
371 char Name[20]; /* this is a pretty arbitrary length */
372 } Value;
375typedef struct {
376 MgrpTag Tag;
377 union {
379 *AddrInfo; /* includes sockaddr, which includes port */
380 struct in_addr InetAddress; /* NOTE: in network order, not host order */
381 char Name[64]; /* minimum length for use with domain names */
382 } Value;
385typedef struct /* data structure filled by RPC2_GetPeerInfo() call */
387 RPC2_HostIdent RemoteHost;
388 RPC2_PortIdent RemotePort;
389 RPC2_SubsysIdent RemoteSubsys;
391 RPC2_Integer SecurityLevel;
392 RPC2_Integer EncryptionType;
394 RPC2_EncryptionKey SessionKey;
396
397/* Basic data structure for RPC2's internal doubly linked lists */
400 long MagicNumber; /* unique for object type; NEVER altered */
401 struct rpc2_LinkEntry **Queue; /* pointer to the queue this packet is on */
402};
403
404/* The RPC2_PacketBuffer definition below deals with both requests and
405replies. The runtime system provides efficient buffer storage
406management routines --- use them! */
407typedef struct RPC2_PacketBuffer {
408 /*
409 * NOTE: Prefix is only used by the runtime system on the local machine.
410 * Neither clients nor servers ever deal with it. It is never transmitted.
411 */
413 struct rpc2_LinkEntry LE;
415 long BufferSize; /* Set at malloc() time; size of
416 entire packet, including prefix. */
417 long LengthOfPacket; /* size of data actually
418 transmitted, header+body */
419 long File[3];
420 long Line;
421
422 /* these fields are set when we receive the packet. */
425 char oldhostandport[84]; /* padding to keep the userspace interface
426 mostly identical (on a 32-bit machine..)*/
427 struct timeval RecvStamp;
428 } Prefix;
429
430 /*
431 The transmitted packet begins here.
432 */
433 struct RPC2_PacketHeader {
434 /* The first four fields are never encrypted */
435 RPC2_Integer ProtoVersion; /* Set by runtime system */
436 RPC2_Integer RemoteHandle; /* Set by runtime system; -1 indicates
437 unencrypted error packet */
438 RPC2_Integer LocalHandle; /* Set by runtime system */
439 RPC2_Integer Flags; /* Used by runtime system only. First byte
440 reserved for side effect use. Second byte
441 reserved for indicating color (see libfail
442 documentation). Last two bytes reserved for
443 RPC2 use. */
444
445 /* Everything below here can be encrypted */
446 RPC2_Unsigned BodyLength; /* of the portion after the header. Set
447 by client.*/
448 RPC2_Unsigned SeqNumber; /* unique identifier for this message on
449 this connection; set by runtime
450 system; odd on packets from client to
451 server; even on packets from server to
452 client */
453 RPC2_Integer Opcode; /* Values greater than 0 are
454 subsystem-specific: set by client.
455 Values less than 0 reserved: set by
456 runtime system. Type of packet
457 determined by Opcode value: > 0 ==>
458 request packet. Values of RPC2_REPLY
459 ==> reply packet, RPC2_ACK ==> ack
460 packet, and so on */
461 RPC2_Unsigned SEFlags; /* Bits for use by side effect routines */
462 RPC2_Unsigned SEDataOffset; /* Offset of piggy-backed side effect
463 data, from the start of Body */
464 RPC2_Unsigned SubsysId; /* Subsystem identifier. Filled by runtime
465 system. */
466 RPC2_Integer ReturnCode; /* Set by server on replies; meaningless
467 on request packets*/
468 RPC2_Unsigned Lamport; /* For distributed clock mechanism */
469 RPC2_Integer Uniquefier; /* Used only in Init1 packets; truly
470 unique random number */
471 RPC2_Unsigned TimeStamp; /* Used for rpc timing. */
472 RPC2_Integer BindTime; /* Used to send the bind time to server.
473 Temporary, i hope. */
474 } Header;
476 RPC2_Byte Body[1]; /* Arbitrary length body. For requests: IN and INOUT
477 parameters; For replies: OUT and INOUT parameters;
478 Header.BodyLength gives the length of this field */
479} RPC2_PacketBuffer; /* The second and third fields actually get sent over
480 the wire */
481
482/* Meaning of Flags field in RPC2 packet header.
483 * First (leftmost) byte of Flags field is reserved for use by side effect
484 * routines. This is in addition to the SEFlags field. Flags is not encrypted,
485 * but SEFLAGS is. Second byte of Flags field is reserved for indicating
486 * packet color by libfail. Third and fourth bytes are used as genuine RPC2
487 * flags */
488#define RPC2_RETRY 0x01 /* set by runtime system */
489#define RPC2_ENCRYPTED 0x02 /* set by runtime system */
490/* RPC2_MULTICAST 0x04 Old multicast flag */
491/* RPC2SEC_CAPABLE 0x08 Old rpc2sec flag */
492#define RPC2SEC_CAPABLE 0x10 /* set on Init1 packet by new rpc2sec stack */
493
494/* Format of filter used in RPC2_GetRequest */
496enum E1
498 ANY = 12,
499 ONECONN = 37,
502enum E2
504 OLD = 27,
505 NEW = 38,
507};
509typedef struct {
510 enum E1 FromWhom;
511 enum E2 OldOrNew;
512 union {
513 RPC2_Handle WhichConn; /* if FromWhom == ONECONN */
514 long SubsysId; /* if FromWhom == ONESUBSYS */
515 } ConnOrSubsys;
516} RPC2_RequestFilter; /* Type of Filter parameter in RPC2_GetRequest() */
517
518/*
519The following data structure is the body of the packet synthesised by the
520runtime system on a new connection, and returned as the result of an
521RPC2_GetRequest().
523typedef struct {
524 RPC2_Integer SideEffectType;
525 RPC2_Integer SecurityLevel;
526 RPC2_Integer EncryptionType;
527 RPC2_Integer AuthenticationType;
528 RPC2_Unsigned ClientIdent_SeqLen;
529 RPC2_Unsigned ClientIdent_SeqBody;
531
532/* Structure for passing various initialization options to RPC2_Init() */
533typedef struct {
534 RPC2_Byte Flags;
537#define RPC2_OPTION_IPV6 0x1
538#define RPC2_OPTION_VERBOSE_INIT 0x2
539
540/* Structure for passing parameters to RPC2_NewBinding() and its multi clone */
542typedef struct {
543 RPC2_Integer SecurityLevel;
544 RPC2_Integer EncryptionType;
545 RPC2_EncryptionKey *SharedSecret;
546 RPC2_Integer AuthenticationType;
547 RPC2_CountedBS *ClientIdent;
548 RPC2_Integer SideEffectType;
549 RPC2_Integer Color;
551
552/* enums used both in original RPC and for MultiRPC (was in rp2.h) */
554typedef enum
559 RP2_DUMP = 3,
562typedef enum
568 C_END = 4,
570} MODE;
572typedef enum
583 RPC2_ENUM_TAG = 9,
585} TYPE_TAG;
586
587/* struct for MakeMulti argument packing and unpacking */
589typedef struct arg {
590 MODE mode; /* IN, IN_OUT, OUT, NO_MODE */
591 TYPE_TAG type; /* RPC2 type of argument */
592 int size; /* NOTE: for structures, this is */
593 /* REAL size, not packed size */
594 struct arg *field; /* nested for structures only */
595 int bound; /* used for byte arrays only */
596 void (*startlog)(long); /* used for stub logging */
597 void (*endlog)(long, RPC2_Integer, RPC2_Handle *,
598 RPC2_Integer *); /* used for stub logging */
599} ARG;
600
601/* Structure for passing multicast information */
602typedef struct {
603 RPC2_Handle Mgroup; /* Multicast group handle*/
604 RPC2_Integer ExpandHandle; /* flag indicating whether Mgroup handle should
605 be expanded or not */
606 RPC2_Integer StraySeen; /* on output, total number of stray responses */
607 RPC2_Integer StrayLen; /* size of array StraySites[]; */
608 RPC2_HostIdent *StraySites; /* on output, stray hosts that responded; some
609 hosts are lost if StraySeen > StrayLen */
612#define RPC2_MAXLOGLENGTH 32
613#define RPC2_MAXQUANTUM ((unsigned)-1)
614
615/*
616 * Information is exported via a log consisting of timestamped
617 * variable-length records. The log entries reflect either
618 * static estimates or actual measurements of the network. All
619 * connections to a service are coalesced in one log, but the
620 * entries contain the connection ID so they may be demultiplexed
621 * if desired.
622 */
623typedef enum
628} NetLogTag;
630typedef enum
636typedef struct {
637 struct timeval TimeStamp; /* time of log entry */
638 NetLogTag Tag; /* what kind of entry am I? */
639 union {
640 struct Measured_NLE /* a measurement */
642 RPC2_Handle Conn; /* connection measured */
643 RPC2_Unsigned Bytes; /* data bytes involved */
644 RPC2_Unsigned ElapsedTime; /* in msec */
645 } Measured; /* RPC and SFTP use this */
646
647 struct Static_NLE /* a static estimate */
649 RPC2_Unsigned Bandwidth; /* in Bytes/second */
650 } /* latency, cost, ... */
651 Static;
652 } Value;
655typedef struct {
656 RPC2_Unsigned Quantum; /* length of measurements, in msec */
657 RPC2_Unsigned NumEntries; /* number of entries requested */
658 RPC2_Unsigned ValidEntries; /* number of entries returned */
659 RPC2_NetLogEntry *Entries; /* preallocated storage for entries */
661
662/* STUB predefined struct */
663typedef struct {
665 RPC2_Integer countent;
666 RPC2_Integer countexit;
669 RPC2_Integer counttime;
672typedef struct {
674 RPC2_Integer countent;
675 RPC2_Integer countexit;
678 RPC2_Integer counttime;
679 RPC2_Integer counthost;
682typedef struct {
683 RPC2_Integer opengate;
685 RPC2_Integer tusec;
687
688/*
689RPC2 runtime routines:
690*/
691#include <rpc2/multi.h>
692#include <rpc2/se.h>
693
694extern long RPC2_Init(const char *VersionId, RPC2_Options *Options,
695 RPC2_PortIdent *PortList, long RetryCount,
696 struct timeval *KeepAliveInterval);
697void RPC2_SetLog(FILE *, int);
698extern long RPC2_Export(RPC2_SubsysIdent *Subsys);
699extern long RPC2_DeExport(RPC2_SubsysIdent *Subsys);
700#ifndef NONDEBUG
701#define RPC2_AllocBuffer(x, y) \
702 (rpc2_AllocBuffer((long)(x), y, __FILE__, (long)__LINE__))
703#else
704#define RPC2_AllocBuffer(x, y) (rpc2_AllocBuffer((long)(x), y, 0, (long)0))
705#endif /* NONDEBUG */
706extern long rpc2_AllocBuffer(long MinBodySize, RPC2_PacketBuffer **BufferPtr,
707 const char *SrcFile, long SrcLine);
708extern long RPC2_FreeBuffer(RPC2_PacketBuffer **Buffer);
709extern long RPC2_SendResponse(RPC2_Handle ConnHandle, RPC2_PacketBuffer *Reply);
711typedef long RPC2_GetKeys_func(RPC2_Integer *AuthenticationType,
712 RPC2_CountedBS *cident,
713 RPC2_EncryptionKey SharedSecret,
715typedef long RPC2_AuthFail_func(RPC2_Integer AuthenticationType,
716 RPC2_CountedBS *cident,
717 RPC2_Integer EncryptionType,
718 RPC2_HostIdent *PeerHost,
719 RPC2_PortIdent *PeerPort);
721extern long RPC2_GetRequest(RPC2_RequestFilter *Filter, RPC2_Handle *ConnHandle,
722 RPC2_PacketBuffer **Request,
723 struct timeval *Patience, RPC2_GetKeys_func *,
724 long EncryptionTypeMask, RPC2_AuthFail_func *);
725
726extern long RPC2_MakeRPC(RPC2_Handle ConnHandle, RPC2_PacketBuffer *Request,
728 struct timeval *Patience, long EnqueueRequest);
730typedef long RPC2_UnpackMulti_func(int HowMany, RPC2_Handle ConnHandleList[],
732 long errcode, long idx);
734extern long RPC2_MultiRPC(int HowMany, RPC2_Handle ConnHandleList[],
735 RPC2_Integer RCList[], RPC2_Multicast *MCast,
738 struct timeval *BreathOfLife);
740extern long RPC2_NewBinding(RPC2_HostIdent *Host, RPC2_PortIdent *Port,
741 RPC2_SubsysIdent *Subsys, RPC2_BindParms *BParms,
742 RPC2_Handle *ConnHandle);
744extern long RPC2_CheckSideEffect(RPC2_Handle ConnHandle, SE_Descriptor *SDesc,
745 long Flags);
746extern long RPC2_Unbind(RPC2_Handle ConnHandle);
747extern long RPC2_GetPrivatePointer(RPC2_Handle WhichConn, char **PrivatePtr);
748extern long RPC2_SetPrivatePointer(RPC2_Handle WhichConn, char *PrivatePtr);
750extern long RPC2_GetSEPointer(RPC2_Handle WhichConn, struct SFTP_Entry **SEPtr);
751extern long RPC2_SetSEPointer(RPC2_Handle WhichConn, struct SFTP_Entry *SEPtr);
752extern long RPC2_GetPeerInfo(RPC2_Handle WhichConn, RPC2_PeerInfo *PeerInfo);
753extern char *RPC2_ErrorMsg(long rc);
754extern long RPC2_DumpTrace(FILE *OutFile, long HowMany);
755extern long RPC2_DumpState(FILE *OutFile, long Verbosity);
756extern long RPC2_InitTraceBuffer(long HowMany);
757extern long RPC2_LamportTime();
758extern long RPC2_Enable(RPC2_Handle ConnHandle);
759extern long
760RPC2_CreateMgrp(RPC2_Handle *MgroupHandle, RPC2_McastIdent *MulticastHost,
761 RPC2_PortIdent *MulticastPort, RPC2_SubsysIdent *Subsys,
762 RPC2_Integer SecurityLevel, RPC2_EncryptionKey SessionKey,
763 RPC2_Integer EncryptionType, long SideEffectType);
764extern long RPC2_AddToMgrp(RPC2_Handle MgroupHandle, RPC2_Handle ConnHandle);
765extern long RPC2_RemoveFromMgrp(RPC2_Handle MgroupHandle,
766 RPC2_Handle ConnHandle);
767extern long RPC2_DeleteMgrp(RPC2_Handle MgroupHandle);
768extern long MRPC_MakeMulti(int ServerOp, ARG ArgTypes[], RPC2_Integer HowMany,
769 RPC2_Handle CIDList[], RPC2_Integer RCList[],
771 struct timeval *Timeout, ...);
772
773extern long RPC2_SetColor(RPC2_Handle ConnHandle, RPC2_Integer Color);
774extern long RPC2_GetColor(RPC2_Handle ConnHandle, RPC2_Integer *Color);
775extern long RPC2_GetPeerLiveness(RPC2_Handle ConnHandle, struct timeval *Time,
776 struct timeval *SETime);
777extern long RPC2_GetNetInfo(RPC2_Handle ConnHandle, RPC2_NetLog *RPCLog,
778 RPC2_NetLog *SELog);
779extern long RPC2_PutNetInfo(RPC2_Handle ConnHandle, RPC2_NetLog *RPCLog,
780 RPC2_NetLog *SELog);
781extern long RPC2_ClearNetInfo(RPC2_Handle ConnHandle);
782extern long getsubsysbyname(char *subsysName);
783extern int RPC2_R2SError(int error);
784extern int RPC2_S2RError(int error);
785
786int RPC2_GetRTT(RPC2_Handle handle, unsigned long *RTT, unsigned long *RTTvar);
787int RPC2_GetBandwidth(RPC2_Handle handle, unsigned long *BWlow,
788 unsigned long *BWavg, unsigned long *BWhigh);
789int RPC2_GetLastObs(RPC2_Handle handle, struct timeval *tv);
790
791int RPC2_SetTimeout(RPC2_Handle whichConn, struct timeval timeout);
792
793int struct_len(ARG **a_types, PARM **args);
794
795/* These shouldn't really be here: they are internal RPC2 routines
796 But some applications (e.g. Coda auth server) use them */
798void rpc2_Encrypt(char *FromBuffer, char *ToBuffer, size_t HowManyBytes,
799 RPC2_EncryptionKey WhichKey, RPC2_Integer EncryptionType);
801void rpc2_Decrypt(char *FromBuffer, char *ToBuffer, size_t HowManyBytes,
802 RPC2_EncryptionKey WhichKey, RPC2_Integer EncryptionType);
803
804void rpc2_InitRandom(void);
805unsigned int rpc2_NextRandom(char *StatePtr);
806
807/* hack until we can do something more sophisticated. */
808extern long rpc2_Bandwidth;
809
810/* for multihomed servers */
811struct in_addr RPC2_setip(struct in_addr *ip); /* deprecated */
813
814/*------- Transmission Statistics -------------*/
815struct SStats {
816 unsigned long Total, /* PacketsSent */
817 Retries, /* PacketRetries */
818 Cancelled, /* Packet Retries Cancelled (heard from side effect) */
819 Multicasts, /* MulticastsSent */
820 Busies, /* BusiesSent */
821 Naks, /* NaksSent */
822 Bytes; /* BytesSent */
823};
825struct RStats {
826 unsigned long Total, /* PacketsRecvd */
827 Giant, /* GiantPacketsRecvd */
828 Replies, /* Replies */
829 Requests, /* Requests */
830 GoodReplies, /* GoodReplies */
831 GoodRequests, /* GoodRequests */
832 Multicasts, /* MulticastRequests */
833 GoodMulticasts, /* GoodMulticastRequests */
834 Busies, /* BusiesReceived */
835 GoodBusies, /* GoodBusies */
836 Bogus, /* BogusPackets */
837 Naks, /* NaksReceived */
838 Bytes; /* BytesReceived */
839};
840
841extern struct SStats rpc2_Sent;
842extern struct RStats rpc2_Recvd;
843extern struct SStats rpc2_MSent;
844extern struct RStats rpc2_MRecvd;
845
846extern int rpc2_43bsd; /* TRUE on 4.3BSD, FALSE on 4.2BSD */
847
848/* For debugging */
849extern FILE *rpc2_logfile;
850extern FILE *rpc2_tracefile;
851extern int RPC2_enableReaping;
852
853/* What port are we listening on. */
856
857/* Allocation/destruction counters */
867
868#endif /* _RPC2_ */
unsigned short uint16_t
Definition: coda.h:103
int int32_t
Definition: coda.h:104
unsigned int uint32_t
Definition: coda.h:105
unsigned char uint8_t
Definition: coda.h:101
size_t Bytes
Definition: codadump2tar.cc:149
int NumEntries
Definition: mklka.c:39
long RPC2_HandleResult_func(int HowMany, RPC2_Handle ConnList[], long offset, long rpcval,...)
Definition: multi.h:48
name
Definition: pwdtopdbtool.py:40
args
Definition: volusage.py:9
void rpc2_Decrypt(char *FromBuffer, char *ToBuffer, size_t HowManyBytes, RPC2_EncryptionKey WhichKey, RPC2_Integer EncryptionType)
long RPC2_SetSEPointer(RPC2_Handle WhichConn, struct SFTP_Entry *SEPtr)
RPC2_PortIdent rpc2_LocalPort
Definition: globals.c:60
int struct_len(ARG **a_types, PARM **args)
Definition: multi2.c:571
struct RPC2_PacketBuffer RPC2_PacketBuffer
long RPC2_AddToMgrp(RPC2_Handle MgroupHandle, RPC2_Handle ConnHandle)
#define RPC2_KEYSIZE
Definition: rpc2.h:98
long rpc2_SSCreationCount
Definition: globals.c:86
long rpc2_AllocBuffer(long MinBodySize, RPC2_PacketBuffer **BufferPtr, const char *SrcFile, long SrcLine)
void rpc2_Encrypt(char *FromBuffer, char *ToBuffer, size_t HowManyBytes, RPC2_EncryptionKey WhichKey, RPC2_Integer EncryptionType)
E1
Definition: rpc2.h:496
@ ONECONN
Definition: rpc2.h:498
@ ANY
Definition: rpc2.h:497
@ ONESUBSYS
Definition: rpc2.h:499
long rpc2_GCConns
Definition: rpc2.h:863
long rpc2_PBHoldCount
Definition: rpc2.h:864
long RPC2_GetNetInfo(RPC2_Handle ConnHandle, RPC2_NetLog *RPCLog, RPC2_NetLog *SELog)
long rpc2_HoldHWMark
Definition: rpc2.h:865
RPC2_HostIdent rpc2_LocalHost
long rpc2_PBLargeCreationCount
Definition: globals.c:82
int RPC2_R2SError(int error)
Definition: errors.c:25
long RPC2_InitSideEffect(RPC2_Handle ConnHandle, SE_Descriptor *SDesc)
long RPC2_SendResponse(RPC2_Handle ConnHandle, RPC2_PacketBuffer *Reply)
long RPC2_Trace
Definition: globals.c:53
long rpc2_PBCount
Definition: globals.c:83
long RPC2_DebugLevel
Definition: globals.c:53
int RPC2_secure_only
Definition: rpc2a.c:115
struct in_addr RPC2_setip(struct in_addr *ip)
Definition: rpc2b.c:200
void RPC2_SetLog(FILE *, int)
Definition: rpc2a.c:149
long rpc2_SLFreeCount
Definition: rpc2.h:860
long rpc2_FreeConns
Definition: rpc2.h:863
void RPC2_setbindaddr(RPC2_HostIdent *host)
Definition: rpc2b.c:211
char * RPC2_ErrorMsg(long rc)
Definition: rpc2b.c:414
long RPC2_PutNetInfo(RPC2_Handle ConnHandle, RPC2_NetLog *RPCLog, RPC2_NetLog *SELog)
double RPC2_Double
Definition: rpc2.h:304
struct RStats rpc2_MRecvd
Definition: globals.c:94
MgrpTag
Definition: rpc2.h:241
@ RPC2_MGRPBYNAME
Definition: rpc2.h:244
@ RPC2_MGRPBYINETADDR
Definition: rpc2.h:242
@ RPC2_DUMMYMGRP
Definition: rpc2.h:245
@ RPC2_MGRPBYADDRINFO
Definition: rpc2.h:243
struct SStats rpc2_MSent
Definition: globals.c:93
long RPC2_DeleteMgrp(RPC2_Handle MgroupHandle)
long RPC2_ClearNetInfo(RPC2_Handle ConnHandle)
long RPC2_Perror
Definition: globals.c:53
E2
Definition: rpc2.h:502
@ OLD
Definition: rpc2.h:503
@ OLDORNEW
Definition: rpc2.h:505
@ NEW
Definition: rpc2.h:504
RPC2_Byte RPC2_EncryptionKey[RPC2_KEYSIZE]
Definition: rpc2.h:336
PortTag
Definition: rpc2.h:227
@ RPC2_PORTBYINETNUMBER
Definition: rpc2.h:228
@ RPC2_PORTBYNAME
Definition: rpc2.h:229
@ RPC2_DUMMYPORT
Definition: rpc2.h:230
long rpc2_AllocConns
Definition: rpc2.h:863
long RPC2_MultiRPC(int HowMany, RPC2_Handle ConnHandleList[], RPC2_Integer RCList[], RPC2_Multicast *MCast, RPC2_PacketBuffer *Request, SE_Descriptor SDescList[], RPC2_UnpackMulti_func *, ARG_INFO *ArgInfo, struct timeval *BreathOfLife)
long rpc2_PBLargeFreeCount
Definition: rpc2.h:859
int RPC2_GetRTT(RPC2_Handle handle, unsigned long *RTT, unsigned long *RTTvar)
Definition: host.c:507
long RPC2_UnpackMulti_func(int HowMany, RPC2_Handle ConnHandleList[], ARG_INFO *ArgInfo, RPC2_PacketBuffer *Reply, long errcode, long idx)
Definition: rpc2.h:729
struct arg ARG
long RPC2_CreateMgrp(RPC2_Handle *MgroupHandle, RPC2_McastIdent *MulticastHost, RPC2_PortIdent *MulticastPort, RPC2_SubsysIdent *Subsys, RPC2_Integer SecurityLevel, RPC2_EncryptionKey SessionKey, RPC2_Integer EncryptionType, long SideEffectType)
RPC2_Byte * RPC2_ByteSeq
Definition: rpc2.h:306
int32_t RPC2_Integer
Definition: rpc2.h:297
long RPC2_Export(RPC2_SubsysIdent *Subsys)
long rpc2_PBMediumCreationCount
Definition: globals.c:81
SubsysTag
Definition: rpc2.h:234
@ RPC2_DUMMYSUBSYS
Definition: rpc2.h:237
@ RPC2_SUBSYSBYNAME
Definition: rpc2.h:236
@ RPC2_SUBSYSBYID
Definition: rpc2.h:235
long RPC2_NewBinding(RPC2_HostIdent *Host, RPC2_PortIdent *Port, RPC2_SubsysIdent *Subsys, RPC2_BindParms *BParms, RPC2_Handle *ConnHandle)
long RPC2_DumpState(FILE *OutFile, long Verbosity)
Definition: rpc2b.c:602
long rpc2_SSCount
Definition: rpc2.h:862
long RPC2_DeExport(RPC2_SubsysIdent *Subsys)
FILE * rpc2_tracefile
Definition: rpc2a.c:146
long rpc2_ConnCreationCount
Definition: globals.c:72
struct RStats rpc2_Recvd
Definition: globals.c:92
MODE
Definition: rpc2.h:562
@ C_END
Definition: rpc2.h:567
@ NO_MODE
Definition: rpc2.h:563
@ IN_OUT_MODE
Definition: rpc2.h:566
@ IN_MODE
Definition: rpc2.h:564
@ MAX_BOUND
Definition: rpc2.h:568
@ OUT_MODE
Definition: rpc2.h:565
int rpc2_43bsd
NetLogTag
Definition: rpc2.h:623
@ RPC2_UNSET_NLE
Definition: rpc2.h:624
@ RPC2_STATIC_NLE
Definition: rpc2.h:626
@ RPC2_MEASURED_NLE
Definition: rpc2.h:625
uint32_t RPC2_Unsigned
Definition: rpc2.h:300
long RPC2_Enable(RPC2_Handle ConnHandle)
Definition: rpc2b.c:668
long RPC2_GetPrivatePointer(RPC2_Handle WhichConn, char **PrivatePtr)
long MRPC_MakeMulti(int ServerOp, ARG ArgTypes[], RPC2_Integer HowMany, RPC2_Handle CIDList[], RPC2_Integer RCList[], RPC2_Multicast *MCast, RPC2_HandleResult_func *, struct timeval *Timeout,...)
Definition: multi2.c:97
long rpc2_Bandwidth
Definition: globals.c:69
long RPC2_InitTraceBuffer(long HowMany)
long rpc2_SSFreeCount
Definition: rpc2.h:862
long rpc2_PBMediumFreeCount
Definition: rpc2.h:858
RPC2_Integer RPC2_Handle
Definition: rpc2.h:345
long RPC2_MakeRPC(RPC2_Handle ConnHandle, RPC2_PacketBuffer *Request, SE_Descriptor *SDesc, RPC2_PacketBuffer **Reply, struct timeval *Patience, long EnqueueRequest)
Definition: rpc2a.c:549
long RPC2_Init(const char *VersionId, RPC2_Options *Options, RPC2_PortIdent *PortList, long RetryCount, struct timeval *KeepAliveInterval)
Definition: rpc2b.c:79
long RPC2_DumpTrace(FILE *OutFile, long HowMany)
long RPC2_AuthFail_func(RPC2_Integer AuthenticationType, RPC2_CountedBS *cident, RPC2_Integer EncryptionType, RPC2_HostIdent *PeerHost, RPC2_PortIdent *PeerPort)
Definition: rpc2.h:714
struct SStats rpc2_Sent
Definition: globals.c:91
long RPC2_GetPeerLiveness(RPC2_Handle ConnHandle, struct timeval *Time, struct timeval *SETime)
int RPC2_GetLastObs(RPC2_Handle handle, struct timeval *tv)
Definition: host.c:551
FILE * rpc2_logfile
Definition: rpc2a.c:145
long rpc2_ConnCount
Definition: rpc2.h:861
long RPC2_CheckSideEffect(RPC2_Handle ConnHandle, SE_Descriptor *SDesc, long Flags)
long rpc2_PBSmallCreationCount
Definition: globals.c:80
long rpc2_SLCreationCount
Definition: globals.c:77
long RPC2_LamportTime()
Definition: rpc2b.c:645
long rpc2_FreezeHWMark
Definition: globals.c:107
long RPC2_SetPrivatePointer(RPC2_Handle WhichConn, char *PrivatePtr)
long getsubsysbyname(char *subsysName)
WHO
Definition: rpc2.h:554
@ RP2_HELPER
Definition: rpc2.h:559
@ RP2_MULTI
Definition: rpc2.h:557
@ RP2_CLIENT
Definition: rpc2.h:555
@ RP2_DUMP
Definition: rpc2.h:558
@ RP2_SERVER
Definition: rpc2.h:556
long rpc2_ConnFreeCount
Definition: rpc2.h:861
long RPC2_GetSEPointer(RPC2_Handle WhichConn, struct SFTP_Entry **SEPtr)
long rpc2_Unbinds
Definition: globals.c:103
long RPC2_SetColor(RPC2_Handle ConnHandle, RPC2_Integer Color)
Definition: rpc2b.c:684
RPC2_ByteSeq RPC2_String
Definition: rpc2.h:312
long rpc2_PBFreezeCount
Definition: rpc2.h:864
int RPC2_SetTimeout(RPC2_Handle whichConn, struct timeval timeout)
Definition: packet.c:349
size_t RPC2_Preferred_Keysize
Definition: rpc2a.c:114
long RPC2_Unbind(RPC2_Handle ConnHandle)
Definition: rpc2a.c:1235
long RPC2_strict_ip_matching
long RPC2_GetKeys_func(RPC2_Integer *AuthenticationType, RPC2_CountedBS *cident, RPC2_EncryptionKey SharedSecret, RPC2_EncryptionKey sessionkey)
Definition: rpc2.h:710
void rpc2_InitRandom(void)
Definition: secure.c:100
NetLogEntryType
Definition: rpc2.h:630
@ SE_MEASUREMENT
Definition: rpc2.h:632
@ RPC2_MEASUREMENT
Definition: rpc2.h:631
TYPE_TAG
Definition: rpc2.h:572
@ RPC2_BOUNDEDBS_TAG
Definition: rpc2.h:578
@ RPC2_DOUBLE_TAG
Definition: rpc2.h:583
@ RPC2_COUNTEDBS_TAG
Definition: rpc2.h:577
@ RPC2_ENUM_TAG
Definition: rpc2.h:582
@ RPC2_STRUCT_TAG
Definition: rpc2.h:581
@ RPC2_STRING_TAG
Definition: rpc2.h:576
@ RPC2_ENCRYPTIONKEY_TAG
Definition: rpc2.h:580
@ RPC2_BYTE_TAG
Definition: rpc2.h:575
@ RPC2_BULKDESCRIPTOR_TAG
Definition: rpc2.h:579
@ RPC2_UNSIGNED_TAG
Definition: rpc2.h:574
@ RPC2_INTEGER_TAG
Definition: rpc2.h:573
long RPC2_GetColor(RPC2_Handle ConnHandle, RPC2_Integer *Color)
Definition: rpc2b.c:698
int RPC2_S2RError(int error)
Definition: errors.c:41
uint8_t RPC2_Byte
Definition: rpc2.h:302
long RPC2_GetPeerInfo(RPC2_Handle WhichConn, RPC2_PeerInfo *PeerInfo)
unsigned int rpc2_NextRandom(char *StatePtr)
Definition: secure.c:107
long RPC2_FreeBuffer(RPC2_PacketBuffer **Buffer)
Definition: test.c:171
long rpc2_PBSmallFreeCount
Definition: rpc2.h:857
long RPC2_RemoveFromMgrp(RPC2_Handle MgroupHandle, RPC2_Handle ConnHandle)
int RPC2_enableReaping
Definition: ct.c:63
HostTag
Definition: rpc2.h:219
@ RPC2_HOSTBYADDRINFO
Definition: rpc2.h:222
@ RPC2_HOSTBYINETADDR
Definition: rpc2.h:221
@ RPC2_DUMMYHOST
Definition: rpc2.h:223
@ RPC2_HOSTBYNAME
Definition: rpc2.h:220
long RPC2_GetRequest(RPC2_RequestFilter *Filter, RPC2_Handle *ConnHandle, RPC2_PacketBuffer **Request, struct timeval *Patience, RPC2_GetKeys_func *, long EncryptionTypeMask, RPC2_AuthFail_func *)
int RPC2_GetBandwidth(RPC2_Handle handle, unsigned long *BWlow, unsigned long *BWavg, unsigned long *BWhigh)
Definition: host.c:523
RPC2_SubsysIdent SubsysId
Definition: rpc2test.c:145
RPC2_Handle ConnHandleList[]
Definition: sftp6.c:82
SE_Descriptor * SDesc
Definition: sftp6.c:103
long rc
Definition: sftp6.c:107
SE_Descriptor SDescList[]
Definition: sftp6.c:83
RPC2_PacketBuffer * Reply
Definition: sftp6.c:104
PeerInfo Uniquefier
Definition: sftp6.c:138
PeerInfo RemoteSubsys Tag
Definition: sftp6.c:135
RPC2_PeerInfo * PeerInfo
Definition: sftp6.c:122
PeerInfo RemoteHandle
Definition: sftp6.c:136
Definition: rpc2.h:662
Definition: rpc2.h:671
Definition: rpc2.h:681
Definition: rpc2.h:541
Definition: rpc2.h:324
Definition: rpc2.h:316
Definition: rpc2.h:348
Definition: rpc2.h:374
Definition: rpc2.h:601
Definition: rpc2.h:635
Definition: rpc2.h:654
Definition: rpc2.h:522
Definition: rpc2.h:532
struct timeval RecvStamp
Definition: rpc2.h:426
char oldhostandport[84]
Definition: rpc2.h:424
struct rpc2_LinkEntry LE
Definition: rpc2.h:412
long File[3]
Definition: rpc2.h:418
struct RPC2_addrinfo * PeerAddr
Definition: rpc2.h:422
long LengthOfPacket
Definition: rpc2.h:416
long BufferSize
Definition: rpc2.h:414
struct security_association * sa
Definition: rpc2.h:423
RPC2_Integer RemoteHandle
Definition: rpc2.h:435
RPC2_Integer ReturnCode
Definition: rpc2.h:465
RPC2_Unsigned BodyLength
Definition: rpc2.h:445
RPC2_Unsigned Lamport
Definition: rpc2.h:467
RPC2_Integer BindTime
Definition: rpc2.h:471
RPC2_Integer LocalHandle
Definition: rpc2.h:437
RPC2_Integer Uniquefier
Definition: rpc2.h:468
RPC2_Integer Flags
Definition: rpc2.h:438
RPC2_Unsigned TimeStamp
Definition: rpc2.h:470
RPC2_Integer ProtoVersion
Definition: rpc2.h:434
RPC2_Unsigned SEFlags
Definition: rpc2.h:460
RPC2_Integer Opcode
Definition: rpc2.h:452
RPC2_Unsigned SEDataOffset
Definition: rpc2.h:461
RPC2_Unsigned SeqNumber
Definition: rpc2.h:447
RPC2_Unsigned SubsysId
Definition: rpc2.h:463
Definition: rpc2.h:406
struct RPC2_PacketBuffer::RPC2_PacketHeader Header
RPC2_Byte Body[1]
Definition: rpc2.h:475
struct RPC2_PacketBuffer::RPC2_PacketBufferPrefix Prefix
Definition: rpc2.h:385
Definition: rpc2.h:358
Definition: rpc2.h:508
Definition: rpc2.h:366
Definition: rpc2_addrinfo.h:28
Definition: rpc2.h:824
unsigned long GoodMulticasts
Definition: rpc2.h:832
unsigned long GoodRequests
Definition: rpc2.h:830
unsigned long Requests
Definition: rpc2.h:828
unsigned long GoodBusies
Definition: rpc2.h:834
unsigned long Total
Definition: rpc2.h:825
unsigned long Giant
Definition: rpc2.h:826
unsigned long Replies
Definition: rpc2.h:827
unsigned long Bytes
Definition: rpc2.h:837
unsigned long GoodReplies
Definition: rpc2.h:829
unsigned long Naks
Definition: rpc2.h:836
unsigned long Bogus
Definition: rpc2.h:835
unsigned long Busies
Definition: rpc2.h:833
unsigned long Multicasts
Definition: rpc2.h:831
Definition: se.h:148
Definition: sftp.h:201
Definition: rpc2.h:814
unsigned long Busies
Definition: rpc2.h:819
unsigned long Total
Definition: rpc2.h:815
unsigned long Cancelled
Definition: rpc2.h:817
unsigned long Retries
Definition: rpc2.h:816
unsigned long Naks
Definition: rpc2.h:820
unsigned long Bytes
Definition: rpc2.h:821
unsigned long Multicasts
Definition: rpc2.h:818
Definition: multi.h:76
Definition: rpc2.h:588
void(* startlog)(long)
Definition: rpc2.h:595
int size
Definition: rpc2.h:591
struct arg * field
Definition: rpc2.h:593
int bound
Definition: rpc2.h:594
TYPE_TAG type
Definition: rpc2.h:590
MODE mode
Definition: rpc2.h:589
void(* endlog)(long, RPC2_Integer, RPC2_Handle *, RPC2_Integer *)
Definition: rpc2.h:596
Definition: rpc2.h:397
struct rpc2_LinkEntry * Next
Definition: rpc2.h:398
long MagicNumber
Definition: rpc2.h:399
struct rpc2_LinkEntry * Prev
Definition: rpc2.h:398
struct rpc2_LinkEntry ** Queue
Definition: rpc2.h:400
Definition: secure.h:100
Definition: multi.h:54
Error error
Definition: vol-create.cc:87