xrootd
XProtocol.hh
Go to the documentation of this file.
1 #ifndef __XPROTOCOL_H
2 #define __XPROTOCOL_H
3 /******************************************************************************/
4 /* */
5 /* X P r o t o c o l . h h */
6 /* */
7 /* (c) 2012 by the Board of Trustees of the Leland Stanford, Jr., University */
8 /* All Rights Reserved */
9 /* Produced by Andrew Hanushevsky for Stanford University under contract */
10 /* DE-AC02-76-SFO0515 with the Department of Energy */
11 /* */
12 /* This file is part of the XRootD software suite. */
13 /* */
14 /* XRootD is free software: you can redistribute it and/or modify it under */
15 /* the terms of the GNU Lesser General Public License as published by the */
16 /* Free Software Foundation, either version 3 of the License, or (at your */
17 /* option) any later version. */
18 /* */
19 /* The XRootD protocol definition, documented in this file, is distributed */
20 /* under a modified BSD license and may be freely used to reimplement it. */
21 /* Any references to "source" in this license refers to this file or any */
22 /* other file that specifically contains the following license. */
23 /* */
24 /* Redistribution and use in source and binary forms, with or without */
25 /* modification, are permitted provided that the following conditions */
26 /* are met: */
27 /* */
28 /* 1. Redistributions of source code must retain the above copyright notice, */
29 /* this list of conditions and the following disclaimer. */
30 /* */
31 /* 2. Redistributions in binary form must reproduce the above copyright */
32 /* notice, this list of conditions and the following disclaimer in the */
33 /* documentation and/or other materials provided with the distribution. */
34 /* */
35 /* 3. Neither the name of the copyright holder nor the names of its */
36 /* contributors may be used to endorse or promote products derived from */
37 /* this software without specific prior written permission. */
38 /* */
39 /* 4. Derived software may not use the name XRootD or cmsd (regardless of */
40 /* capitilization) in association with the derived work if the protocol */
41 /* documented in this file is changed in any way. */
42 /* */
43 /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */
44 /* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */
45 /* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR */
46 /* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */
47 /* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
48 /* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
49 /* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, */
50 /* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY */
51 /* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
52 /* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE */
53 /******************************************************************************/
54 
55 //#ifndef __GNUC__
56 //#define __attribute__(x)
57 //#ifdef SUNCC
58 //#pragma pack(4)
59 //#endif
60 //#endif
61 
62 #ifdef __CINT__
63 #define __attribute__(x)
64 #endif
65 
66 // The following is the binary representation of the protocol version here.
67 // Protocol version is repesented as three base10 digits x.y.z with x having no
68 // upper limit (i.e. n.9.9 + 1 -> n+1.0.0). The kXR_PROTSIGNVERSION defines the
69 // protocol version where request signing became available.
70 //
71 #define kXR_PROTOCOLVERSION 0x00000400
72 #define kXR_PROTSIGNVERSION 0x00000310
73 #define kXR_PROTOCOLVSTRING "4.0.0"
74 
75 #include "XProtocol/XPtypes.hh"
76 
77 // KINDS of SERVERS
78 //
79 //
80 #define kXR_DataServer 1
81 #define kXR_LBalServer 0
82 
83 // The below are defined for protocol version 2.9.7 or higher
84 // These are the flag value in the kXR_protool response
85 //
86 #define kXR_isManager 0x00000002
87 #define kXR_isServer 0x00000001
88 #define kXR_attrMeta 0x00000100
89 #define kXR_attrProxy 0x00000200
90 #define kXR_attrSuper 0x00000400
91 #define kXR_attrVirtRdr 0x00000800
92 
93 #define kXR_maxReqRetry 10
94 
95 // Kind of error inside a XTNetFile's routine (temporary)
96 //
98  kGENERICERR = 0, // Generic error
99  kREAD, // Error while reading from stream
100  kWRITE, // Error while writing to stream
101  kREDIRCONNECT, // Error redirecting to a given host
102  kOK, // Everything seems ok
103  kNOMORESTREAMS // No more available stream IDs for
104  // async processing
105 };
106 
107 //______________________________________________
108 // PROTOCOL DEFINITION: CLIENT'S REQUESTS TYPES
109 //______________________________________________
110 //
112  kXR_auth = 3000,
113  kXR_query, // 3001
114  kXR_chmod, // 3002
115  kXR_close, // 3003
116  kXR_dirlist, // 3004
117  kXR_getfile, // 3005
118  kXR_protocol,// 3006
119  kXR_login, // 3007
120  kXR_mkdir, // 3008
121  kXR_mv, // 3009
122  kXR_open, // 3010
123  kXR_ping, // 3011
124  kXR_putfile, // 3012
125  kXR_read, // 3013
126  kXR_rm, // 3014
127  kXR_rmdir, // 3015
128  kXR_sync, // 3016
129  kXR_stat, // 3017
130  kXR_set, // 3018
131  kXR_write, // 3019
132  kXR_admin, // 3020
133  kXR_prepare, // 3021
134  kXR_statx, // 3022
135  kXR_endsess, // 3023
136  kXR_bind, // 3024
137  kXR_readv, // 3025
138  kXR_verifyw, // 3026
139  kXR_locate, // 3027
140  kXR_truncate,// 3028
141  kXR_sigver, // 3029
142  kXR_decrypt, // 3030
143  kXR_writev, // 3031
144  kXR_REQFENCE // Always last valid request code +1
145 };
146 
147 // OPEN MODE FOR A REMOTE FILE
149  kXR_ur = 0x100,
150  kXR_uw = 0x080,
151  kXR_ux = 0x040,
152  kXR_gr = 0x020,
153  kXR_gw = 0x010,
154  kXR_gx = 0x008,
155  kXR_or = 0x004,
156  kXR_ow = 0x002,
157  kXR_ox = 0x001
158 };
159 
163 };
164 
165 // this is a bitmask
175 };
176 
177 // this is a bitmask
182 };
183 
184 // this is a single number that goes into capver as the version
185 //
187  kXR_ver000 = 0, // Old clients predating history
188  kXR_ver001 = 1, // Generally implemented 2005 protocol
189  kXR_ver002 = 2, // Same as 1 but adds asyncresp recognition
190  kXR_ver003 = 3, // The 2011-2012 rewritten client
191  kXR_ver004 = 4 // The 2016 sign-capable client
192 };
193 
196 };
197 
199  kXR_file = 0,
200  kXR_xset = 1,
208 };
209 
213 };
214 
216  kXR_compress = 1, // also locate (return unique hosts)
219  kXR_new = 8,
222  kXR_async = 64,
223  kXR_refresh = 128, // also locate
224  kXR_mkpath = 256,
225  kXR_prefname = 256, // only locate
227  kXR_retstat = 1024,
228  kXR_replica = 2048,
229  kXR_posc = 4096,
230  kXR_nowait = 8192, // also locate
231  kXR_seqio =16384,
233 };
234 
236  kXR_secreqs = 1 // Return security requirements
237 };
238 
251 };
252 
256 };
257 
261 };
262 
268  kXR_wmode = 16,
269  kXR_coloc = 32,
270  kXR_fresh = 64,
271  kXR_usetcp = 128,
272 
273  kXR_evict = 0x0001 // optionsX: file no longer useful
274 };
275 
276 // Version used for kXR_decrypt and kXR_sigver and is set in
277 // Set in SigverRequest::version, DecryptRequest::version and
278 // ServerResponseReqs_Protocol::secver
279 #define kXR_secver_0 0
280 
281 // Flags for kXR_decrypt and kXR_sigver
282 enum XSecFlags {
283  kXR_nodata = 1 // Request payload was not hashed or encrypted
284 };
285 
286 // Cryptography used for kXR_sigver SigverRequest::crypto
288  kXR_SHA256 = 0x01, // Hash used
289  kXR_HashMask = 0x0f, // Mak to extract the hash type
290  kXR_rsaKey = 0x80 // The rsa key was used
291 };
292 
293 //_______________________________________________
294 // PROTOCOL DEFINITION: SERVER'S RESPONSES TYPES
295 //_______________________________________________
296 //
298  kXR_ok = 0,
299  kXR_oksofar = 4000,
307 };
308 
309 //_______________________________________________
310 // PROTOCOL DEFINITION: SERVER"S ATTN CODES
311 //_______________________________________________
312 
314  kXR_asyncab = 5000,
323 };
324 
325 //_______________________________________________
326 // PROTOCOL DEFINITION: SERVER'S ERROR CODES
327 //_______________________________________________
328 //
331  kXR_ArgMissing, // 3001
332  kXR_ArgTooLong, // 3002
333  kXR_FileLocked, // 3003
335  kXR_FSError, // 3005
337  kXR_IOError, // 3007
338  kXR_NoMemory, // 3008
339  kXR_NoSpace, // 3009
341  kXR_NotFound, // 3011
344  kXR_noserver, // 3014
345  kXR_NotFile, // 3015
347  kXR_Cancelled, // 3017
348  kXR_ChkLenErr, // 3018
349  kXR_ChkSumErr, // 3019
350  kXR_inProgress, // 3020
351  kXR_overQuota, // 3021
352  kXR_SigVerErr, // 3022
353  kXR_DecryptErr, // 3023
354  kXR_Overloaded, // 3024
355  kXR_fsReadOnly, // 3025
356  kXR_BadPayload, // 3026
359  kXR_noReplicas, // 3029
360  kXR_ERRFENCE, // Always last valid errcode + 1
362 };
363 
364 
365 //______________________________________________
366 // PROTOCOL DEFINITION: CLIENT'S REQUESTS STRUCTS
367 //______________________________________________
368 //
369 // We need to pack structures sent all over the net!
370 // __attribute__((packed)) assures no padding bytes.
371 //
372 // Nice bodies of the headers for the client requests.
373 // Note that the protocol specifies these values to be in network
374 // byte order when sent
375 //
376 // G.Ganis: use of flat structures to avoid packing options
377 
383 };
390 };
396 };
403 };
411 };
415  kXR_unt16 expectrid; // Request code of subsequent request
416  kXR_char version; // Security version being used (see enum XSecVersion)
417  kXR_char flags; // One or more flags defined in enum XSecFlags
420 };
427 };
433 };
441 };
448 };
455  kXR_char ability; // See XLoginAbility enum flags
456  kXR_char capver[1]; // See XLoginCapVer enum flags
459 };
467 };
474 };
482 };
483 
489 };
493  kXR_int32 clientpv; // 2.9.7 or higher
494  kXR_char flags; // 3.1.0 or higher
497 };
503  kXR_unt16 port; // 2.9.9 or higher
504  kXR_unt16 optionX; // Extended options
507 };
515 };
524 };
532 };
539 };
545 };
551 };
556  kXR_char modifier; // For security purposes, should be zero
558 };
562  kXR_unt16 expectrid; // Request code of subsequent request
563  kXR_char version; // Security version being used (see XSecVersion)
564  kXR_char flags; // One or more flags defined in enum (see XSecFlags)
565  kXR_unt64 seqno; // Monotonically increasing number (part of hash)
566  kXR_char crypto; // Cryptography used (see XSecCrypto)
569 };
577 };
584 };
592 };
601 };
605  kXR_char options; // See static const ints below
608 
609  static const kXR_int32 doSync = 0x01;
610 };
617  kXR_char vertype; // One of XVerifyType
619  kXR_int32 dlen; // Includes crc length
620 };
621 
627 };
628 
629 typedef union {
630  struct ClientRequestHdr header;
631  struct ClientAdminRequest admin;
632  struct ClientAuthRequest auth;
633  struct ClientBindRequest bind;
634  struct ClientChmodRequest chmod;
636  struct ClientDecryptRequest decrypt;
637  struct ClientDirlistRequest dirlist;
638  struct ClientEndsessRequest endsess;
639  struct ClientGetfileRequest getfile;
640  struct ClientLocateRequest locate;
641  struct ClientLoginRequest login;
643  struct ClientMvRequest mv;
645  struct ClientPingRequest ping;
646  struct ClientPrepareRequest prepare;
647  struct ClientProtocolRequest protocol;
648  struct ClientPutfileRequest putfile;
649  struct ClientQueryRequest query;
652  struct ClientRmRequest rm;
654  struct ClientSetRequest set;
655  struct ClientSigverRequest sigver;
657  struct ClientSyncRequest sync;
661 } ClientRequest;
662 
663 typedef union {
664  struct ClientRequestHdr header;
665  struct ClientDecryptRequest decrypt;
666  struct ClientSigverRequest sigver;
668 
673 };
674 
675 struct read_args {
678  // his struct is followed by an array of readahead_list
679 };
680 
681 // New additions are placed in a specia namespace to avoid conflicts
682 //
683 namespace XrdProto
684 {
685 struct read_list {
689 };
690 
691 struct write_list {
695 };
696 }
697 
698 //_____________________________________________________________________
699 // PROTOCOL DEFINITION: SERVER'S RESPONSE
700 //_____________________________________________________________________
701 //
702 
703 // Nice header for the server response.
704 // Note that the protocol specifies these values to be in network
705 // byte order when sent
706 //
707 // G.Ganis: The following structures never need padding bytes:
708 // no need of packing options
709 
714 };
715 
716 // Body for the kXR_bind response... useful
719 };
720 
721 // Body for the kXR_open response... useful
724  kXR_int32 cpsize; // cpsize & cptype returned if kXR_compress *or*
725  kXR_char cptype[4]; // kXR_retstat is specified
726 }; // info will follow if kXR_retstat is specified
727 
728 // The following information is returned in the response body when kXR_secreqs
729 // is set in ClientProtocolRequest::flags. Note that the size of secvec is
730 // defined by secvsz and will not be present when secvsz == 0.
732  kXR_char reqindx; // Request index
733  kXR_char reqsreq; // Request signing requirement
734 };
735 
737  kXR_char theTag; // Always the character 'S' to identify struct
738  kXR_char rsvd; // Reserved for the future (always 0 for now)
739  kXR_char secver; // Security version
740  kXR_char secopt; // Security options
741  kXR_char seclvl; // Security level when secvsz == 0
742  kXR_char secvsz; // Number of items in secvec (i.e. its length/2)
744 };
745 
746 // Options reflected in protocol response ServerResponseReqs_Protocol::secopt
747 //
748 #define kXR_secOData 0x01
749 #define kXR_secOFrce 0x02
750 
751 // Security level definitions (these are predefined but can be over-ridden)
752 //
753 #define kXR_secNone 0
754 #define kXR_secCompatible 1
755 #define kXR_secStandard 2
756 #define kXR_secIntense 3
757 #define kXR_secPedantic 4
758 
759 // Requirements one of which set in each ServerResponseReqs_Protocol::secvec
760 //
761 #define kXR_signIgnore 0
762 #define kXR_signLikely 1
763 #define kXR_signNeeded 2
764 
765 // Body for the kXR_protocol response... useful
769  ServerResponseReqs_Protocol secreq; // Only for V3.1.0+ && if requested
770 };
771 
772 // Handy definition of the size of the protocol response when the security
773 // information is not present.
774 //
775 #define kXR_ShortProtRespLen sizeof(ServerResponseBody_Protocol)-\
776  sizeof(ServerResponseReqs_Protocol)
777 
780  kXR_char sec[4096]; // Should be sufficient for every use
781 };
782 
785  char host[4096]; // Should be sufficient for every use
786 };
787 
790  char errmsg[4096]; // Should be sufficient for every use
791 };
792 
795  char infomsg[4096]; // Should be sufficient for every use
796 };
797 
800 };
801 
804  char parms[4096]; // Should be sufficient for every use
805 };
806 
810  char host[4092];
811 };
812 
815  char reserved[4];
817  char respdata[4096];
818 };
819 
823 };
824 
829 };
830 
832  char data[4096];
833 };
834 
836  char data[4096];
837 };
838 
840 {
842  union
843  {
854  } body;
855 };
856 
858 
859 // The fields to be sent as initial handshake
866 };
867 
868 // The body received after the first handshake's header
873 };
874 
875 
876 
878 
879 struct ALIGN_CHECK {char chkszreq[25-sizeof(ClientRequest)];
880  char chkszrsp[ 9-sizeof(ServerResponseHeader)];
881 };
882 
883 /******************************************************************************/
884 /* X P r o t o c o l U t i l i t i e s */
885 /******************************************************************************/
886 
887 #include <errno.h>
888 #if defined(WIN32)
889 #if !defined(ENOTBLK)
890 # define ENOTBLK 15
891 #endif
892 #if !defined(ETXTBSY)
893 #define ETXTBSY 26
894 #endif
895 #if !defined(ENOBUFS)
896 #define ENOBUFS 105
897 #endif
898 #if !defined(ENETUNREACH)
899 #define ENETUNREACH 114
900 #endif
901 #endif
902 
903 #ifndef ENOATTR
904 #define ENOATTR ENODATA
905 #endif
906 
908 {
909 public:
910 
911 // mapError() is the occicial mapping from errno to xrootd protocol error.
912 //
913 static int mapError(int rc)
914  {if (rc < 0) rc = -rc;
915  switch(rc)
916  {case ENOENT: return kXR_NotFound;
917  case EINVAL: return kXR_ArgInvalid;
918  case EPERM: return kXR_NotAuthorized;
919  case EACCES: return kXR_NotAuthorized;
920  case EIO: return kXR_IOError;
921  case ENOMEM: return kXR_NoMemory;
922  case ENOBUFS: return kXR_NoMemory;
923  case ENOSPC: return kXR_NoSpace;
924  case ENAMETOOLONG: return kXR_ArgTooLong;
925  case ENETUNREACH: return kXR_noserver;
926  case ENOTBLK: return kXR_NotFile;
927  case EISDIR: return kXR_isDirectory;
928  case EEXIST: return kXR_InvalidRequest;
929  case ETXTBSY: return kXR_inProgress;
930  case ENODEV: return kXR_FSError;
931  case EFAULT: return kXR_ServerError;
932  case EDOM: return kXR_ChkSumErr;
933  case EDQUOT: return kXR_overQuota;
934  case EILSEQ: return kXR_SigVerErr;
935  case ERANGE: return kXR_DecryptErr;
936  case EUSERS: return kXR_Overloaded;
937  case EROFS: return kXR_fsReadOnly;
938  case ENOATTR: return kXR_AttrNotFound;
939  case EPROTOTYPE: return kXR_TLSRequired;
940  case EADDRNOTAVAIL: return kXR_noReplicas;
941  default: return kXR_FSError;
942  }
943  }
944 
945 static int toErrno( int xerr )
946 {
947  switch(xerr)
948  {case kXR_ArgInvalid: return EINVAL;
949  case kXR_ArgMissing: return EINVAL;
950  case kXR_ArgTooLong: return ENAMETOOLONG;
951  case kXR_FileLocked: return EDEADLK;
952  case kXR_FileNotOpen: return EBADF;
953  case kXR_FSError: return EIO;
954  case kXR_InvalidRequest:return EEXIST;
955  case kXR_IOError: return EIO;
956  case kXR_NoMemory: return ENOMEM;
957  case kXR_NoSpace: return ENOSPC;
958  case kXR_NotAuthorized: return EACCES;
959  case kXR_NotFound: return ENOENT;
960  case kXR_ServerError: return ENOMSG;
961  case kXR_Unsupported: return ENOSYS;
962  case kXR_noserver: return EHOSTUNREACH;
963  case kXR_NotFile: return ENOTBLK;
964  case kXR_isDirectory: return EISDIR;
965  case kXR_Cancelled: return ECANCELED;
966  case kXR_ChkLenErr: return EDOM;
967  case kXR_ChkSumErr: return EDOM;
968  case kXR_inProgress: return EINPROGRESS;
969  case kXR_overQuota: return EDQUOT;
970  case kXR_SigVerErr: return EILSEQ;
971  case kXR_DecryptErr: return ERANGE;
972  case kXR_Overloaded: return EUSERS;
973  case kXR_fsReadOnly: return EROFS;
974  case kXR_BadPayload: return EINVAL;
975  case kXR_AttrNotFound: return ENOATTR;
976  case kXR_TLSRequired: return EPROTOTYPE;
977  case kXR_noReplicas: return EADDRNOTAVAIL;
978  default: return ENOMSG;
979  }
980 }
981 
982 static const char *errName(kXR_int32 errCode);
983 
984 static const char *reqName(kXR_unt16 reqCode);
985 };
986 #endif
Definition: XProtocol.hh:813
unsigned char kXR_char
Definition: XPtypes.hh:65
kXR_int64 offset
Definition: XProtocol.hh:597
static const char * errName(kXR_int32 errCode)
Definition: XProtocol.hh:170
Definition: XProtocol.hh:766
kXR_int32 dlen
Definition: XProtocol.hh:600
Definition: XProtocol.hh:224
Definition: XProtocol.hh:204
Definition: XProtocol.hh:181
kXR_unt16 options
Definition: XProtocol.hh:479
kXR_char role[1]
Definition: XProtocol.hh:457
Definition: XProtocol.hh:303
Definition: XProtocol.hh:245
Definition: XProtocol.hh:117
kXR_unt16 requestid
Definition: XProtocol.hh:430
kXR_unt64 seqno
Definition: XProtocol.hh:565
kXR_char reserved[8]
Definition: XProtocol.hh:512
Definition: XProtocol.hh:132
kXR_char streamid[2]
Definition: XProtocol.hh:711
kXR_int64 offset
Definition: XProtocol.hh:672
Definition: XProtocol.hh:269
Definition: XProtocol.hh:831
kXR_char streamid[2]
Definition: XProtocol.hh:422
static const kXR_int32 doSync
Definition: XProtocol.hh:609
#define truncate(a, b)
Definition: XrdPosix.hh:106
kXR_int32 dlen
Definition: XProtocol.hh:538
kXR_int32 port
Definition: XProtocol.hh:784
kXR_char sessid[16]
Definition: XProtocol.hh:431
Definition: XProtocol.hh:267
Definition: XProtocol.hh:221
kXR_char streamid[2]
Definition: XProtocol.hh:509
kXR_char fhandle[4]
Definition: XProtocol.hh:723
kXR_char reserved[7]
Definition: XProtocol.hh:677
XMkdirOptions
Definition: XProtocol.hh:160
kXR_char streamid[2]
Definition: XProtocol.hh:491
kXR_char flags
Definition: XProtocol.hh:564
kXR_char ability
Definition: XProtocol.hh:455
kXR_int32 wsec
Definition: XProtocol.hh:827
kXR_unt16 requestid
Definition: XProtocol.hh:527
kXR_unt16 requestid
Definition: XProtocol.hh:492
Definition: XProtocol.hh:156
kXR_int32 pid
Definition: XProtocol.hh:452
kXR_unt16 expectrid
Definition: XProtocol.hh:415
kXR_char username[8]
Definition: XProtocol.hh:453
Definition: XProtocol.hh:331
Definition: XProtocol.hh:484
Definition: XProtocol.hh:322
Definition: XProtocol.hh:355
kXR_int32 dlen
Definition: XProtocol.hh:496
kXR_char options[1]
Definition: XProtocol.hh:463
Definition: XProtocol.hh:100
kXR_int32 wsec
Definition: XProtocol.hh:822
Definition: XProtocol.hh:179
Definition: XProtocol.hh:133
Definition: XProtocol.hh:154
ServerResponseBody_Waitresp waitresp
Definition: XProtocol.hh:847
char host[4092]
Definition: XProtocol.hh:810
kXR_char streamid[2]
Definition: XProtocol.hh:541
Definition: XProtocol.hh:206
ServerResponseBody_Wait wait
Definition: XProtocol.hh:846
#define writev(a, b, c)
Definition: XrdPosix.hh:112
Definition: XProtocol.hh:298
kXR_int32 dlen
Definition: XProtocol.hh:402
char reserved[4]
Definition: XProtocol.hh:815
Definition: XProtocol.hh:736
char infomsg[4096]
Definition: XProtocol.hh:795
Definition: XProtocol.hh:404
kXR_char reserved[12]
Definition: XProtocol.hh:418
Definition: XProtocol.hh:348
Definition: XProtocol.hh:669
Definition: XProtocol.hh:220
Definition: XProtocol.hh:167
kXR_char rsvd
Definition: XProtocol.hh:738
Definition: XProtocol.hh:207
ServerResponseBody_Bind bind
Definition: XProtocol.hh:853
kXR_char streamid[2]
Definition: XProtocol.hh:594
Definition: XProtocol.hh:475
Definition: XProtocol.hh:344
kXR_char reserved[16]
Definition: XProtocol.hh:487
kXR_char streamid[2]
Definition: XProtocol.hh:385
Definition: XProtocol.hh:265
kXR_char version
Definition: XProtocol.hh:416
kXR_unt16 requestid
Definition: XProtocol.hh:561
Definition: XProtocol.hh:442
kXR_char fhandle[4]
Definition: XProtocol.hh:596
Definition: XProtocol.hh:330
Definition: XProtocol.hh:412
kXR_unt16 optionX
Definition: XProtocol.hh:504
Definition: XProtocol.hh:333
kXR_int32 dlen
Definition: XProtocol.hh:544
kXR_unt16 requestid
Definition: XProtocol.hh:406
Definition: XProtocol.hh:334
kXR_char reserved[16]
Definition: XProtocol.hh:543
XOpenRequestMode
Definition: XProtocol.hh:148
Definition: XProtocol.hh:360
kXR_char fhandle[4]
Definition: XProtocol.hh:581
unsigned short kXR_unt16
Definition: XPtypes.hh:67
kXR_int32 msec
Definition: XProtocol.hh:828
kXR_int32 third
Definition: XProtocol.hh:863
kXR_char credtype[4]
Definition: XProtocol.hh:388
kXR_int32 msgval
Definition: XProtocol.hh:872
Definition: XProtocol.hh:144
char data[4096]
Definition: XProtocol.hh:832
Definition: XProtocol.hh:246
Definition: XProtocol.hh:338
kXR_char prty
Definition: XProtocol.hh:502
kXR_int16 arg1len
Definition: XProtocol.hh:472
Definition: XProtocol.hh:351
kXR_char pathid
Definition: XProtocol.hh:537
Definition: XProtocol.hh:320
Definition: XProtocol.hh:155
Definition: XProtocol.hh:103
Definition: XProtocol.hh:121
kXR_char sessid[16]
Definition: XProtocol.hh:394
Definition: XProtocol.hh:130
kXR_unt16 requestid
Definition: XProtocol.hh:423
Definition: XProtocol.hh:122
Definition: XProtocol.hh:289
kXR_int32 dlen
Definition: XProtocol.hh:426
kXR_int64 fsize
Definition: XProtocol.hh:408
XLogonType
Definition: XProtocol.hh:258
Definition: XProtocol.hh:611
kXR_unt16 requestid
Definition: XProtocol.hh:414
Definition: XProtocol.hh:131
kXR_unt16 requestid
Definition: XProtocol.hh:572
Definition: XProtocol.hh:490
kXR_unt16 requestid
Definition: XProtocol.hh:451
kXR_int64 offset
Definition: XProtocol.hh:615
Definition: XProtocol.hh:203
Definition: XProtocol.hh:98
kXR_char streamid[2]
Definition: XProtocol.hh:553
#define ENOATTR
Definition: XProtocol.hh:904
Definition: XProtocol.hh:820
kXR_int32 rlen
Definition: XProtocol.hh:671
Definition: XProtocol.hh:161
kXR_int32 dlen
Definition: XProtocol.hh:514
Definition: XProtocol.hh:247
Definition: XProtocol.hh:546
Definition: XProtocol.hh:187
Definition: XProtocol.hh:180
Definition: XProtocol.hh:391
kXR_unt16 requestid
Definition: XProtocol.hh:624
kXR_unt16 requestid
Definition: XProtocol.hh:470
Definition: XProtocol.hh:498
Definition: XProtocol.hh:835
kXR_unt16 status
Definition: XProtocol.hh:712
Definition: XProtocol.hh:359
XSecCrypto
Definition: XProtocol.hh:287
kXR_char secopt
Definition: XProtocol.hh:740
Definition: XProtocol.hh:268
static int mapError(int rc)
Definition: XProtocol.hh:913
kXR_char reserved[3]
Definition: XProtocol.hh:599
kXR_unt16 requestid
Definition: XProtocol.hh:444
Definition: XProtocol.hh:195
kXR_unt16 infotype
Definition: XProtocol.hh:519
kXR_char capver[1]
Definition: XProtocol.hh:456
kXR_int32 port
Definition: XProtocol.hh:809
XResponseType
Definition: XProtocol.hh:297
kXR_char substreamid
Definition: XProtocol.hh:718
kXR_char streamid[2]
Definition: XProtocol.hh:379
Definition: XProtocol.hh:240
kXR_char reserved[14]
Definition: XProtocol.hh:400
kXR_char streamid[2]
Definition: XProtocol.hh:603
kXR_int32 dlen
Definition: XProtocol.hh:607
kXR_char streamid[2]
Definition: XProtocol.hh:405
kXR_char reserved[10]
Definition: XProtocol.hh:505
kXR_char reserved[16]
Definition: XProtocol.hh:549
XVerifyType
Definition: XProtocol.hh:253
XQueryType
Definition: XProtocol.hh:239
Definition: XProtocol.hh:134
Definition: XProtocol.hh:191
kXR_int32 rlen
Definition: XProtocol.hh:530
kXR_int64 offset
Definition: XProtocol.hh:688
Definition: XProtocol.hh:152
Definition: XProtocol.hh:807
kXR_char seclvl
Definition: XProtocol.hh:741
kXR_unt16 requestid
Definition: XProtocol.hh:580
Definition: XProtocol.hh:357
kXR_int32 dlen
Definition: XProtocol.hh:531
Definition: XProtocol.hh:112
Definition: XProtocol.hh:113
ServerResponseBody_Login login
Definition: XProtocol.hh:851
Definition: XProtocol.hh:722
kXR_unt16 requestid
Definition: XProtocol.hh:477
kXR_char streamid[2]
Definition: XProtocol.hh:392
kXR_unt16 requestid
Definition: XProtocol.hh:587
kXR_char reserved1[2]
Definition: XProtocol.hh:520
kXR_char version
Definition: XProtocol.hh:563
Definition: XProtocol.hh:306
kXR_int32 dlen
Definition: XProtocol.hh:557
kXR_int32 dlen
Definition: XProtocol.hh:550
kXR_char reserved2[8]
Definition: XProtocol.hh:522
Definition: XProtocol.hh:101
kXR_unt16 requestid
Definition: XProtocol.hh:548
Definition: XProtocol.hh:189
Definition: XProtocol.hh:205
Definition: XProtocol.hh:236
ServerResponseBody_Error error
Definition: XProtocol.hh:844
Definition: XProtocol.hh:384
kXR_int32 fourth
Definition: XProtocol.hh:864
kXR_int32 wlen
Definition: XProtocol.hh:693
kXR_int32 dlen
Definition: XProtocol.hh:506
Definition: XProtocol.hh:230
Definition: XProtocol.hh:201
Definition: XProtocol.hh:127
XLoginVersion
Definition: XProtocol.hh:186
Definition: XProtocol.hh:347
Definition: XProtocol.hh:123
kXR_char cptype[4]
Definition: XProtocol.hh:725
Definition: XProtocol.hh:593
char host[4096]
Definition: XProtocol.hh:785
Definition: XProtocol.hh:675
kXR_char reserved[15]
Definition: XProtocol.hh:606
unsigned long long kXR_unt64
Definition: XPtypes.hh:99
kXR_char reserved[4]
Definition: XProtocol.hh:409
kXR_int32 rlen
Definition: XProtocol.hh:687
Definition: XProtocol.hh:516
Definition: XProtocol.hh:354
kXR_int32 errnum
Definition: XProtocol.hh:789
kXR_char reserved[2]
Definition: XProtocol.hh:618
Definition: XProtocol.hh:115
kXR_int32 dlen
Definition: XProtocol.hh:523
kXR_char reserved[4]
Definition: XProtocol.hh:590
Definition: XProtocol.hh:190
kXR_char options
Definition: XProtocol.hh:501
kXR_int32 options
Definition: XProtocol.hh:437
kXR_char reqindx
Definition: XProtocol.hh:732
ServerResponseSVec_Protocol secvec
Definition: XProtocol.hh:743
Definition: XProtocol.hh:288
kXR_char reserved[13]
Definition: XProtocol.hh:464
Definition: XProtocol.hh:778
Definition: XProtocol.hh:200
Definition: XProtocol.hh:151
char chkszreq[25-sizeof(ClientRequest)]
Definition: XProtocol.hh:879
Definition: XProtocol.hh:508
kXR_char streamid[2]
Definition: XProtocol.hh:586
Definition: XProtocol.hh:119
Definition: XProtocol.hh:335
Definition: XProtocol.hh:124
kXR_char streamid[2]
Definition: XProtocol.hh:469
kXR_char streamid[2]
Definition: XProtocol.hh:429
kXR_char options
Definition: XProtocol.hh:605
Definition: XProtocol.hh:153
kXR_int32 second
Definition: XProtocol.hh:862
Definition: XProtocol.hh:302
kXR_char streamid[2]
Definition: XProtocol.hh:461
kXR_int32 actnum
Definition: XProtocol.hh:808
Definition: XProtocol.hh:290
Definition: XProtocol.hh:212
kXR_int32 dlen
Definition: XProtocol.hh:619
Definition: XProtocol.hh:300
kXR_char streamid[2]
Definition: XProtocol.hh:398
char data[4096]
Definition: XProtocol.hh:836
#define write(a, b, c)
Definition: XrdPosix.hh:110
kXR_char pathid
Definition: XProtocol.hh:676
Definition: XProtocol.hh:138
Definition: XProtocol.hh:211
kXR_unt16 requestid
Definition: XProtocol.hh:554
Definition: XProtocol.hh:260
kXR_int32 msglen
Definition: XProtocol.hh:870
Definition: XProtocol.hh:99
Definition: XProtocol.hh:248
kXR_unt16 requestid
Definition: XProtocol.hh:535
Definition: XProtocol.hh:168
char respdata[4096]
Definition: XProtocol.hh:817
kXR_char fhandle[4]
Definition: XProtocol.hh:528
Definition: XProtocol.hh:663
kXR_char reserved[12]
Definition: XProtocol.hh:387
kXR_int64 offset
Definition: XProtocol.hh:529
Definition: XProtocol.hh:231
Definition: XProtocol.hh:578
Definition: XProtocol.hh:250
kXR_unt16 requestid
Definition: XProtocol.hh:595
Definition: XProtocol.hh:907
kXR_int32 options
Definition: XProtocol.hh:511
Definition: XProtocol.hh:356
Definition: XProtocol.hh:149
kXR_int32 cpsize
Definition: XProtocol.hh:724
kXR_char reserved[11]
Definition: XProtocol.hh:495
XErrorCode
Definition: XProtocol.hh:329
Definition: XProtocol.hh:879
Definition: XProtocol.hh:421
kXR_char streamid[2]
Definition: XProtocol.hh:547
kXR_int32 dlen
Definition: XProtocol.hh:626
Definition: XProtocol.hh:199
Definition: XProtocol.hh:717
kXR_unt16 requestid
Definition: XProtocol.hh:399
Definition: XProtocol.hh:304
XLoginCapVer
Definition: XProtocol.hh:178
Definition: XProtocol.hh:337
ServerResponseBody_Protocol protocol
Definition: XProtocol.hh:850
Definition: XProtocol.hh:188
kXR_char streamid[2]
Definition: XProtocol.hh:571
kXR_int32 buffsz
Definition: XProtocol.hh:439
Definition: XProtocol.hh:114
Definition: XProtocol.hh:552
Definition: XProtocol.hh:169
kXR_unt16 requestid
Definition: XProtocol.hh:486
Definition: XProtocol.hh:283
kXR_char reserved[15]
Definition: XProtocol.hh:555
kXR_unt16 mode
Definition: XProtocol.hh:465
kXR_int32 pval
Definition: XProtocol.hh:767
Definition: XProtocol.hh:249
kXR_int32 dlen
Definition: XProtocol.hh:488
kXR_char streamid[2]
Definition: XProtocol.hh:612
XSecFlags
Definition: XProtocol.hh:282
void ServerResponseHeader2NetFmt(struct ServerResponseHeader *srh)
kXR_unt16 expectrid
Definition: XProtocol.hh:562
Definition: XProtocol.hh:301
kXR_char fhandle[4]
Definition: XProtocol.hh:686
Definition: XProtocol.hh:449
Definition: XProtocol.hh:468
ServerResponseBody_Redirect redirect
Definition: XProtocol.hh:848
Definition: XProtocol.hh:244
Definition: XProtocol.hh:139
Definition: XProtocol.hh:126
kXR_int32 dlen
Definition: XProtocol.hh:458
Definition: XProtocol.hh:321
kXR_char streamid[2]
Definition: XProtocol.hh:560
kXR_int32 dlen
Definition: XProtocol.hh:447
Definition: XProtocol.hh:352
Definition: XProtocol.hh:102
kXR_char body[16]
Definition: XProtocol.hh:625
Definition: XProtocol.hh:120
Definition: XProtocol.hh:378
Definition: XProtocol.hh:397
kXR_char secver
Definition: XProtocol.hh:739
Definition: XProtocol.hh:128
kXR_char streamid[2]
Definition: XProtocol.hh:579
Definition: XProtocol.hh:839
kXR_int32 dlen
Definition: XProtocol.hh:568
kXR_int64 offset
Definition: XProtocol.hh:589
kXR_char reserved[12]
Definition: XProtocol.hh:480
kXR_int32 flags
Definition: XProtocol.hh:768
Definition: XProtocol.hh:798
kXR_unt16 requestid
Definition: XProtocol.hh:518
kXR_char streamid[2]
Definition: XProtocol.hh:534
Definition: XProtocol.hh:622
Definition: XProtocol.hh:685
Definition: XProtocol.hh:710
Definition: XProtocol.hh:299
Definition: XProtocol.hh:683
Definition: XProtocol.hh:219
Definition: XProtocol.hh:150
kXR_char secvsz
Definition: XProtocol.hh:742
kXR_unt16 requestid
Definition: XProtocol.hh:462
Definition: XProtocol.hh:171
Definition: XProtocol.hh:157
Definition: XProtocol.hh:731
kXR_int32 ServerResponseType
Definition: XProtocol.hh:877
kXR_char options
Definition: XProtocol.hh:573
kXR_char fhandle[4]
Definition: XProtocol.hh:670
Definition: XProtocol.hh:222
Definition: XProtocol.hh:345
Definition: XProtocol.hh:315
Definition: XProtocol.hh:332
kXR_int32 fifth
Definition: XProtocol.hh:865
XLoginAbility
Definition: XProtocol.hh:166
char parms[4096]
Definition: XProtocol.hh:804
kXR_int32 dlen
Definition: XProtocol.hh:481
Definition: XProtocol.hh:271
kXR_unt16 requestid
Definition: XProtocol.hh:386
Definition: XProtocol.hh:173
kXR_int32 dlen
Definition: XProtocol.hh:591
Definition: XProtocol.hh:217
ServerResponseReqs_Protocol secreq
Definition: XProtocol.hh:769
kXR_char reserved[14]
Definition: XProtocol.hh:471
Definition: XProtocol.hh:162
Definition: XProtocol.hh:227
Definition: XProtocol.hh:361
ServerResponseHeader resphdr
Definition: XProtocol.hh:816
Definition: XProtocol.hh:540
Definition: XProtocol.hh:358
kXR_int32 buffsz
Definition: XProtocol.hh:513
Definition: XProtocol.hh:316
XRequestTypes
Definition: XProtocol.hh:111
Definition: XProtocol.hh:241
#define stat(a, b)
Definition: XrdPosix.hh:96
kXR_char streamid[2]
Definition: XProtocol.hh:413
kXR_char streamid[2]
Definition: XProtocol.hh:485
kXR_int32 first
Definition: XProtocol.hh:861
kXR_char reqsreq
Definition: XProtocol.hh:733
kXR_char reserved[15]
Definition: XProtocol.hh:424
kXR_int32 actnum
Definition: XProtocol.hh:826
kXR_char fhandle[4]
Definition: XProtocol.hh:692
kXR_int32 dlen
Definition: XProtocol.hh:473
Definition: XProtocol.hh:341
kXR_char streamid[2]
Definition: XProtocol.hh:526
kXR_int32 dlen
Definition: XProtocol.hh:713
Definition: XProtocol.hh:319
static const char * reqName(kXR_unt16 reqCode)
Definition: XProtocol.hh:342
Definition: XProtocol.hh:525
kXR_char streamid[2]
Definition: XProtocol.hh:517
Definition: XProtocol.hh:255
Definition: XProtocol.hh:428
kXR_char sec[4096]
Definition: XProtocol.hh:780
kXR_char theTag
Definition: XProtocol.hh:737
kXR_int32 seconds
Definition: XProtocol.hh:799
Definition: XProtocol.hh:266
Definition: XProtocol.hh:129
Definition: XProtocol.hh:434
Definition: XProtocol.hh:174
#define close(a)
Definition: XrdPosix.hh:43
XPrepRequestOption
Definition: XProtocol.hh:263
kXR_int64 offset
Definition: XProtocol.hh:694
kXR_char flags
Definition: XProtocol.hh:494
kXR_char streamid[2]
Definition: XProtocol.hh:499
Definition: XProtocol.hh:264
Definition: XProtocol.hh:336
kXR_char modifier
Definition: XProtocol.hh:556
kXR_char streamid[2]
Definition: XProtocol.hh:450
Definition: XProtocol.hh:216
Definition: XProtocol.hh:314
kXR_char streamid[2]
Definition: XProtocol.hh:623
kXR_int32 dlen
Definition: XProtocol.hh:440
Definition: XProtocol.hh:270
Definition: XProtocol.hh:793
Definition: XProtocol.hh:228
XActionCode
Definition: XProtocol.hh:313
kXR_char streamid[2]
Definition: XProtocol.hh:476
kXR_unt16 requestid
Definition: XProtocol.hh:613
kXR_int32 dlen
Definition: XProtocol.hh:583
Definition: XProtocol.hh:533
Definition: XProtocol.hh:273
Definition: XProtocol.hh:825
kXR_char streamid[2]
Definition: XProtocol.hh:443
Definition: XProtocol.hh:172
kXR_char reserved[14]
Definition: XProtocol.hh:446
Definition: XProtocol.hh:118
Definition: XProtocol.hh:116
Definition: XProtocol.hh:305
XOpenRequestOption
Definition: XProtocol.hh:215
#define open
Definition: XrdPosix.hh:71
Definition: XProtocol.hh:142
Definition: XProtocol.hh:143
Definition: XProtocol.hh:317
ServerResponseBody_Attn attn
Definition: XProtocol.hh:849
kXR_char vertype
Definition: XProtocol.hh:617
Definition: XProtocol.hh:229
kXR_char fhandle[4]
Definition: XProtocol.hh:407
XDirlistRequestOption
Definition: XProtocol.hh:210
int kXR_int32
Definition: XPtypes.hh:89
Definition: XProtocol.hh:223
Definition: XProtocol.hh:860
ServerResponseHeader hdr
Definition: XProtocol.hh:841
Definition: XProtocol.hh:243
kXR_int32 actnum
Definition: XProtocol.hh:814
kXR_char reserved[11]
Definition: XProtocol.hh:574
kXR_unt16 requestid
Definition: XProtocol.hh:393
kXR_int32 dlen
Definition: XProtocol.hh:395
kXR_unt16 mode
Definition: XProtocol.hh:478
kXR_int32 dlen
Definition: XProtocol.hh:576
Definition: XProtocol.hh:232
Definition: XProtocol.hh:343
Definition: XProtocol.hh:141
kXR_int32 protover
Definition: XProtocol.hh:871
kXR_int32 dlen
Definition: XProtocol.hh:432
Definition: XProtocol.hh:629
kXR_char reserved[12]
Definition: XProtocol.hh:582
kXR_unt16 requestid
Definition: XProtocol.hh:604
#define read(a, b, c)
Definition: XrdPosix.hh:77
Definition: XProtocol.hh:570
Definition: XProtocol.hh:869
Definition: XProtocol.hh:339
Definition: XProtocol.hh:340
Definition: XProtocol.hh:225
kXR_char streamid[2]
Definition: XProtocol.hh:435
Definition: XProtocol.hh:788
ServerResponseBody_Buffer buffer
Definition: XProtocol.hh:852
char errmsg[4096]
Definition: XProtocol.hh:790
kXR_char rsvd2[3]
Definition: XProtocol.hh:567
kXR_char options[1]
Definition: XProtocol.hh:425
Definition: XProtocol.hh:353
kXR_unt16 requestid
Definition: XProtocol.hh:436
XProtocolRequestFlags
Definition: XProtocol.hh:235
kXR_unt16 port
Definition: XProtocol.hh:503
kXR_char pathid
Definition: XProtocol.hh:598
kXR_unt16 requestid
Definition: XProtocol.hh:510
Definition: XProtocol.hh:349
XStatRespFlags
Definition: XProtocol.hh:198
kXR_char reserved[8]
Definition: XProtocol.hh:438
kXR_unt16 requestid
Definition: XProtocol.hh:500
kXR_int32 dlen
Definition: XProtocol.hh:466
kXR_char reserved
Definition: XProtocol.hh:454
Definition: XProtocol.hh:135
kXR_char flags
Definition: XProtocol.hh:417
kXR_char reserved[15]
Definition: XProtocol.hh:536
#define mkdir(a, b)
Definition: XrdPosix.hh:69
kXR_char fhandle[4]
Definition: XProtocol.hh:614
Definition: XProtocol.hh:350
Definition: XProtocol.hh:226
Definition: XProtocol.hh:125
kXR_int32 seconds
Definition: XProtocol.hh:794
kXR_char pathid
Definition: XProtocol.hh:616
kXR_int32 actnum
Definition: XProtocol.hh:821
Definition: XProtocol.hh:346
long long kXR_int64
Definition: XPtypes.hh:98
Definition: XProtocol.hh:242
kXR_char crypto
Definition: XProtocol.hh:566
kXR_int32 actnum
Definition: XProtocol.hh:803
Definition: XProtocol.hh:218
XReqErrorType
Definition: XProtocol.hh:97
kXR_int32 dlen
Definition: XProtocol.hh:389
XStatRequestOption
Definition: XProtocol.hh:194
#define rmdir(a)
Definition: XrdPosix.hh:92
Definition: XProtocol.hh:137
Definition: XProtocol.hh:559
Definition: XProtocol.hh:259
kXR_unt16 mode
Definition: XProtocol.hh:401
kXR_unt16 requestid
Definition: XProtocol.hh:380
kXR_int32 dlen
Definition: XProtocol.hh:410
Definition: XProtocol.hh:585
kXR_char sessid[16]
Definition: XProtocol.hh:779
kXR_char reserved[16]
Definition: XProtocol.hh:381
Definition: XProtocol.hh:802
static int toErrno(int xerr)
Definition: XProtocol.hh:945
char chkszrsp[9-sizeof(ServerResponseHeader)]
Definition: XProtocol.hh:880
kXR_char fhandle[4]
Definition: XProtocol.hh:575
Definition: XProtocol.hh:318
kXR_unt16 options
Definition: XProtocol.hh:445
Definition: XProtocol.hh:460
Definition: XProtocol.hh:136
ServerResponseBody_Authmore authmore
Definition: XProtocol.hh:845
#define readv(a, b, c)
Definition: XrdPosix.hh:79
Definition: XProtocol.hh:254
Definition: XProtocol.hh:202
kXR_char fhandle[4]
Definition: XProtocol.hh:588
short kXR_int16
Definition: XPtypes.hh:66
kXR_int32 dlen
Definition: XProtocol.hh:419
Definition: XProtocol.hh:783
union ServerResponse::@0 body
kXR_unt16 requestid
Definition: XProtocol.hh:542
Definition: XProtocol.hh:602
kXR_char fhandle[4]
Definition: XProtocol.hh:521
kXR_int32 dlen
Definition: XProtocol.hh:382
Definition: XProtocol.hh:691
Definition: XProtocol.hh:140
kXR_int32 clientpv
Definition: XProtocol.hh:493