1% Tests for nfs module 2############ 3############ 4+ Packet Creation Tests 5 6= Create subpackets 7Fattr3() 8File_Object() 9Object_Name() 10WCC_Attr() 11File_From_Dir_Plus() 12File_From_Dir() 13Sattr3() 14 15= Create NFS Calls 16NULL_Call() 17GETATTR_Call() 18SETATTR_Call() 19LOOKUP_Call() 20ACCESS_Call() 21READLINK_Call() 22READ_Call() 23WRITE_Call() 24CREATE_Call() 25MKDIR_Call() 26SYMLINK_Call() 27REMOVE_Call() 28RMDIR_Call() 29RENAME_Call() 30LINK_Call() 31READDIR_Call() 32READDIRPLUS_Call() 33FSSTAT_Call() 34FSINFO_Call() 35PATHCONF_Call() 36COMMIT_Call() 37 38= Create NFS Successful replies 39 40GETATTR_Reply(status=0) 41SETATTR_Reply(status=0) 42LOOKUP_Reply(status=0) 43ACCESS_Reply(status=0) 44READLINK_Reply(status=0) 45READ_Reply(status=0) 46WRITE_Reply(status=0) 47CREATE_Reply(status=0) 48MKDIR_Reply(status=0) 49SYMLINK_Reply(status=0) 50REMOVE_Reply(status=0) 51RMDIR_Reply(status=0) 52RENAME_Reply(status=0) 53LINK_Reply(status=0) 54READDIR_Reply(status=0) 55READDIRPLUS_Reply(status=0) 56FSSTAT_Reply(status=0) 57FSINFO_Reply(status=0) 58PATHCONF_Reply(status=0) 59COMMIT_Reply(status=0) 60 61= Create NFS Failed replies 62GETATTR_Reply(status=1) 63SETATTR_Reply(status=1) 64LOOKUP_Reply(status=1) 65ACCESS_Reply(status=1) 66READLINK_Reply(status=1) 67READ_Reply(status=1) 68WRITE_Reply(status=1) 69CREATE_Reply(status=1) 70MKDIR_Reply(status=1) 71SYMLINK_Reply(status=1) 72REMOVE_Reply(status=1) 73RMDIR_Reply(status=1) 74RENAME_Reply(status=1) 75LINK_Reply(status=1) 76READDIR_Reply(status=1) 77READDIRPLUS_Reply(status=1) 78FSSTAT_Reply(status=1) 79FSINFO_Reply(status=1) 80PATHCONF_Reply(status=1) 81COMMIT_Reply(status=1) 82 83+ Test RPC Call layer bindings 84 85= Layer Bindings for NFS Calls 86from scapy.contrib.oncrpc import * 87pkt = RPC()/RPC_Call()/NULL_Call() 88assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 0) 89pkt = RPC()/RPC_Call()/GETATTR_Call() 90assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 1) 91pkt = RPC()/RPC_Call()/SETATTR_Call() 92assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 2) 93pkt = RPC()/RPC_Call()/LOOKUP_Call() 94assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 3) 95pkt = RPC()/RPC_Call()/ACCESS_Call() 96assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 4) 97pkt = RPC()/RPC_Call()/READLINK_Call() 98assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 5) 99pkt = RPC()/RPC_Call()/READ_Call() 100assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 6) 101pkt = RPC()/RPC_Call()/WRITE_Call() 102assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 7) 103pkt = RPC()/RPC_Call()/CREATE_Call() 104assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 8) 105pkt = RPC()/RPC_Call()/MKDIR_Call() 106assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 9) 107pkt = RPC()/RPC_Call()/SYMLINK_Call() 108assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 10) 109pkt = RPC()/RPC_Call()/REMOVE_Call() 110assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 12) 111pkt = RPC()/RPC_Call()/RMDIR_Call() 112assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 13) 113pkt = RPC()/RPC_Call()/RENAME_Call() 114assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 14) 115pkt = RPC()/RPC_Call()/LINK_Call() 116assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 15) 117pkt = RPC()/RPC_Call()/READDIR_Call() 118assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 16) 119pkt = RPC()/RPC_Call()/READDIRPLUS_Call() 120assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 17) 121pkt = RPC()/RPC_Call()/FSSTAT_Call() 122assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 18) 123pkt = RPC()/RPC_Call()/FSINFO_Call() 124assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 19) 125pkt = RPC()/RPC_Call()/PATHCONF_Call() 126assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 20) 127pkt = RPC()/RPC_Call()/COMMIT_Call() 128assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 21) 129 130= Layer Bindings for NFS Replies 131from scapy.contrib.oncrpc import * 132pkt = RPC()/RPC_Reply()/NULL_Reply() 133assert pkt.mtype==1 134pkt = RPC()/RPC_Reply()/GETATTR_Reply() 135assert pkt.mtype==1 136pkt = RPC()/RPC_Reply()/SETATTR_Reply() 137assert pkt.mtype==1 138pkt = RPC()/RPC_Reply()/LOOKUP_Reply() 139assert pkt.mtype==1 140pkt = RPC()/RPC_Reply()/ACCESS_Reply() 141assert pkt.mtype==1 142pkt = RPC()/RPC_Reply()/READLINK_Reply() 143assert pkt.mtype==1 144pkt = RPC()/RPC_Reply()/READ_Reply() 145assert pkt.mtype==1 146pkt = RPC()/RPC_Reply()/WRITE_Reply() 147assert pkt.mtype==1 148pkt = RPC()/RPC_Reply()/CREATE_Reply() 149assert pkt.mtype==1 150pkt = RPC()/RPC_Reply()/MKDIR_Reply() 151assert pkt.mtype==1 152pkt = RPC()/RPC_Reply()/SYMLINK_Reply() 153assert pkt.mtype==1 154pkt = RPC()/RPC_Reply()/REMOVE_Reply() 155assert pkt.mtype==1 156pkt = RPC()/RPC_Reply()/RMDIR_Reply() 157assert pkt.mtype==1 158pkt = RPC()/RPC_Reply()/RENAME_Reply() 159assert pkt.mtype==1 160pkt = RPC()/RPC_Reply()/LINK_Reply() 161assert pkt.mtype==1 162pkt = RPC()/RPC_Reply()/READDIR_Reply() 163assert pkt.mtype==1 164pkt = RPC()/RPC_Reply()/READDIRPLUS_Reply() 165assert pkt.mtype==1 166pkt = RPC()/RPC_Reply()/FSSTAT_Reply() 167assert pkt.mtype==1 168pkt = RPC()/RPC_Reply()/FSINFO_Reply() 169assert pkt.mtype==1 170pkt = RPC()/RPC_Reply()/PATHCONF_Reply() 171assert pkt.mtype==1 172pkt = RPC()/RPC_Reply()/COMMIT_Reply() 173assert pkt.mtype==1 174 175+ Test Built Packets Against Raw Strings 176 177= Built NFS Calls vs Raw Strings 178pkt = GETATTR_Call( 179 filehandle=File_Object( 180 length=4, 181 fh='file' 182 ) 183) 184assert bytes(pkt) == b'\x00\x00\x00\x04file' 185 186pkt = LOOKUP_Call( 187 dir=File_Object( 188 length=3, 189 fh='DIR', 190 fill='\x00' 191 ), 192 filename=Object_Name( 193 length=4, 194 _name='File' 195 ) 196) 197assert bytes(pkt) == b'\x00\x00\x00\x03DIR\x00\x00\x00\x00\x04File' 198 199pkt = FSINFO_Call( 200 filehandle=File_Object( 201 length=4, 202 fh='file' 203 ) 204) 205assert bytes(pkt) == b'\x00\x00\x00\x04file' 206 207pkt = PATHCONF_Call( 208 filehandle=File_Object( 209 length=4, 210 fh='file' 211 ) 212) 213assert bytes(pkt) == b'\x00\x00\x00\x04file' 214 215pkt = ACCESS_Call( 216 filehandle=File_Object( 217 length=4, 218 fh='file', 219 ), 220 check_access='READ' 221) 222assert bytes(pkt) == b'\x00\x00\x00\x04file\x00\x00\x00\x01' 223 224pkt = READDIRPLUS_Call( 225 filehandle=File_Object( 226 length=4, 227 fh='file' 228 ), 229 cookie=0xffffffffffffffff, 230 verifier=0xaaaaaaaaaaaaaaaa, 231 dircount=512, 232 maxcount=4096 233) 234assert bytes(pkt) == b'\x00\x00\x00\x04file\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x02\x00\x00\x00\x10\x00' 235 236pkt = WRITE_Call( 237 filehandle=File_Object( 238 length=4, 239 fh='file', 240 ), 241 offset=0xffffffffffffffff, 242 count=0xaaaaaaaa, 243 stable='UNSTABLE', 244 length=8, 245 contents='\x00\x01\x02\x03\x04\x05\x06\x07' 246) 247assert bytes(pkt) == b'\x00\x00\x00\x04file\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\x00\x00\x00\x00\x00\x00\x00\x08\x00\x01\x02\x03\x04\x05\x06\x07' 248 249pkt = COMMIT_Call( 250 filehandle=File_Object( 251 length=4, 252 fh='file' 253 ), 254 offset=0xffffffffffffffff, 255 count=0xaaaaaaaa 256) 257assert bytes(pkt) == b'\x00\x00\x00\x04file\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa' 258 259pkt = SETATTR_Call( 260 filehandle=File_Object( 261 length=4, 262 fh='file' 263 ), 264 attributes=Sattr3( 265 set_mode='SET', mode=0o755, 266 set_uid='SET', uid=1, 267 set_gid='SET', gid=1, 268 set_size='SET', size=0xffffffffffffffff, 269 set_atime='CLIENT TIME', atime_s=0xffffffff, atime_ns=0xffffffff, 270 set_mtime='CLIENT TIME', mtime_s=0xaaaaaaaa, mtime_ns=0xaaaaaaaa 271 ), 272 check=0xffffffff 273) 274assert bytes(pkt) == b'\x00\x00\x00\x04file\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x02\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x02\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xff\xff\xff\xff' 275 276pkt = FSSTAT_Call( 277 filehandle=File_Object( 278 length=4, 279 fh='file' 280 ) 281) 282assert bytes(pkt) == b'\x00\x00\x00\x04file' 283 284pkt = CREATE_Call( 285 dir=File_Object( 286 length=3, 287 fh='DIR', 288 fill='\x00' 289 ), 290 filename=Object_Name( 291 length=4, 292 _name='File' 293 ), 294 create_mode='EXCLUSIVE', 295 verifier=0xffffffffffffffff 296) 297assert bytes(pkt) == b'\x00\x00\x00\x03DIR\x00\x00\x00\x00\x04File\x00\x00\x00\x02\xff\xff\xff\xff\xff\xff\xff\xff' 298 299pkt = REMOVE_Call( 300 dir=File_Object( 301 length=3, 302 fh='DIR', 303 fill='\x00' 304 ), 305 filename=Object_Name( 306 length=4, 307 _name='File' 308 ) 309) 310assert bytes(pkt) == b'\x00\x00\x00\x03DIR\x00\x00\x00\x00\x04File' 311 312pkt = READDIR_Call( 313 filehandle=File_Object( 314 length=4, 315 fh='file' 316 ), 317 cookie=0xffffffffffffffff, 318 verifier=0xaaaaaaaaaaaaaaaa, 319 count=0xabcdef12 320) 321assert bytes(pkt) == b'\x00\x00\x00\x04file\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xab\xcd\xef\x12' 322 323pkt = RENAME_Call( 324 dir_from=File_Object( 325 length=8, 326 fh='DIR_FROM' 327 ), 328 name_from=Object_Name( 329 length=9, 330 _name='NAME_FROM', 331 fill='\x00\x00\x00' 332 ), 333 dir_to=File_Object( 334 length=6, 335 fh='DIR_TO', 336 fill='\x00\x00' 337 ), 338 name_to=Object_Name( 339 length=7, 340 _name='NAME_TO', 341 fill='\x00' 342 ) 343) 344assert bytes(pkt) == b'\x00\x00\x00\x08DIR_FROM\x00\x00\x00\tNAME_FROM\x00\x00\x00\x00\x00\x00\x06DIR_TO\x00\x00\x00\x00\x00\x07NAME_TO\x00' 345 346pkt = LINK_Call( 347 filehandle=File_Object( 348 length=4, 349 fh='file' 350 ), 351 link_dir=File_Object( 352 length=8, 353 fh='LINK_DIR' 354 ), 355 link_name=Object_Name( 356 length=9, 357 _name='LINK_NAME', 358 fill='\x00\x00\x00' 359 ) 360) 361assert bytes(pkt) == b'\x00\x00\x00\x04file\x00\x00\x00\x08LINK_DIR\x00\x00\x00\tLINK_NAME\x00\x00\x00' 362 363pkt = RMDIR_Call( 364 dir=File_Object( 365 length=3, 366 fh='DIR', 367 fill='\x00' 368 ), 369 filename=Object_Name( 370 length=4, 371 _name='File' 372 ) 373) 374assert bytes(pkt) == b'\x00\x00\x00\x03DIR\x00\x00\x00\x00\x04File' 375 376pkt = READLINK_Call( 377 filehandle=File_Object( 378 length=4, 379 fh='file' 380 ) 381) 382assert bytes(pkt) == b'\x00\x00\x00\x04file' 383 384pkt = READ_Call( 385 filehandle=File_Object( 386 length=4, 387 fh='file' 388 ), 389 offset=0xffffffffffffffff, 390 count=0xaaaaaaaa 391) 392assert bytes(pkt) == b'\x00\x00\x00\x04file\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa' 393 394pkt = MKDIR_Call( 395 dir=File_Object( 396 length=3, 397 fh='DIR', 398 fill='\x00' 399 ), 400 dir_name=Object_Name( 401 length=4, 402 _name='DIR_NAME' 403 ), 404 attributes=Sattr3( 405 set_mode='SET', mode=0o755, 406 set_uid='SET', uid=1, 407 set_gid='SET', gid=1, 408 set_size='SET', size=0xffffffffffffffff, 409 set_atime='CLIENT TIME', atime_s=0xffffffff, atime_ns=0xffffffff, 410 set_mtime='CLIENT TIME', mtime_s=0xaaaaaaaa, mtime_ns=0xaaaaaaaa 411 ) 412) 413assert bytes(pkt) == b'\x00\x00\x00\x03DIR\x00\x00\x00\x00\x04DIR_NAME\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x02\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x02\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa' 414 415pkt = SYMLINK_Call( 416 dir=File_Object( 417 length=3, 418 fh='DIR', 419 fill='\x00' 420 ), 421 dir_name=Object_Name( 422 length=4, 423 _name='DIR_NAME' 424 ), 425 attributes=Sattr3( 426 set_mode='SET', mode=0o755, 427 set_uid='SET', uid=1, 428 set_gid='SET', gid=1, 429 set_size='SET', size=0xffffffffffffffff, 430 set_atime='CLIENT TIME', atime_s=0xffffffff, atime_ns=0xffffffff, 431 set_mtime='CLIENT TIME', mtime_s=0xaaaaaaaa, mtime_ns=0xaaaaaaaa 432 ), 433 link_name=Object_Name( 434 length=9, 435 _name='LINK_NAME', 436 fill='\x00\x00\x00' 437 ) 438) 439assert bytes(pkt) == b'\x00\x00\x00\x03DIR\x00\x00\x00\x00\x04DIR_NAME\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x02\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x02\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\tLINK_NAME\x00\x00\x00' 440 441 442= Built NFS Replies vs Raw Strings 443 444pkt = GETATTR_Reply( 445 status=0, 446 attributes=Fattr3( 447 type='NF3DIR', 448 mode=0o755, 449 nlink=1, 450 uid=2, 451 gid=3, 452 size=0xffffffffffffffff, 453 used=0xaaaaaaaaaaaaaaaa, 454 rdev=[4, 5], 455 fsid=0xbbbbbbbbbbbbbbbb, 456 fileid=0xcccccccccccccccc, 457 atime_s=0xdddddddd, 458 atime_ns=0xeeeeeeee, 459 mtime_s=0xffffffff, 460 mtime_ns=0x11111111, 461 ctime_s=0x22222222, 462 ctime_ns=0x33333333 463 ) 464) 465assert bytes(pkt) == b'\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333' 466 467pkt = LOOKUP_Reply( 468 status='NFS3_OK', 469 filehandle=File_Object( 470 length=4, 471 fh='file' 472 ), 473 af_file=1, 474 file_attributes=Fattr3( 475 type='NF3REG', 476 mode=0o755, 477 nlink=1, 478 uid=2, 479 gid=3, 480 size=0xffffffffffffffff, 481 used=0xaaaaaaaaaaaaaaaa, 482 rdev=[4, 5], 483 fsid=0xbbbbbbbbbbbbbbbb, 484 fileid=0xcccccccccccccccc, 485 atime_s=0xdddddddd, 486 atime_ns=0xeeeeeeee, 487 mtime_s=0xffffffff, 488 mtime_ns=0x11111111, 489 ctime_s=0x22222222, 490 ctime_ns=0x33333333 491 ), 492 af_dir=1, 493 dir_attributes=Fattr3( 494 type='NF3DIR', 495 mode=0o755, 496 nlink=1, 497 uid=2, 498 gid=3, 499 size=0xffffffffffffffff, 500 used=0xaaaaaaaaaaaaaaaa, 501 rdev=[4, 5], 502 fsid=0xbbbbbbbbbbbbbbbb, 503 fileid=0xcccccccccccccccc, 504 atime_s=0xdddddddd, 505 atime_ns=0xeeeeeeee, 506 mtime_s=0xffffffff, 507 mtime_ns=0x11111111, 508 ctime_s=0x22222222, 509 ctime_ns=0x33333333 510 ) 511) 512assert bytes(pkt) == b'\x00\x00\x00\x00\x00\x00\x00\x04file\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333' 513 514pkt = FSINFO_Reply( 515 status=0, 516 attributes_follow=1, 517 attributes=Fattr3( 518 type='NF3REG', 519 mode=0o755, 520 nlink=1, 521 uid=2, 522 gid=3, 523 size=0xffffffffffffffff, 524 used=0xaaaaaaaaaaaaaaaa, 525 rdev=[4, 5], 526 fsid=0xbbbbbbbbbbbbbbbb, 527 fileid=0xcccccccccccccccc, 528 atime_s=0xdddddddd, 529 atime_ns=0xeeeeeeee, 530 mtime_s=0xffffffff, 531 mtime_ns=0x11111111, 532 ctime_s=0x22222222, 533 ctime_ns=0x33333333 534 ), 535 rtmax=1, 536 rtpref=2, 537 rtmult=3, 538 wtmax=4, 539 wtpref=5, 540 wtmult=6, 541 dtpref=7, 542 maxfilesize=0xa, 543 timedelta_s=0xb, 544 timedelta_ns=0xc, 545 properties=0xd 546) 547assert bytes(pkt) == b'\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x0b\x00\x00\x00\x0c\x00\x00\x00\r' 548 549pkt = PATHCONF_Reply( 550 status=0, 551 attributes_follow=1, 552 attributes=Fattr3( 553 type='NF3DIR', 554 mode=0o755, 555 nlink=1, 556 uid=2, 557 gid=3, 558 size=0xffffffffffffffff, 559 used=0xaaaaaaaaaaaaaaaa, 560 rdev=[4, 5], 561 fsid=0xbbbbbbbbbbbbbbbb, 562 fileid=0xcccccccccccccccc, 563 atime_s=0xdddddddd, 564 atime_ns=0xeeeeeeee, 565 mtime_s=0xffffffff, 566 mtime_ns=0x11111111, 567 ctime_s=0x22222222, 568 ctime_ns=0x33333333 569 ), 570 linkmax=1, 571 name_max=2, 572 no_trunc='YES', 573 chown_restricted='YES', 574 case_insensitive='YES', 575 case_preserving='YES' 576) 577assert bytes(pkt) == b'\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01' 578 579pkt = ACCESS_Reply( 580 status=0, 581 attributes_follow=1, 582 attributes=Fattr3( 583 type='NF3REG', 584 mode=0o755, 585 nlink=1, 586 uid=2, 587 gid=3, 588 size=0xffffffffffffffff, 589 used=0xaaaaaaaaaaaaaaaa, 590 rdev=[4, 5], 591 fsid=0xbbbbbbbbbbbbbbbb, 592 fileid=0xcccccccccccccccc, 593 atime_s=0xdddddddd, 594 atime_ns=0xeeeeeeee, 595 mtime_s=0xffffffff, 596 mtime_ns=0x11111111, 597 ctime_s=0x22222222, 598 ctime_ns=0x33333333 599 ), 600 access_rights=10 601) 602assert bytes(pkt) == b'\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333\x00\x00\x00\n' 603 604pkt = READDIRPLUS_Reply(status=0, attributes_follow=1, 605 attributes=Fattr3(type='NF3DIR', mode=0o755, nlink=1, uid=2, 606 gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, 607 rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, 608 atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, 609 mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333), 610 verifier=0xa, value_follows=1, 611 files=[File_From_Dir_Plus(fileid=0xa, 612 filename=Object_Name(length=5, _name='file1', fill='\x00\x00\x00'), 613 cookie=0xb, attributes_follow=1, 614 attributes=Fattr3(type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, 615 size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, 616 rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, 617 fileid=0xcccccccccccccccc, atime_s=0xdddddddd, 618 atime_ns=0xeeeeeeee, mtime_s=0xffffffff, 619 mtime_ns=0x11111111, ctime_s=0x22222222, 620 ctime_ns=0x33333333), 621 handle_follows=1, filehandle=File_Object(length=3, fh='fh1', fill='\x00'), 622 value_follows=1), 623 File_From_Dir_Plus(fileid=0xb, filename=Object_Name(length=5, _name='file2', fill='\x00\x00\x00'), 624 cookie=0xc, attributes_follow=1, attributes=Fattr3(type='NF3REG', mode=0o755, nlink=1, uid=2, 625 gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, 626 fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, 627 mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333), handle_follows=1, 628 filehandle=File_Object(length=3, fh='fh2', fill='\x00'), value_follows=0) 629 ], eof=1) 630assert bytes(pkt) == b'\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x05file1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333\x00\x00\x00\x01\x00\x00\x00\x03fh1\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x05file2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333\x00\x00\x00\x01\x00\x00\x00\x03fh2\x00\x00\x00\x00\x00\x00\x00\x00\x01' 631 632pkt = WRITE_Reply( 633 status=0, 634 af_before=1, 635 attributes_before=WCC_Attr( 636 size=0xa, 637 mtime_s=0xffffffff, 638 mtime_ns=0xeeeeeeee, 639 ctime_s=0xdddddddd, 640 ctime_ns=0xcccccccc 641 ), 642 af_after=1, 643 attributes_after=Fattr3( 644 type='NF3REG', 645 mode=0o755, 646 nlink=1, 647 uid=2, 648 gid=3, 649 size=0xffffffffffffffff, 650 used=0xaaaaaaaaaaaaaaaa, 651 rdev=[4, 5], 652 fsid=0xbbbbbbbbbbbbbbbb, 653 fileid=0xcccccccccccccccc, 654 atime_s=0xdddddddd, 655 atime_ns=0xeeeeeeee, 656 mtime_s=0xffffffff, 657 mtime_ns=0x11111111, 658 ctime_s=0x22222222, 659 ctime_ns=0x33333333 660 ), 661 count=0xffffffff, 662 committed='STABLE', 663 verifier=0xffffffffffffffff 664) 665assert bytes(pkt) == b'\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\xff\xff\xff\xff\xee\xee\xee\xee\xdd\xdd\xdd\xdd\xcc\xcc\xcc\xcc\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333\xff\xff\xff\xff\x00\x00\x00\x01\xff\xff\xff\xff\xff\xff\xff\xff' 666 667pkt = COMMIT_Reply( 668 status=0, 669 af_before=1, 670 attributes_before=WCC_Attr( 671 size=0xa, 672 mtime_s=0xffffffff, 673 mtime_ns=0xeeeeeeee, 674 ctime_s=0xdddddddd, 675 ctime_ns=0xcccccccc 676 ), 677 af_after=1, 678 attributes_after=Fattr3( 679 type='NF3REG', 680 mode=0o755, 681 nlink=1, 682 uid=2, 683 gid=3, 684 size=0xffffffffffffffff, 685 used=0xaaaaaaaaaaaaaaaa, 686 rdev=[4, 5], 687 fsid=0xbbbbbbbbbbbbbbbb, 688 fileid=0xcccccccccccccccc, 689 atime_s=0xdddddddd, 690 atime_ns=0xeeeeeeee, 691 mtime_s=0xffffffff, 692 mtime_ns=0x11111111, 693 ctime_s=0x22222222, 694 ctime_ns=0x33333333 695 ), 696 verifier=0xffffffffffffffff 697) 698assert bytes(pkt) == b'\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\xff\xff\xff\xff\xee\xee\xee\xee\xdd\xdd\xdd\xdd\xcc\xcc\xcc\xcc\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333\xff\xff\xff\xff\xff\xff\xff\xff' 699 700pkt = SETATTR_Reply( 701 status=0, 702 af_before=1, 703 attributes_before=WCC_Attr( 704 size=0xa, 705 mtime_s=0xffffffff, 706 mtime_ns=0xeeeeeeee, 707 ctime_s=0xdddddddd, 708 ctime_ns=0xcccccccc 709 ), 710 af_after=1, 711 attributes_after=Fattr3( 712 type='NF3REG', 713 mode=0o755, 714 nlink=1, 715 uid=2, 716 gid=3, 717 size=0xffffffffffffffff, 718 used=0xaaaaaaaaaaaaaaaa, 719 rdev=[4, 5], 720 fsid=0xbbbbbbbbbbbbbbbb, 721 fileid=0xcccccccccccccccc, 722 atime_s=0xdddddddd, 723 atime_ns=0xeeeeeeee, 724 mtime_s=0xffffffff, 725 mtime_ns=0x11111111, 726 ctime_s=0x22222222, 727 ctime_ns=0x33333333 728 ) 729) 730assert bytes(pkt) == b'\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\xff\xff\xff\xff\xee\xee\xee\xee\xdd\xdd\xdd\xdd\xcc\xcc\xcc\xcc\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333' 731 732pkt = FSSTAT_Reply( 733 status=0, 734 attributes_follow=1, 735 attributes=Fattr3( 736 type='NF3REG', 737 mode=0o755, 738 nlink=1, 739 uid=2, 740 gid=3, 741 size=0xffffffffffffffff, 742 used=0xaaaaaaaaaaaaaaaa, 743 rdev=[4, 5], 744 fsid=0xbbbbbbbbbbbbbbbb, 745 fileid=0xcccccccccccccccc, 746 atime_s=0xdddddddd, 747 atime_ns=0xeeeeeeee, 748 mtime_s=0xffffffff, 749 mtime_ns=0x11111111, 750 ctime_s=0x22222222, 751 ctime_ns=0x33333333 752 ), 753 tbytes=1, 754 fbytes=2, 755 abytes=3, 756 tfiles=4, 757 afiles=5, 758 invarsec=6 759) 760assert bytes(pkt) == b'\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x06' 761 762pkt = CREATE_Reply( 763 status=0, 764 handle_follows=1, 765 filehandle=File_Object( 766 length=4, 767 fh='file' 768 ), 769 attributes_follow=1, 770 attributes=Fattr3( 771 type='NF3REG', 772 mode=0o755, 773 nlink=1, 774 uid=2, 775 gid=3, 776 size=0xffffffffffffffff, 777 used=0xaaaaaaaaaaaaaaaa, 778 rdev=[4, 5], 779 fsid=0xbbbbbbbbbbbbbbbb, 780 fileid=0xcccccccccccccccc, 781 atime_s=0xdddddddd, 782 atime_ns=0xeeeeeeee, 783 mtime_s=0xffffffff, 784 mtime_ns=0x11111111, 785 ctime_s=0x22222222, 786 ctime_ns=0x33333333 787 ), 788 af_before=1, 789 dir_attributes_before=WCC_Attr( 790 size=0xa, 791 mtime_s=0xffffffff, 792 mtime_ns=0xeeeeeeee, 793 ctime_s=0xdddddddd, 794 ctime_ns=0xcccccccc 795 ), 796 af_after=1, 797 dir_attributes_after=Fattr3( 798 type='NF3REG', 799 mode=0o755, 800 nlink=1, 801 uid=2, 802 gid=3, 803 size=0xffffffffffffffff, 804 used=0xaaaaaaaaaaaaaaaa, 805 rdev=[4, 5], 806 fsid=0xbbbbbbbbbbbbbbbb, 807 fileid=0xcccccccccccccccc, 808 atime_s=0xdddddddd, 809 atime_ns=0xeeeeeeee, 810 mtime_s=0xffffffff, 811 mtime_ns=0x11111111, 812 ctime_s=0x22222222, 813 ctime_ns=0x33333333 814 ) 815) 816assert bytes(pkt) == b'\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04file\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\xff\xff\xff\xff\xee\xee\xee\xee\xdd\xdd\xdd\xdd\xcc\xcc\xcc\xcc\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333' 817 818pkt = REMOVE_Reply( 819 status=0, 820 af_before=1, 821 attributes_before=WCC_Attr( 822 size=0xa, 823 mtime_s=0xffffffff, 824 mtime_ns=0xeeeeeeee, 825 ctime_s=0xdddddddd, 826 ctime_ns=0xcccccccc 827 ), 828 af_after=1, 829 attributes_after=Fattr3( 830 type='NF3REG', 831 mode=0o755, 832 nlink=1, 833 uid=2, 834 gid=3, 835 size=0xffffffffffffffff, 836 used=0xaaaaaaaaaaaaaaaa, 837 rdev=[4, 5], 838 fsid=0xbbbbbbbbbbbbbbbb, 839 fileid=0xcccccccccccccccc, 840 atime_s=0xdddddddd, 841 atime_ns=0xeeeeeeee, 842 mtime_s=0xffffffff, 843 mtime_ns=0x11111111, 844 ctime_s=0x22222222, 845 ctime_ns=0x33333333 846 ) 847) 848assert bytes(pkt) == b'\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\xff\xff\xff\xff\xee\xee\xee\xee\xdd\xdd\xdd\xdd\xcc\xcc\xcc\xcc\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333' 849 850pkt = READDIR_Reply( 851 status=0, 852 attributes_follow=1, 853 attributes=Fattr3( 854 type='NF3REG', 855 mode=0o755, 856 nlink=1, 857 uid=2, 858 gid=3, 859 size=0xffffffffffffffff, 860 used=0xaaaaaaaaaaaaaaaa, 861 rdev=[4, 5], 862 fsid=0xbbbbbbbbbbbbbbbb, 863 fileid=0xcccccccccccccccc, 864 atime_s=0xdddddddd, 865 atime_ns=0xeeeeeeee, 866 mtime_s=0xffffffff, 867 mtime_ns=0x11111111, 868 ctime_s=0x22222222, 869 ctime_ns=0x33333333 870 ), 871 verifier=0xffffffffffffffff, 872 value_follows=1, 873 files=[ 874 File_From_Dir( 875 fileid=1, 876 filename=Object_Name( 877 length=5, 878 _name='file1', 879 fill='\x00\x00\x00' 880 ), 881 cookie=0xaaaaaaaaaaaaaaaa, 882 value_follows=0 883 ) 884 ], 885 eof=1 886) 887assert bytes(pkt) == b'\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05file1\x00\x00\x00\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x00\x00\x00\x00\x01' 888 889pkt = RENAME_Reply( 890 status=0, 891 af_before_f=1, 892 attributes_before_f=WCC_Attr( 893 size=0xa, 894 mtime_s=0xffffffff, 895 mtime_ns=0xeeeeeeee, 896 ctime_s=0xdddddddd, 897 ctime_ns=0xcccccccc 898 ), 899 af_after_f=1, 900 attributes_after_f=Fattr3( 901 type='NF3REG', 902 mode=0o755, 903 nlink=1, 904 uid=2, 905 gid=3, 906 size=0xffffffffffffffff, 907 used=0xaaaaaaaaaaaaaaaa, 908 rdev=[4, 5], 909 fsid=0xbbbbbbbbbbbbbbbb, 910 fileid=0xcccccccccccccccc, 911 atime_s=0xdddddddd, 912 atime_ns=0xeeeeeeee, 913 mtime_s=0xffffffff, 914 mtime_ns=0x11111111, 915 ctime_s=0x22222222, 916 ctime_ns=0x33333333 917 ), 918 af_before_t=1, 919 attributes_before_t=WCC_Attr( 920 size=0xa, 921 mtime_s=0xffffffff, 922 mtime_ns=0xeeeeeeee, 923 ctime_s=0xdddddddd, 924 ctime_ns=0xcccccccc 925 ), 926 af_after_t=1, 927 attributes_after_t=Fattr3( 928 type='NF3REG', 929 mode=0o755, 930 nlink=1, 931 uid=2, 932 gid=3, 933 size=0xffffffffffffffff, 934 used=0xaaaaaaaaaaaaaaaa, 935 rdev=[4, 5], 936 fsid=0xbbbbbbbbbbbbbbbb, 937 fileid=0xcccccccccccccccc, 938 atime_s=0xdddddddd, 939 atime_ns=0xeeeeeeee, 940 mtime_s=0xffffffff, 941 mtime_ns=0x11111111, 942 ctime_s=0x22222222, 943 ctime_ns=0x33333333 944 ) 945) 946assert bytes(pkt) == b'\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\xff\xff\xff\xff\xee\xee\xee\xee\xdd\xdd\xdd\xdd\xcc\xcc\xcc\xcc\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\xff\xff\xff\xff\xee\xee\xee\xee\xdd\xdd\xdd\xdd\xcc\xcc\xcc\xcc\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333' 947 948pkt = LINK_Reply( 949 status=0, 950 af_file=1, 951 file_attributes=Fattr3( 952 type='NF3REG', 953 mode=0o755, 954 nlink=1, 955 uid=2, 956 gid=3, 957 size=0xffffffffffffffff, 958 used=0xaaaaaaaaaaaaaaaa, 959 rdev=[4, 5], 960 fsid=0xbbbbbbbbbbbbbbbb, 961 fileid=0xcccccccccccccccc, 962 atime_s=0xdddddddd, 963 atime_ns=0xeeeeeeee, 964 mtime_s=0xffffffff, 965 mtime_ns=0x11111111, 966 ctime_s=0x22222222, 967 ctime_ns=0x33333333 968 ), 969 af_link_before=1, 970 link_attributes_before=WCC_Attr( 971 size=0xa, 972 mtime_s=0xffffffff, 973 mtime_ns=0xeeeeeeee, 974 ctime_s=0xdddddddd, 975 ctime_ns=0xcccccccc 976 ), 977 af_link_after=1, 978 link_attributes_after=Fattr3( 979 type='NF3REG', 980 mode=0o755, 981 nlink=1, 982 uid=2, 983 gid=3, 984 size=0xffffffffffffffff, 985 used=0xaaaaaaaaaaaaaaaa, 986 rdev=[4, 5], 987 fsid=0xbbbbbbbbbbbbbbbb, 988 fileid=0xcccccccccccccccc, 989 atime_s=0xdddddddd, 990 atime_ns=0xeeeeeeee, 991 mtime_s=0xffffffff, 992 mtime_ns=0x11111111, 993 ctime_s=0x22222222, 994 ctime_ns=0x33333333 995 ) 996) 997assert bytes(pkt) == b'\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\xff\xff\xff\xff\xee\xee\xee\xee\xdd\xdd\xdd\xdd\xcc\xcc\xcc\xcc\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333' 998 999pkt = RMDIR_Reply( 1000 status=0, 1001 af_before=1, 1002 attributes_before=WCC_Attr( 1003 size=0xa, 1004 mtime_s=0xffffffff, 1005 mtime_ns=0xeeeeeeee, 1006 ctime_s=0xdddddddd, 1007 ctime_ns=0xcccccccc 1008 ), 1009 af_after=1, 1010 attributes_after=Fattr3( 1011 type='NF3REG', 1012 mode=0o755, 1013 nlink=1, 1014 uid=2, 1015 gid=3, 1016 size=0xffffffffffffffff, 1017 used=0xaaaaaaaaaaaaaaaa, 1018 rdev=[4, 5], 1019 fsid=0xbbbbbbbbbbbbbbbb, 1020 fileid=0xcccccccccccccccc, 1021 atime_s=0xdddddddd, 1022 atime_ns=0xeeeeeeee, 1023 mtime_s=0xffffffff, 1024 mtime_ns=0x11111111, 1025 ctime_s=0x22222222, 1026 ctime_ns=0x33333333 1027 ) 1028) 1029assert bytes(pkt) == b'\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\xff\xff\xff\xff\xee\xee\xee\xee\xdd\xdd\xdd\xdd\xcc\xcc\xcc\xcc\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333' 1030 1031pkt = READLINK_Reply( 1032 status=0, 1033 attributes_follow=1, 1034 attributes=Fattr3( 1035 type='NF3REG', 1036 mode=0o755, 1037 nlink=1, 1038 uid=2, 1039 gid=3, 1040 size=0xffffffffffffffff, 1041 used=0xaaaaaaaaaaaaaaaa, 1042 rdev=[4, 5], 1043 fsid=0xbbbbbbbbbbbbbbbb, 1044 fileid=0xcccccccccccccccc, 1045 atime_s=0xdddddddd, 1046 atime_ns=0xeeeeeeee, 1047 mtime_s=0xffffffff, 1048 mtime_ns=0x11111111, 1049 ctime_s=0x22222222, 1050 ctime_ns=0x33333333 1051 ), 1052 filename=Object_Name( 1053 length=4, 1054 _name='file' 1055 ) 1056) 1057assert bytes(pkt) == b'\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333\x00\x00\x00\x04file' 1058 1059pkt = READ_Reply( 1060 status=0, 1061 attributes_follow=1, 1062 attributes=Fattr3( 1063 type='NF3REG', 1064 mode=0o755, 1065 nlink=1, 1066 uid=2, 1067 gid=3, 1068 size=0xffffffffffffffff, 1069 used=0xaaaaaaaaaaaaaaaa, 1070 rdev=[4, 5], 1071 fsid=0xbbbbbbbbbbbbbbbb, 1072 fileid=0xcccccccccccccccc, 1073 atime_s=0xdddddddd, 1074 atime_ns=0xeeeeeeee, 1075 mtime_s=0xffffffff, 1076 mtime_ns=0x11111111, 1077 ctime_s=0x22222222, 1078 ctime_ns=0x33333333 1079 ), 1080 count=8, 1081 eof=1, 1082 data_length=8, 1083 data='\x00\x01\x02\x03\x04\x05\x06\x07' 1084) 1085assert bytes(pkt) == b'\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333\x00\x00\x00\x08\x00\x00\x00\x01\x00\x00\x00\x08\x00\x01\x02\x03\x04\x05\x06\x07' 1086 1087pkt = MKDIR_Reply( 1088 status=0, 1089 handle_follows=1, 1090 filehandle=File_Object( 1091 length=4, 1092 fh='file' 1093 ), 1094 attributes_follow=1, 1095 attributes=Fattr3( 1096 type='NF3REG', 1097 mode=0o755, 1098 nlink=1, 1099 uid=2, 1100 gid=3, 1101 size=0xffffffffffffffff, 1102 used=0xaaaaaaaaaaaaaaaa, 1103 rdev=[4, 5], 1104 fsid=0xbbbbbbbbbbbbbbbb, 1105 fileid=0xcccccccccccccccc, 1106 atime_s=0xdddddddd, 1107 atime_ns=0xeeeeeeee, 1108 mtime_s=0xffffffff, 1109 mtime_ns=0x11111111, 1110 ctime_s=0x22222222, 1111 ctime_ns=0x33333333 1112 ), 1113 af_before=1, 1114 dir_attributes_before=WCC_Attr( 1115 size=0xa, 1116 mtime_s=0xffffffff, 1117 mtime_ns=0xeeeeeeee, 1118 ctime_s=0xdddddddd, 1119 ctime_ns=0xcccccccc 1120 ), 1121 af_after=1, 1122 dir_attributes_after=Fattr3( 1123 type='NF3REG', 1124 mode=0o755, 1125 nlink=1, 1126 uid=2, 1127 gid=3, 1128 size=0xffffffffffffffff, 1129 used=0xaaaaaaaaaaaaaaaa, 1130 rdev=[4, 5], 1131 fsid=0xbbbbbbbbbbbbbbbb, 1132 fileid=0xcccccccccccccccc, 1133 atime_s=0xdddddddd, 1134 atime_ns=0xeeeeeeee, 1135 mtime_s=0xffffffff, 1136 mtime_ns=0x11111111, 1137 ctime_s=0x22222222, 1138 ctime_ns=0x33333333 1139 ) 1140) 1141assert bytes(pkt) == b'\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04file\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\xff\xff\xff\xff\xee\xee\xee\xee\xdd\xdd\xdd\xdd\xcc\xcc\xcc\xcc\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333' 1142 1143pkt = SYMLINK_Reply( 1144 status=0, 1145 handle_follows=1, 1146 filehandle=File_Object( 1147 length=4, 1148 fh='file' 1149 ), 1150 attributes_follow=1, 1151 attributes=Fattr3( 1152 type='NF3REG', 1153 mode=0o755, 1154 nlink=1, 1155 uid=2, 1156 gid=3, 1157 size=0xffffffffffffffff, 1158 used=0xaaaaaaaaaaaaaaaa, 1159 rdev=[4, 5], 1160 fsid=0xbbbbbbbbbbbbbbbb, 1161 fileid=0xcccccccccccccccc, 1162 atime_s=0xdddddddd, 1163 atime_ns=0xeeeeeeee, 1164 mtime_s=0xffffffff, 1165 mtime_ns=0x11111111, 1166 ctime_s=0x22222222, 1167 ctime_ns=0x33333333 1168 ), 1169 af_before=1, 1170 dir_attributes_before=WCC_Attr( 1171 size=0xa, 1172 mtime_s=0xffffffff, 1173 mtime_ns=0xeeeeeeee, 1174 ctime_s=0xdddddddd, 1175 ctime_ns=0xcccccccc 1176 ), 1177 af_after=1, 1178 dir_attributes_after=Fattr3( 1179 type='NF3REG', 1180 mode=0o755, 1181 nlink=1, 1182 uid=2, 1183 gid=3, 1184 size=0xffffffffffffffff, 1185 used=0xaaaaaaaaaaaaaaaa, 1186 rdev=[4, 5], 1187 fsid=0xbbbbbbbbbbbbbbbb, 1188 fileid=0xcccccccccccccccc, 1189 atime_s=0xdddddddd, 1190 atime_ns=0xeeeeeeee, 1191 mtime_s=0xffffffff, 1192 mtime_ns=0x11111111, 1193 ctime_s=0x22222222, 1194 ctime_ns=0x33333333 1195 ) 1196) 1197assert bytes(pkt) == b'\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04file\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\xff\xff\xff\xff\xee\xee\xee\xee\xdd\xdd\xdd\xdd\xcc\xcc\xcc\xcc\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x01\xed\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x00\x00\x00\x04\x00\x00\x00\x05\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd\xee\xee\xee\xee\xff\xff\xff\xff\x11\x11\x11\x11""""3333' 1198