54 #include <netinet/in.h>
55 #include <sys/types.h>
73 "Argument is too long",
74 "File or object is locked",
75 "File or object not open",
79 "Insufficient memory",
81 "Request not authorized",
82 "File or object not found",
83 "Internal server error",
84 "Unsupported request",
85 "No servers available",
86 "Target is not a file",
87 "Target is a directory",
90 "Checksum is invalid",
91 "Request in progress",
95 "Server is overloaded",
96 "Filesystem is read only",
97 "Invalid payload format",
98 "File attribute not found",
99 "Operation requires TLS",
100 "No new servers for replica",
101 "Authentication failed",
102 "Request is not possible",
103 "Conflicting request",
110 {
"auth",
"query",
"chmod",
"close",
111 "dirlist",
"gpfile",
"protocol",
"login",
112 "mkdir",
"mv",
"open",
"ping",
113 "chkpoint",
"read",
"rm",
"rmdir",
114 "sync",
"stat",
"set",
"write",
115 "fattr",
"prepare",
"statx",
"endsess",
116 "bind",
"readv",
"pgwrite",
"locate",
117 "truncate",
"sigver",
"pgread",
"writev"
123 union Endianness {
kXR_unt16 xyz;
unsigned char Endian[2];} little = {1};
134 if ((errCode < 0 || errCode >
kXR_ERRFENCE) && little.Endian[0])
135 errCode = ntohl(errCode);
139 if (errCode < kXR_ArgInvalid || errCode >=
kXR_ERRFENCE)
140 return "!undefined error";
155 if (reqCode >
kXR_REQFENCE && little.Endian[0]) reqCode = ntohs(reqCode);
159 if (reqCode < kXR_auth || reqCode >=
kXR_REQFENCE)
return "!unknown";
163 return reqNames[reqCode -
kXR_auth];
175 memset( buffer, 0,
sizeof(
kXR_unt16 ) );
178 size_t len = strlen( name );
179 memcpy( buffer, name, len + 1 );
193 memcpy( buffer, &lendat,
sizeof(
kXR_int32 ) );
196 memcpy( buffer, value, len );
217 name = strdup( buffer );
218 buffer += strlen( name ) + 1;
236 value =
reinterpret_cast<char*
>( malloc( len + 1 ) );
237 strncpy( value, buffer, len );
static const char * reqName(kXR_unt16 reqCode)
static const char * errName(kXR_int32 errCode)
static char * VVecInsert(const char *value, char *buffer)
static char * NVecRead(char *buffer, kXR_unt16 &rc)
static char * VVecRead(char *buffer, kXR_int32 &len)
static char * NVecInsert(const char *name, char *buffer)