% Tests for nfs module ############ ############ + Packet Creation Tests = Create subpackets Fattr3() File_Object() Object_Name() WCC_Attr() File_From_Dir_Plus() File_From_Dir() Sattr3() = Create NFS Calls NULL_Call() GETATTR_Call() SETATTR_Call() LOOKUP_Call() ACCESS_Call() READLINK_Call() READ_Call() WRITE_Call() CREATE_Call() MKDIR_Call() SYMLINK_Call() REMOVE_Call() RMDIR_Call() RENAME_Call() LINK_Call() READDIR_Call() READDIRPLUS_Call() FSSTAT_Call() FSINFO_Call() PATHCONF_Call() COMMIT_Call() = Create NFS Successful replies GETATTR_Reply(status=0) SETATTR_Reply(status=0) LOOKUP_Reply(status=0) ACCESS_Reply(status=0) READLINK_Reply(status=0) READ_Reply(status=0) WRITE_Reply(status=0) CREATE_Reply(status=0) MKDIR_Reply(status=0) SYMLINK_Reply(status=0) REMOVE_Reply(status=0) RMDIR_Reply(status=0) RENAME_Reply(status=0) LINK_Reply(status=0) READDIR_Reply(status=0) READDIRPLUS_Reply(status=0) FSSTAT_Reply(status=0) FSINFO_Reply(status=0) PATHCONF_Reply(status=0) COMMIT_Reply(status=0) = Create NFS Failed replies GETATTR_Reply(status=1) SETATTR_Reply(status=1) LOOKUP_Reply(status=1) ACCESS_Reply(status=1) READLINK_Reply(status=1) READ_Reply(status=1) WRITE_Reply(status=1) CREATE_Reply(status=1) MKDIR_Reply(status=1) SYMLINK_Reply(status=1) REMOVE_Reply(status=1) RMDIR_Reply(status=1) RENAME_Reply(status=1) LINK_Reply(status=1) READDIR_Reply(status=1) READDIRPLUS_Reply(status=1) FSSTAT_Reply(status=1) FSINFO_Reply(status=1) PATHCONF_Reply(status=1) COMMIT_Reply(status=1) + Test RPC Call layer bindings = Layer Bindings for NFS Calls from scapy.contrib.oncrpc import * pkt = RPC()/RPC_Call()/NULL_Call() assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 0) pkt = RPC()/RPC_Call()/GETATTR_Call() assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 1) pkt = RPC()/RPC_Call()/SETATTR_Call() assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 2) pkt = RPC()/RPC_Call()/LOOKUP_Call() assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 3) pkt = RPC()/RPC_Call()/ACCESS_Call() assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 4) pkt = RPC()/RPC_Call()/READLINK_Call() assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 5) pkt = RPC()/RPC_Call()/READ_Call() assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 6) pkt = RPC()/RPC_Call()/WRITE_Call() assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 7) pkt = RPC()/RPC_Call()/CREATE_Call() assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 8) pkt = RPC()/RPC_Call()/MKDIR_Call() assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 9) pkt = RPC()/RPC_Call()/SYMLINK_Call() assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 10) pkt = RPC()/RPC_Call()/REMOVE_Call() assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 12) pkt = RPC()/RPC_Call()/RMDIR_Call() assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 13) pkt = RPC()/RPC_Call()/RENAME_Call() assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 14) pkt = RPC()/RPC_Call()/LINK_Call() assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 15) pkt = RPC()/RPC_Call()/READDIR_Call() assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 16) pkt = RPC()/RPC_Call()/READDIRPLUS_Call() assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 17) pkt = RPC()/RPC_Call()/FSSTAT_Call() assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 18) pkt = RPC()/RPC_Call()/FSINFO_Call() assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 19) pkt = RPC()/RPC_Call()/PATHCONF_Call() assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 20) pkt = RPC()/RPC_Call()/COMMIT_Call() assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100003, 3, 21) = Layer Bindings for NFS Replies from scapy.contrib.oncrpc import * pkt = RPC()/RPC_Reply()/NULL_Reply() assert pkt.mtype==1 pkt = RPC()/RPC_Reply()/GETATTR_Reply() assert pkt.mtype==1 pkt = RPC()/RPC_Reply()/SETATTR_Reply() assert pkt.mtype==1 pkt = RPC()/RPC_Reply()/LOOKUP_Reply() assert pkt.mtype==1 pkt = RPC()/RPC_Reply()/ACCESS_Reply() assert pkt.mtype==1 pkt = RPC()/RPC_Reply()/READLINK_Reply() assert pkt.mtype==1 pkt = RPC()/RPC_Reply()/READ_Reply() assert pkt.mtype==1 pkt = RPC()/RPC_Reply()/WRITE_Reply() assert pkt.mtype==1 pkt = RPC()/RPC_Reply()/CREATE_Reply() assert pkt.mtype==1 pkt = RPC()/RPC_Reply()/MKDIR_Reply() assert pkt.mtype==1 pkt = RPC()/RPC_Reply()/SYMLINK_Reply() assert pkt.mtype==1 pkt = RPC()/RPC_Reply()/REMOVE_Reply() assert pkt.mtype==1 pkt = RPC()/RPC_Reply()/RMDIR_Reply() assert pkt.mtype==1 pkt = RPC()/RPC_Reply()/RENAME_Reply() assert pkt.mtype==1 pkt = RPC()/RPC_Reply()/LINK_Reply() assert pkt.mtype==1 pkt = RPC()/RPC_Reply()/READDIR_Reply() assert pkt.mtype==1 pkt = RPC()/RPC_Reply()/READDIRPLUS_Reply() assert pkt.mtype==1 pkt = RPC()/RPC_Reply()/FSSTAT_Reply() assert pkt.mtype==1 pkt = RPC()/RPC_Reply()/FSINFO_Reply() assert pkt.mtype==1 pkt = RPC()/RPC_Reply()/PATHCONF_Reply() assert pkt.mtype==1 pkt = RPC()/RPC_Reply()/COMMIT_Reply() assert pkt.mtype==1 + Test Built Packets Against Raw Strings = Built NFS Calls vs Raw Strings pkt = GETATTR_Call( filehandle=File_Object( length=4, fh='file' ) ) assert bytes(pkt) == b'\x00\x00\x00\x04file' pkt = LOOKUP_Call( dir=File_Object( length=3, fh='DIR', fill='\x00' ), filename=Object_Name( length=4, _name='File' ) ) assert bytes(pkt) == b'\x00\x00\x00\x03DIR\x00\x00\x00\x00\x04File' pkt = FSINFO_Call( filehandle=File_Object( length=4, fh='file' ) ) assert bytes(pkt) == b'\x00\x00\x00\x04file' pkt = PATHCONF_Call( filehandle=File_Object( length=4, fh='file' ) ) assert bytes(pkt) == b'\x00\x00\x00\x04file' pkt = ACCESS_Call( filehandle=File_Object( length=4, fh='file', ), check_access='READ' ) assert bytes(pkt) == b'\x00\x00\x00\x04file\x00\x00\x00\x01' pkt = READDIRPLUS_Call( filehandle=File_Object( length=4, fh='file' ), cookie=0xffffffffffffffff, verifier=0xaaaaaaaaaaaaaaaa, dircount=512, maxcount=4096 ) assert 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' pkt = WRITE_Call( filehandle=File_Object( length=4, fh='file', ), offset=0xffffffffffffffff, count=0xaaaaaaaa, stable='UNSTABLE', length=8, contents='\x00\x01\x02\x03\x04\x05\x06\x07' ) assert 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' pkt = COMMIT_Call( filehandle=File_Object( length=4, fh='file' ), offset=0xffffffffffffffff, count=0xaaaaaaaa ) assert bytes(pkt) == b'\x00\x00\x00\x04file\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa' pkt = SETATTR_Call( filehandle=File_Object( length=4, fh='file' ), attributes=Sattr3( set_mode='SET', mode=0o755, set_uid='SET', uid=1, set_gid='SET', gid=1, set_size='SET', size=0xffffffffffffffff, set_atime='CLIENT TIME', atime_s=0xffffffff, atime_ns=0xffffffff, set_mtime='CLIENT TIME', mtime_s=0xaaaaaaaa, mtime_ns=0xaaaaaaaa ), check=0xffffffff ) assert 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' pkt = FSSTAT_Call( filehandle=File_Object( length=4, fh='file' ) ) assert bytes(pkt) == b'\x00\x00\x00\x04file' pkt = CREATE_Call( dir=File_Object( length=3, fh='DIR', fill='\x00' ), filename=Object_Name( length=4, _name='File' ), create_mode='EXCLUSIVE', verifier=0xffffffffffffffff ) assert bytes(pkt) == b'\x00\x00\x00\x03DIR\x00\x00\x00\x00\x04File\x00\x00\x00\x02\xff\xff\xff\xff\xff\xff\xff\xff' pkt = REMOVE_Call( dir=File_Object( length=3, fh='DIR', fill='\x00' ), filename=Object_Name( length=4, _name='File' ) ) assert bytes(pkt) == b'\x00\x00\x00\x03DIR\x00\x00\x00\x00\x04File' pkt = READDIR_Call( filehandle=File_Object( length=4, fh='file' ), cookie=0xffffffffffffffff, verifier=0xaaaaaaaaaaaaaaaa, count=0xabcdef12 ) assert 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' pkt = RENAME_Call( dir_from=File_Object( length=8, fh='DIR_FROM' ), name_from=Object_Name( length=9, _name='NAME_FROM', fill='\x00\x00\x00' ), dir_to=File_Object( length=6, fh='DIR_TO', fill='\x00\x00' ), name_to=Object_Name( length=7, _name='NAME_TO', fill='\x00' ) ) assert 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' pkt = LINK_Call( filehandle=File_Object( length=4, fh='file' ), link_dir=File_Object( length=8, fh='LINK_DIR' ), link_name=Object_Name( length=9, _name='LINK_NAME', fill='\x00\x00\x00' ) ) assert bytes(pkt) == b'\x00\x00\x00\x04file\x00\x00\x00\x08LINK_DIR\x00\x00\x00\tLINK_NAME\x00\x00\x00' pkt = RMDIR_Call( dir=File_Object( length=3, fh='DIR', fill='\x00' ), filename=Object_Name( length=4, _name='File' ) ) assert bytes(pkt) == b'\x00\x00\x00\x03DIR\x00\x00\x00\x00\x04File' pkt = READLINK_Call( filehandle=File_Object( length=4, fh='file' ) ) assert bytes(pkt) == b'\x00\x00\x00\x04file' pkt = READ_Call( filehandle=File_Object( length=4, fh='file' ), offset=0xffffffffffffffff, count=0xaaaaaaaa ) assert bytes(pkt) == b'\x00\x00\x00\x04file\xff\xff\xff\xff\xff\xff\xff\xff\xaa\xaa\xaa\xaa' pkt = MKDIR_Call( dir=File_Object( length=3, fh='DIR', fill='\x00' ), dir_name=Object_Name( length=4, _name='DIR_NAME' ), attributes=Sattr3( set_mode='SET', mode=0o755, set_uid='SET', uid=1, set_gid='SET', gid=1, set_size='SET', size=0xffffffffffffffff, set_atime='CLIENT TIME', atime_s=0xffffffff, atime_ns=0xffffffff, set_mtime='CLIENT TIME', mtime_s=0xaaaaaaaa, mtime_ns=0xaaaaaaaa ) ) assert 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' pkt = SYMLINK_Call( dir=File_Object( length=3, fh='DIR', fill='\x00' ), dir_name=Object_Name( length=4, _name='DIR_NAME' ), attributes=Sattr3( set_mode='SET', mode=0o755, set_uid='SET', uid=1, set_gid='SET', gid=1, set_size='SET', size=0xffffffffffffffff, set_atime='CLIENT TIME', atime_s=0xffffffff, atime_ns=0xffffffff, set_mtime='CLIENT TIME', mtime_s=0xaaaaaaaa, mtime_ns=0xaaaaaaaa ), link_name=Object_Name( length=9, _name='LINK_NAME', fill='\x00\x00\x00' ) ) assert 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' = Built NFS Replies vs Raw Strings pkt = GETATTR_Reply( status=0, attributes=Fattr3( type='NF3DIR', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ) ) assert 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' pkt = LOOKUP_Reply( status='NFS3_OK', filehandle=File_Object( length=4, fh='file' ), af_file=1, file_attributes=Fattr3( type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ), af_dir=1, dir_attributes=Fattr3( type='NF3DIR', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ) ) assert 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' pkt = FSINFO_Reply( status=0, attributes_follow=1, attributes=Fattr3( type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ), rtmax=1, rtpref=2, rtmult=3, wtmax=4, wtpref=5, wtmult=6, dtpref=7, maxfilesize=0xa, timedelta_s=0xb, timedelta_ns=0xc, properties=0xd ) assert 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' pkt = PATHCONF_Reply( status=0, attributes_follow=1, attributes=Fattr3( type='NF3DIR', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ), linkmax=1, name_max=2, no_trunc='YES', chown_restricted='YES', case_insensitive='YES', case_preserving='YES' ) assert 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' pkt = ACCESS_Reply( status=0, attributes_follow=1, attributes=Fattr3( type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ), access_rights=10 ) assert 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' pkt = READDIRPLUS_Reply(status=0, attributes_follow=1, attributes=Fattr3(type='NF3DIR', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333), verifier=0xa, value_follows=1, files=[File_From_Dir_Plus(fileid=0xa, filename=Object_Name(length=5, _name='file1', fill='\x00\x00\x00'), cookie=0xb, attributes_follow=1, attributes=Fattr3(type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333), handle_follows=1, filehandle=File_Object(length=3, fh='fh1', fill='\x00'), value_follows=1), File_From_Dir_Plus(fileid=0xb, filename=Object_Name(length=5, _name='file2', fill='\x00\x00\x00'), cookie=0xc, attributes_follow=1, attributes=Fattr3(type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333), handle_follows=1, filehandle=File_Object(length=3, fh='fh2', fill='\x00'), value_follows=0) ], eof=1) assert 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' pkt = WRITE_Reply( status=0, af_before=1, attributes_before=WCC_Attr( size=0xa, mtime_s=0xffffffff, mtime_ns=0xeeeeeeee, ctime_s=0xdddddddd, ctime_ns=0xcccccccc ), af_after=1, attributes_after=Fattr3( type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ), count=0xffffffff, committed='STABLE', verifier=0xffffffffffffffff ) assert 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' pkt = COMMIT_Reply( status=0, af_before=1, attributes_before=WCC_Attr( size=0xa, mtime_s=0xffffffff, mtime_ns=0xeeeeeeee, ctime_s=0xdddddddd, ctime_ns=0xcccccccc ), af_after=1, attributes_after=Fattr3( type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ), verifier=0xffffffffffffffff ) assert 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' pkt = SETATTR_Reply( status=0, af_before=1, attributes_before=WCC_Attr( size=0xa, mtime_s=0xffffffff, mtime_ns=0xeeeeeeee, ctime_s=0xdddddddd, ctime_ns=0xcccccccc ), af_after=1, attributes_after=Fattr3( type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ) ) assert 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' pkt = FSSTAT_Reply( status=0, attributes_follow=1, attributes=Fattr3( type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ), tbytes=1, fbytes=2, abytes=3, tfiles=4, afiles=5, invarsec=6 ) assert 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' pkt = CREATE_Reply( status=0, handle_follows=1, filehandle=File_Object( length=4, fh='file' ), attributes_follow=1, attributes=Fattr3( type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ), af_before=1, dir_attributes_before=WCC_Attr( size=0xa, mtime_s=0xffffffff, mtime_ns=0xeeeeeeee, ctime_s=0xdddddddd, ctime_ns=0xcccccccc ), af_after=1, dir_attributes_after=Fattr3( type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ) ) assert 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' pkt = REMOVE_Reply( status=0, af_before=1, attributes_before=WCC_Attr( size=0xa, mtime_s=0xffffffff, mtime_ns=0xeeeeeeee, ctime_s=0xdddddddd, ctime_ns=0xcccccccc ), af_after=1, attributes_after=Fattr3( type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ) ) assert 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' pkt = READDIR_Reply( status=0, attributes_follow=1, attributes=Fattr3( type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ), verifier=0xffffffffffffffff, value_follows=1, files=[ File_From_Dir( fileid=1, filename=Object_Name( length=5, _name='file1', fill='\x00\x00\x00' ), cookie=0xaaaaaaaaaaaaaaaa, value_follows=0 ) ], eof=1 ) assert 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' pkt = RENAME_Reply( status=0, af_before_f=1, attributes_before_f=WCC_Attr( size=0xa, mtime_s=0xffffffff, mtime_ns=0xeeeeeeee, ctime_s=0xdddddddd, ctime_ns=0xcccccccc ), af_after_f=1, attributes_after_f=Fattr3( type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ), af_before_t=1, attributes_before_t=WCC_Attr( size=0xa, mtime_s=0xffffffff, mtime_ns=0xeeeeeeee, ctime_s=0xdddddddd, ctime_ns=0xcccccccc ), af_after_t=1, attributes_after_t=Fattr3( type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ) ) assert 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' pkt = LINK_Reply( status=0, af_file=1, file_attributes=Fattr3( type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ), af_link_before=1, link_attributes_before=WCC_Attr( size=0xa, mtime_s=0xffffffff, mtime_ns=0xeeeeeeee, ctime_s=0xdddddddd, ctime_ns=0xcccccccc ), af_link_after=1, link_attributes_after=Fattr3( type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ) ) assert 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' pkt = RMDIR_Reply( status=0, af_before=1, attributes_before=WCC_Attr( size=0xa, mtime_s=0xffffffff, mtime_ns=0xeeeeeeee, ctime_s=0xdddddddd, ctime_ns=0xcccccccc ), af_after=1, attributes_after=Fattr3( type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ) ) assert 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' pkt = READLINK_Reply( status=0, attributes_follow=1, attributes=Fattr3( type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ), filename=Object_Name( length=4, _name='file' ) ) assert 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' pkt = READ_Reply( status=0, attributes_follow=1, attributes=Fattr3( type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ), count=8, eof=1, data_length=8, data='\x00\x01\x02\x03\x04\x05\x06\x07' ) assert 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' pkt = MKDIR_Reply( status=0, handle_follows=1, filehandle=File_Object( length=4, fh='file' ), attributes_follow=1, attributes=Fattr3( type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ), af_before=1, dir_attributes_before=WCC_Attr( size=0xa, mtime_s=0xffffffff, mtime_ns=0xeeeeeeee, ctime_s=0xdddddddd, ctime_ns=0xcccccccc ), af_after=1, dir_attributes_after=Fattr3( type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ) ) assert 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' pkt = SYMLINK_Reply( status=0, handle_follows=1, filehandle=File_Object( length=4, fh='file' ), attributes_follow=1, attributes=Fattr3( type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ), af_before=1, dir_attributes_before=WCC_Attr( size=0xa, mtime_s=0xffffffff, mtime_ns=0xeeeeeeee, ctime_s=0xdddddddd, ctime_ns=0xcccccccc ), af_after=1, dir_attributes_after=Fattr3( type='NF3REG', mode=0o755, nlink=1, uid=2, gid=3, size=0xffffffffffffffff, used=0xaaaaaaaaaaaaaaaa, rdev=[4, 5], fsid=0xbbbbbbbbbbbbbbbb, fileid=0xcccccccccccccccc, atime_s=0xdddddddd, atime_ns=0xeeeeeeee, mtime_s=0xffffffff, mtime_ns=0x11111111, ctime_s=0x22222222, ctime_ns=0x33333333 ) ) assert 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'