summarylogtreecommitdiffstats
path: root/ncpfs-module.tar.gz
blob: 9abe29715fbfe47f0c5e66cf8ff7453e77c8bf41 (plain)
ofshex dumpascii
0000 6e 63 70 66 73 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ncpfs/..........................
0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0060 00 00 00 00 30 30 30 30 37 35 35 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 ....0000755.0001750.0001750.0000
0080 30 30 30 30 30 30 30 00 31 33 30 35 35 30 30 30 37 30 30 00 30 31 31 31 36 33 00 20 35 00 00 00 0000000.13055000700.011163..5...
00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0100 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...kubax..................
0120 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........kubax..................
0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0200 6e 63 70 66 73 2f 4b 63 6f 6e 66 69 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ncpfs/Kconfig...................
0220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0260 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 ....0000644.0001750.0001750.0000
0280 30 30 31 30 31 33 35 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 32 34 37 31 00 20 30 00 00 00 0010135.13023323142.012471..0...
02a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0300 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...kubax..................
0320 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........kubax..................
0340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0400 23 0a 23 20 4e 43 50 20 46 69 6c 65 73 79 73 74 65 6d 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e #.#.NCP.Filesystem.configuration
0420 0a 23 0a 63 6f 6e 66 69 67 20 4e 43 50 5f 46 53 0a 09 74 72 69 73 74 61 74 65 20 22 4e 43 50 20 .#.config.NCP_FS..tristate."NCP.
0440 66 69 6c 65 20 73 79 73 74 65 6d 20 73 75 70 70 6f 72 74 20 28 74 6f 20 6d 6f 75 6e 74 20 4e 65 file.system.support.(to.mount.Ne
0460 74 57 61 72 65 20 76 6f 6c 75 6d 65 73 29 22 0a 09 64 65 70 65 6e 64 73 20 6f 6e 20 49 50 58 21 tWare.volumes)"..depends.on.IPX!
0480 3d 6e 20 7c 7c 20 49 4e 45 54 0a 09 68 65 6c 70 0a 09 20 20 4e 43 50 20 28 4e 65 74 57 61 72 65 =n.||.INET..help....NCP.(NetWare
04a0 20 43 6f 72 65 20 50 72 6f 74 6f 63 6f 6c 29 20 69 73 20 61 20 70 72 6f 74 6f 63 6f 6c 20 74 68 .Core.Protocol).is.a.protocol.th
04c0 61 74 20 72 75 6e 73 20 6f 76 65 72 20 49 50 58 20 61 6e 64 20 69 73 0a 09 20 20 75 73 65 64 20 at.runs.over.IPX.and.is....used.
04e0 62 79 20 4e 6f 76 65 6c 6c 20 4e 65 74 57 61 72 65 20 63 6c 69 65 6e 74 73 20 74 6f 20 74 61 6c by.Novell.NetWare.clients.to.tal
0500 6b 20 74 6f 20 66 69 6c 65 20 73 65 72 76 65 72 73 2e 20 20 49 74 20 69 73 20 74 6f 0a 09 20 20 k.to.file.servers...It.is.to....
0520 49 50 58 20 77 68 61 74 20 4e 46 53 20 69 73 20 74 6f 20 54 43 50 2f 49 50 2c 20 69 66 20 74 68 IPX.what.NFS.is.to.TCP/IP,.if.th
0540 61 74 20 68 65 6c 70 73 2e 20 20 53 61 79 69 6e 67 20 59 20 68 65 72 65 20 61 6c 6c 6f 77 73 20 at.helps...Saying.Y.here.allows.
0560 79 6f 75 0a 09 20 20 74 6f 20 6d 6f 75 6e 74 20 4e 65 74 57 61 72 65 20 66 69 6c 65 20 73 65 72 you....to.mount.NetWare.file.ser
0580 76 65 72 20 76 6f 6c 75 6d 65 73 20 61 6e 64 20 74 6f 20 61 63 63 65 73 73 20 74 68 65 6d 20 6a ver.volumes.and.to.access.them.j
05a0 75 73 74 20 6c 69 6b 65 0a 09 20 20 61 6e 79 20 6f 74 68 65 72 20 55 6e 69 78 20 64 69 72 65 63 ust.like....any.other.Unix.direc
05c0 74 6f 72 79 2e 20 20 46 6f 72 20 64 65 74 61 69 6c 73 2c 20 70 6c 65 61 73 65 20 72 65 61 64 20 tory...For.details,.please.read.
05e0 74 68 65 20 66 69 6c 65 0a 09 20 20 3c 66 69 6c 65 3a 44 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f the.file....<file:Documentation/
0600 66 69 6c 65 73 79 73 74 65 6d 73 2f 6e 63 70 66 73 2e 74 78 74 3e 20 69 6e 20 74 68 65 20 6b 65 filesystems/ncpfs.txt>.in.the.ke
0620 72 6e 65 6c 20 73 6f 75 72 63 65 20 61 6e 64 0a 09 20 20 74 68 65 20 49 50 58 2d 48 4f 57 54 4f rnel.source.and....the.IPX-HOWTO
0640 20 66 72 6f 6d 20 3c 68 74 74 70 3a 2f 2f 77 77 77 2e 74 6c 64 70 2e 6f 72 67 2f 64 6f 63 73 2e .from.<http://www.tldp.org/docs.
0660 68 74 6d 6c 23 68 6f 77 74 6f 3e 2e 0a 0a 09 20 20 59 6f 75 20 64 6f 20 6e 6f 74 20 68 61 76 65 html#howto>......You.do.not.have
0680 20 74 6f 20 73 61 79 20 59 20 68 65 72 65 20 69 66 20 79 6f 75 20 77 61 6e 74 20 79 6f 75 72 20 .to.say.Y.here.if.you.want.your.
06a0 4c 69 6e 75 78 20 62 6f 78 20 74 6f 20 61 63 74 20 61 73 20 61 0a 09 20 20 66 69 6c 65 20 2a 73 Linux.box.to.act.as.a....file.*s
06c0 65 72 76 65 72 2a 20 66 6f 72 20 4e 6f 76 65 6c 6c 20 4e 65 74 57 61 72 65 20 63 6c 69 65 6e 74 erver*.for.Novell.NetWare.client
06e0 73 2e 0a 0a 09 20 20 47 65 6e 65 72 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 s......General.information.about
0700 20 68 6f 77 20 74 6f 20 63 6f 6e 6e 65 63 74 20 4c 69 6e 75 78 2c 20 57 69 6e 64 6f 77 73 20 6d .how.to.connect.Linux,.Windows.m
0720 61 63 68 69 6e 65 73 20 61 6e 64 0a 09 20 20 4d 61 63 73 20 69 73 20 6f 6e 20 74 68 65 20 57 57 achines.and....Macs.is.on.the.WW
0740 57 20 61 74 20 3c 68 74 74 70 3a 2f 2f 77 77 77 2e 65 61 74 73 2e 63 6f 6d 2f 6c 69 6e 75 78 5f W.at.<http://www.eats.com/linux_
0760 6d 61 63 5f 77 69 6e 2e 68 74 6d 6c 3e 2e 0a 0a 09 20 20 54 6f 20 63 6f 6d 70 69 6c 65 20 74 68 mac_win.html>......To.compile.th
0780 69 73 20 61 73 20 61 20 6d 6f 64 75 6c 65 2c 20 63 68 6f 6f 73 65 20 4d 20 68 65 72 65 3a 20 74 is.as.a.module,.choose.M.here:.t
07a0 68 65 20 6d 6f 64 75 6c 65 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 0a 09 20 20 6e 63 70 66 he.module.will.be.called....ncpf
07c0 73 2e 20 20 53 61 79 20 4e 20 75 6e 6c 65 73 73 20 79 6f 75 20 61 72 65 20 63 6f 6e 6e 65 63 74 s...Say.N.unless.you.are.connect
07e0 65 64 20 74 6f 20 61 20 4e 6f 76 65 6c 6c 20 6e 65 74 77 6f 72 6b 2e 0a 0a 63 6f 6e 66 69 67 20 ed.to.a.Novell.network...config.
0800 4e 43 50 46 53 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 0a 09 62 6f 6f 6c 20 22 50 61 63 6b NCPFS_PACKET_SIGNING..bool."Pack
0820 65 74 20 73 69 67 6e 61 74 75 72 65 73 22 0a 09 64 65 70 65 6e 64 73 20 6f 6e 20 4e 43 50 5f 46 et.signatures"..depends.on.NCP_F
0840 53 0a 09 68 65 6c 70 0a 09 20 20 4e 43 50 20 61 6c 6c 6f 77 73 20 70 61 63 6b 65 74 73 20 74 6f S..help....NCP.allows.packets.to
0860 20 62 65 20 73 69 67 6e 65 64 20 66 6f 72 20 73 74 72 6f 6e 67 65 72 20 73 65 63 75 72 69 74 79 .be.signed.for.stronger.security
0880 2e 20 49 66 20 79 6f 75 20 77 61 6e 74 0a 09 20 20 73 65 63 75 72 69 74 79 2c 20 73 61 79 20 59 ..If.you.want....security,.say.Y
08a0 2e 20 20 4e 6f 72 6d 61 6c 20 75 73 65 72 73 20 63 61 6e 20 6c 65 61 76 65 20 69 74 20 6f 66 66 ...Normal.users.can.leave.it.off
08c0 2e 20 20 54 6f 20 62 65 20 61 62 6c 65 20 74 6f 20 75 73 65 0a 09 20 20 70 61 63 6b 65 74 20 73 ...To.be.able.to.use....packet.s
08e0 69 67 6e 69 6e 67 20 79 6f 75 20 6d 75 73 74 20 75 73 65 20 6e 63 70 66 73 20 3e 20 32 2e 30 2e igning.you.must.use.ncpfs.>.2.0.
0900 31 32 2e 0a 0a 63 6f 6e 66 69 67 20 4e 43 50 46 53 5f 49 4f 43 54 4c 5f 4c 4f 43 4b 49 4e 47 0a 12...config.NCPFS_IOCTL_LOCKING.
0920 09 62 6f 6f 6c 20 22 50 72 6f 70 72 69 65 74 61 72 79 20 66 69 6c 65 20 6c 6f 63 6b 69 6e 67 22 .bool."Proprietary.file.locking"
0940 0a 09 64 65 70 65 6e 64 73 20 6f 6e 20 4e 43 50 5f 46 53 0a 09 68 65 6c 70 0a 09 20 20 41 6c 6c ..depends.on.NCP_FS..help....All
0960 6f 77 73 20 6c 6f 63 6b 69 6e 67 20 6f 66 20 72 65 63 6f 72 64 73 20 6f 6e 20 72 65 6d 6f 74 65 ows.locking.of.records.on.remote
0980 20 76 6f 6c 75 6d 65 73 2e 20 20 53 61 79 20 4e 20 75 6e 6c 65 73 73 20 79 6f 75 20 68 61 76 65 .volumes...Say.N.unless.you.have
09a0 0a 09 20 20 73 70 65 63 69 61 6c 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 77 68 69 63 68 20 61 ....special.applications.which.a
09c0 72 65 20 61 62 6c 65 20 74 6f 20 75 74 69 6c 69 7a 65 20 74 68 69 73 20 6c 6f 63 6b 69 6e 67 20 re.able.to.utilize.this.locking.
09e0 73 63 68 65 6d 65 2e 0a 0a 63 6f 6e 66 69 67 20 4e 43 50 46 53 5f 53 54 52 4f 4e 47 0a 09 62 6f scheme...config.NCPFS_STRONG..bo
0a00 6f 6c 20 22 43 6c 65 61 72 20 72 65 6d 6f 76 65 2f 64 65 6c 65 74 65 20 69 6e 68 69 62 69 74 20 ol."Clear.remove/delete.inhibit.
0a20 77 68 65 6e 20 6e 65 65 64 65 64 22 0a 09 64 65 70 65 6e 64 73 20 6f 6e 20 4e 43 50 5f 46 53 0a when.needed"..depends.on.NCP_FS.
0a40 09 68 65 6c 70 0a 09 20 20 41 6c 6c 6f 77 73 20 6d 61 6e 69 70 75 6c 61 74 69 6f 6e 20 6f 66 20 .help....Allows.manipulation.of.
0a60 66 69 6c 65 73 20 66 6c 61 67 67 65 64 20 61 73 20 44 65 6c 65 74 65 20 6f 72 20 52 65 6e 61 6d files.flagged.as.Delete.or.Renam
0a80 65 20 49 6e 68 69 62 69 74 2e 0a 09 20 20 54 6f 20 75 73 65 20 74 68 69 73 20 66 65 61 74 75 72 e.Inhibit.....To.use.this.featur
0aa0 65 20 79 6f 75 20 6d 75 73 74 20 6d 6f 75 6e 74 20 76 6f 6c 75 6d 65 73 20 77 69 74 68 20 74 68 e.you.must.mount.volumes.with.th
0ac0 65 20 6e 63 70 6d 6f 75 6e 74 0a 09 20 20 70 61 72 61 6d 65 74 65 72 20 22 2d 73 22 20 28 6e 63 e.ncpmount....parameter."-s".(nc
0ae0 70 66 73 2d 32 2e 30 2e 31 32 20 61 6e 64 20 6e 65 77 65 72 29 2e 20 20 53 61 79 20 59 20 75 6e pfs-2.0.12.and.newer)...Say.Y.un
0b00 6c 65 73 73 20 79 6f 75 20 61 72 65 20 6e 6f 74 0a 09 20 20 6d 6f 75 6e 74 69 6e 67 20 76 6f 6c less.you.are.not....mounting.vol
0b20 75 6d 65 73 20 77 69 74 68 20 2d 66 20 34 34 34 2e 0a 0a 63 6f 6e 66 69 67 20 4e 43 50 46 53 5f umes.with.-f.444...config.NCPFS_
0b40 4e 46 53 5f 4e 53 0a 09 62 6f 6f 6c 20 22 55 73 65 20 4e 46 53 20 6e 61 6d 65 73 70 61 63 65 20 NFS_NS..bool."Use.NFS.namespace.
0b60 69 66 20 61 76 61 69 6c 61 62 6c 65 22 0a 09 64 65 70 65 6e 64 73 20 6f 6e 20 4e 43 50 5f 46 53 if.available"..depends.on.NCP_FS
0b80 0a 09 68 65 6c 70 0a 09 20 20 41 6c 6c 6f 77 73 20 79 6f 75 20 74 6f 20 75 74 69 6c 69 7a 65 20 ..help....Allows.you.to.utilize.
0ba0 4e 46 53 20 6e 61 6d 65 73 70 61 63 65 20 6f 6e 20 4e 65 74 57 61 72 65 20 73 65 72 76 65 72 73 NFS.namespace.on.NetWare.servers
0bc0 2e 20 20 49 74 20 62 72 69 6e 67 73 0a 09 20 20 79 6f 75 20 63 61 73 65 20 73 65 6e 73 69 74 69 ...It.brings....you.case.sensiti
0be0 76 65 20 66 69 6c 65 6e 61 6d 65 73 2e 20 20 53 61 79 20 59 2e 20 20 59 6f 75 20 63 61 6e 20 64 ve.filenames...Say.Y...You.can.d
0c00 69 73 61 62 6c 65 20 69 74 20 61 74 0a 09 20 20 6d 6f 75 6e 74 2d 74 69 6d 65 20 77 69 74 68 20 isable.it.at....mount-time.with.
0c20 74 68 65 20 60 2d 4e 20 6e 66 73 27 20 70 61 72 61 6d 65 74 65 72 20 6f 66 20 6e 63 70 6d 6f 75 the.`-N.nfs'.parameter.of.ncpmou
0c40 6e 74 2e 0a 0a 63 6f 6e 66 69 67 20 4e 43 50 46 53 5f 4f 53 32 5f 4e 53 0a 09 62 6f 6f 6c 20 22 nt...config.NCPFS_OS2_NS..bool."
0c60 55 73 65 20 4c 4f 4e 47 20 28 4f 53 2f 32 29 20 6e 61 6d 65 73 70 61 63 65 20 69 66 20 61 76 61 Use.LONG.(OS/2).namespace.if.ava
0c80 69 6c 61 62 6c 65 22 0a 09 64 65 70 65 6e 64 73 20 6f 6e 20 4e 43 50 5f 46 53 0a 09 68 65 6c 70 ilable"..depends.on.NCP_FS..help
0ca0 0a 09 20 20 41 6c 6c 6f 77 73 20 79 6f 75 20 74 6f 20 75 74 69 6c 69 7a 65 20 4f 53 32 2f 4c 4f ....Allows.you.to.utilize.OS2/LO
0cc0 4e 47 20 6e 61 6d 65 73 70 61 63 65 20 6f 6e 20 4e 65 74 57 61 72 65 20 73 65 72 76 65 72 73 2e NG.namespace.on.NetWare.servers.
0ce0 0a 09 20 20 46 69 6c 65 6e 61 6d 65 73 20 69 6e 20 74 68 69 73 20 6e 61 6d 65 73 70 61 63 65 20 ....Filenames.in.this.namespace.
0d00 61 72 65 20 6c 69 6d 69 74 65 64 20 74 6f 20 32 35 35 20 63 68 61 72 61 63 74 65 72 73 2c 20 74 are.limited.to.255.characters,.t
0d20 68 65 79 20 61 72 65 0a 09 20 20 63 61 73 65 20 69 6e 73 65 6e 73 69 74 69 76 65 2c 20 61 6e 64 hey.are....case.insensitive,.and
0d40 20 63 61 73 65 20 69 6e 20 6e 61 6d 65 73 20 69 73 20 70 72 65 73 65 72 76 65 64 2e 20 20 53 61 .case.in.names.is.preserved...Sa
0d60 79 20 59 2e 20 20 59 6f 75 20 63 61 6e 0a 09 20 20 64 69 73 61 62 6c 65 20 69 74 20 61 74 20 6d y.Y...You.can....disable.it.at.m
0d80 6f 75 6e 74 20 74 69 6d 65 20 77 69 74 68 20 74 68 65 20 2d 4e 20 6f 73 32 20 70 61 72 61 6d 65 ount.time.with.the.-N.os2.parame
0da0 74 65 72 20 6f 66 20 6e 63 70 6d 6f 75 6e 74 2e 0a 0a 63 6f 6e 66 69 67 20 4e 43 50 46 53 5f 53 ter.of.ncpmount...config.NCPFS_S
0dc0 4d 41 4c 4c 44 4f 53 0a 09 62 6f 6f 6c 20 22 4c 6f 77 65 72 63 61 73 65 20 44 4f 53 20 66 69 6c MALLDOS..bool."Lowercase.DOS.fil
0de0 65 6e 61 6d 65 73 22 0a 09 64 65 70 65 6e 64 73 20 6f 6e 20 4e 43 50 5f 46 53 0a 09 2d 2d 2d 68 enames"..depends.on.NCP_FS..---h
0e00 65 6c 70 2d 2d 2d 0a 09 20 20 49 66 20 79 6f 75 20 73 61 79 20 59 20 68 65 72 65 2c 20 65 76 65 elp---....If.you.say.Y.here,.eve
0e20 72 79 20 66 69 6c 65 6e 61 6d 65 20 6f 6e 20 61 20 4e 65 74 57 61 72 65 20 73 65 72 76 65 72 20 ry.filename.on.a.NetWare.server.
0e40 76 6f 6c 75 6d 65 20 75 73 69 6e 67 0a 09 20 20 74 68 65 20 4f 53 32 2f 4c 4f 4e 47 20 6e 61 6d volume.using....the.OS2/LONG.nam
0e60 65 73 70 61 63 65 20 61 6e 64 20 63 72 65 61 74 65 64 20 75 6e 64 65 72 20 44 4f 53 20 6f 72 20 espace.and.created.under.DOS.or.
0e80 6f 6e 20 61 20 76 6f 6c 75 6d 65 20 75 73 69 6e 67 0a 09 20 20 44 4f 53 20 6e 61 6d 65 73 70 61 on.a.volume.using....DOS.namespa
0ea0 63 65 20 77 69 6c 6c 20 62 65 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 6c 6f 77 65 72 63 61 73 ce.will.be.converted.to.lowercas
0ec0 65 20 63 68 61 72 61 63 74 65 72 73 2e 0a 09 20 20 53 61 79 69 6e 67 20 4e 20 68 65 72 65 20 77 e.characters.....Saying.N.here.w
0ee0 69 6c 6c 20 67 69 76 65 20 79 6f 75 20 74 68 65 73 65 20 66 69 6c 65 6e 61 6d 65 73 20 69 6e 20 ill.give.you.these.filenames.in.
0f00 75 70 70 65 72 63 61 73 65 2e 0a 0a 09 20 20 54 68 69 73 20 69 73 20 6f 6e 6c 79 20 61 20 63 6f uppercase......This.is.only.a.co
0f20 73 6d 65 74 69 63 20 6f 70 74 69 6f 6e 20 73 69 6e 63 65 20 74 68 65 20 4f 53 32 2f 4c 4f 4e 47 smetic.option.since.the.OS2/LONG
0f40 20 6e 61 6d 65 73 70 61 63 65 20 69 73 20 63 61 73 65 0a 09 20 20 69 6e 73 65 6e 73 69 74 69 76 .namespace.is.case....insensitiv
0f60 65 2e 20 54 68 65 20 6f 6e 6c 79 20 6d 61 6a 6f 72 20 72 65 61 73 6f 6e 20 66 6f 72 20 74 68 69 e..The.only.major.reason.for.thi
0f80 73 20 6f 70 74 69 6f 6e 20 69 73 20 62 61 63 6b 77 61 72 64 0a 09 20 20 63 6f 6d 70 61 74 69 62 s.option.is.backward....compatib
0fa0 69 6c 69 74 79 20 77 68 65 6e 20 6d 6f 76 69 6e 67 20 66 72 6f 6d 20 44 4f 53 20 74 6f 20 4f 53 ility.when.moving.from.DOS.to.OS
0fc0 32 2f 4c 4f 4e 47 20 6e 61 6d 65 73 70 61 63 65 20 73 75 70 70 6f 72 74 2e 0a 09 20 20 4c 6f 6e 2/LONG.namespace.support.....Lon
0fe0 67 20 66 69 6c 65 6e 61 6d 65 73 20 28 63 72 65 61 74 65 64 20 62 79 20 57 69 6e 39 35 29 20 77 g.filenames.(created.by.Win95).w
1000 69 6c 6c 20 6e 6f 74 20 62 65 20 61 66 66 65 63 74 65 64 2e 0a 0a 09 20 20 54 68 69 73 20 6f 70 ill.not.be.affected......This.op
1020 74 69 6f 6e 20 64 6f 65 73 20 6e 6f 74 20 73 6f 6c 76 65 20 74 68 65 20 70 72 6f 62 6c 65 6d 20 tion.does.not.solve.the.problem.
1040 74 68 61 74 20 66 69 6c 65 6e 61 6d 65 73 20 61 70 70 65 61 72 0a 09 20 20 64 69 66 66 65 72 65 that.filenames.appear....differe
1060 6e 74 6c 79 20 75 6e 64 65 72 20 4c 69 6e 75 78 20 61 6e 64 20 75 6e 64 65 72 20 57 69 6e 64 6f ntly.under.Linux.and.under.Windo
1080 77 73 2c 20 73 69 6e 63 65 20 57 69 6e 64 6f 77 73 20 64 6f 65 73 20 61 6e 0a 09 20 20 61 64 64 ws,.since.Windows.does.an....add
10a0 69 74 69 6f 6e 61 6c 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 6f 6e 20 74 68 65 20 63 6c 69 65 6e itional.conversions.on.the.clien
10c0 74 20 73 69 64 65 2e 20 59 6f 75 20 63 61 6e 20 61 63 68 69 65 76 65 20 73 69 6d 69 6c 61 72 0a t.side..You.can.achieve.similar.
10e0 09 20 20 65 66 66 65 63 74 73 20 62 79 20 73 61 79 69 6e 67 20 59 20 74 6f 20 22 41 6c 6c 6f 77 ...effects.by.saying.Y.to."Allow
1100 20 75 73 69 6e 67 20 6f 66 20 4e 61 74 69 76 65 20 4c 61 6e 67 75 61 67 65 20 53 75 70 70 6f 72 .using.of.Native.Language.Suppor
1120 74 22 0a 09 20 20 62 65 6c 6f 77 2e 0a 0a 63 6f 6e 66 69 67 20 4e 43 50 46 53 5f 4e 4c 53 0a 09 t"....below...config.NCPFS_NLS..
1140 62 6f 6f 6c 20 22 55 73 65 20 4e 61 74 69 76 65 20 4c 61 6e 67 75 61 67 65 20 53 75 70 70 6f 72 bool."Use.Native.Language.Suppor
1160 74 22 0a 09 64 65 70 65 6e 64 73 20 6f 6e 20 4e 43 50 5f 46 53 0a 09 73 65 6c 65 63 74 20 4e 4c t"..depends.on.NCP_FS..select.NL
1180 53 0a 09 68 65 6c 70 0a 09 20 20 41 6c 6c 6f 77 73 20 79 6f 75 20 74 6f 20 75 73 65 20 63 6f 64 S..help....Allows.you.to.use.cod
11a0 65 70 61 67 65 73 20 61 6e 64 20 49 2f 4f 20 63 68 61 72 73 65 74 73 20 66 6f 72 20 66 69 6c 65 epages.and.I/O.charsets.for.file
11c0 20 6e 61 6d 65 0a 09 20 20 74 72 61 6e 73 6c 61 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 74 68 65 .name....translation.between.the
11e0 20 73 65 72 76 65 72 20 66 69 6c 65 20 73 79 73 74 65 6d 20 61 6e 64 20 69 6e 70 75 74 2f 6f 75 .server.file.system.and.input/ou
1200 74 70 75 74 2e 20 54 68 69 73 0a 09 20 20 6d 61 79 20 62 65 20 75 73 65 66 75 6c 2c 20 69 66 20 tput..This....may.be.useful,.if.
1220 79 6f 75 20 77 61 6e 74 20 74 6f 20 61 63 63 65 73 73 20 74 68 65 20 73 65 72 76 65 72 20 77 69 you.want.to.access.the.server.wi
1240 74 68 20 6f 74 68 65 72 20 6f 70 65 72 61 74 69 6e 67 0a 09 20 20 73 79 73 74 65 6d 73 2c 20 65 th.other.operating....systems,.e
1260 2e 67 2e 20 57 69 6e 64 6f 77 73 20 39 35 2e 20 53 65 65 20 61 6c 73 6f 20 4e 4c 53 20 66 6f 72 .g..Windows.95..See.also.NLS.for
1280 20 6d 6f 72 65 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 0a 09 20 20 54 6f 20 73 65 6c 65 63 74 .more.Information......To.select
12a0 20 63 6f 64 65 70 61 67 65 73 20 61 6e 64 20 49 2f 4f 20 63 68 61 72 73 65 74 73 20 75 73 65 20 .codepages.and.I/O.charsets.use.
12c0 6e 63 70 66 73 2d 32 2e 32 2e 30 2e 31 33 20 6f 72 20 6e 65 77 65 72 2e 0a 0a 63 6f 6e 66 69 67 ncpfs-2.2.0.13.or.newer...config
12e0 20 4e 43 50 46 53 5f 45 58 54 52 41 53 0a 09 62 6f 6f 6c 20 22 45 6e 61 62 6c 65 20 73 79 6d 62 .NCPFS_EXTRAS..bool."Enable.symb
1300 6f 6c 69 63 20 6c 69 6e 6b 73 20 61 6e 64 20 65 78 65 63 75 74 65 20 66 6c 61 67 73 22 0a 09 64 olic.links.and.execute.flags"..d
1320 65 70 65 6e 64 73 20 6f 6e 20 4e 43 50 5f 46 53 0a 09 68 65 6c 70 0a 09 20 20 54 68 69 73 20 65 epends.on.NCP_FS..help....This.e
1340 6e 61 62 6c 65 73 20 74 68 65 20 75 73 65 20 6f 66 20 73 79 6d 62 6f 6c 69 63 20 6c 69 6e 6b 73 nables.the.use.of.symbolic.links
1360 20 61 6e 64 20 61 6e 20 65 78 65 63 75 74 65 20 70 65 72 6d 69 73 73 69 6f 6e 0a 09 20 20 62 69 .and.an.execute.permission....bi
1380 74 20 6f 6e 20 4e 43 50 46 53 2e 20 54 68 65 20 66 69 6c 65 20 73 65 72 76 65 72 20 6e 65 65 64 t.on.NCPFS..The.file.server.need
13a0 20 6e 6f 74 20 68 61 76 65 20 6c 6f 6e 67 20 6e 61 6d 65 20 73 70 61 63 65 20 6f 72 20 4e 46 53 .not.have.long.name.space.or.NFS
13c0 0a 09 20 20 6e 61 6d 65 20 73 70 61 63 65 20 6c 6f 61 64 65 64 20 66 6f 72 20 74 68 65 73 65 20 ....name.space.loaded.for.these.
13e0 74 6f 20 77 6f 72 6b 2e 0a 0a 09 20 20 54 6f 20 75 73 65 20 74 68 65 20 6e 65 77 20 61 74 74 72 to.work......To.use.the.new.attr
1400 69 62 75 74 65 73 2c 20 69 74 20 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 74 6f 20 75 73 65 ibutes,.it.is.recommended.to.use
1420 20 74 68 65 20 66 6c 61 67 73 0a 09 20 20 27 2d 66 20 36 30 30 20 2d 64 20 37 35 35 27 20 6f 6e .the.flags....'-f.600.-d.755'.on
1440 20 74 68 65 20 6e 63 70 6d 6f 75 6e 74 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e 0a 0a 00 00 00 .the.ncpmount.command.line......
1460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1600 6e 63 70 66 73 2f 66 69 6c 65 2e 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ncpfs/file.c....................
1620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1660 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 ....0000644.0001750.0001750.0000
1680 30 30 31 33 34 31 32 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 32 32 35 32 00 20 30 00 00 00 0013412.13023323142.012252..0...
16a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1700 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...kubax..................
1720 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........kubax..................
1740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1800 2f 2a 0a 20 2a 20 20 66 69 6c 65 2e 63 0a 20 2a 0a 20 2a 20 20 43 6f 70 79 72 69 67 68 74 20 28 /*..*..file.c..*..*..Copyright.(
1820 43 29 20 31 39 39 35 2c 20 31 39 39 36 20 62 79 20 56 6f 6c 6b 65 72 20 4c 65 6e 64 65 63 6b 65 C).1995,.1996.by.Volker.Lendecke
1840 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 37 20 50 65 74 65 72 20 57 61 6c 74 65 6e 62 ..*..Modified.1997.Peter.Waltenb
1860 65 72 67 2c 20 42 69 6c 6c 20 48 61 77 65 73 2c 20 44 61 76 69 64 20 57 6f 6f 64 68 6f 75 73 65 erg,.Bill.Hawes,.David.Woodhouse
1880 20 66 6f 72 20 32 2e 31 20 64 63 61 63 68 65 0a 20 2a 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 .for.2.1.dcache..*..*/..#define.
18a0 70 72 5f 66 6d 74 28 66 6d 74 29 20 4b 42 55 49 4c 44 5f 4d 4f 44 4e 41 4d 45 20 22 3a 20 22 20 pr_fmt(fmt).KBUILD_MODNAME.":.".
18c0 66 6d 74 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 61 73 6d 2f 75 61 63 63 65 73 73 2e 68 3e 0a 0a 23 fmt..#include.<asm/uaccess.h>..#
18e0 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 74 69 6d 65 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 include.<linux/time.h>.#include.
1900 3c 6c 69 6e 75 78 2f 6b 65 72 6e 65 6c 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 <linux/kernel.h>.#include.<linux
1920 2f 65 72 72 6e 6f 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 66 63 6e 74 6c 2e /errno.h>.#include.<linux/fcntl.
1940 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 74 61 74 2e 68 3e 0a 23 69 6e 63 6c h>.#include.<linux/stat.h>.#incl
1960 75 64 65 20 3c 6c 69 6e 75 78 2f 6d 6d 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 ude.<linux/mm.h>.#include.<linux
1980 2f 76 6d 61 6c 6c 6f 63 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 63 68 65 /vmalloc.h>.#include.<linux/sche
19a0 64 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 22 6e 63 70 5f 66 73 2e 68 22 0a 0a 73 74 61 74 69 d.h>..#include."ncp_fs.h"..stati
19c0 63 20 69 6e 74 20 6e 63 70 5f 66 73 79 6e 63 28 73 74 72 75 63 74 20 66 69 6c 65 20 2a 66 69 6c c.int.ncp_fsync(struct.file.*fil
19e0 65 2c 20 6c 6f 66 66 5f 74 20 73 74 61 72 74 2c 20 6c 6f 66 66 5f 74 20 65 6e 64 2c 20 69 6e 74 e,.loff_t.start,.loff_t.end,.int
1a00 20 64 61 74 61 73 79 6e 63 29 0a 7b 0a 09 72 65 74 75 72 6e 20 66 69 6c 65 6d 61 70 5f 77 72 69 .datasync).{..return.filemap_wri
1a20 74 65 5f 61 6e 64 5f 77 61 69 74 5f 72 61 6e 67 65 28 66 69 6c 65 2d 3e 66 5f 6d 61 70 70 69 6e te_and_wait_range(file->f_mappin
1a40 67 2c 20 73 74 61 72 74 2c 20 65 6e 64 29 3b 0a 7d 0a 0a 2f 2a 0a 20 2a 20 4f 70 65 6e 20 61 20 g,.start,.end);.}../*..*.Open.a.
1a60 66 69 6c 65 20 77 69 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 72 65 61 64 2f 77 72 69 file.with.the.specified.read/wri
1a80 74 65 20 6d 6f 64 65 2e 0a 20 2a 2f 0a 69 6e 74 20 6e 63 70 5f 6d 61 6b 65 5f 6f 70 65 6e 28 73 te.mode...*/.int.ncp_make_open(s
1aa0 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 2c 20 69 6e 74 20 72 69 67 68 74 29 0a 7b truct.inode.*inode,.int.right).{
1ac0 0a 09 69 6e 74 20 65 72 72 6f 72 3b 0a 09 69 6e 74 20 61 63 63 65 73 73 3b 0a 0a 09 65 72 72 6f ..int.error;..int.access;...erro
1ae0 72 20 3d 20 2d 45 49 4e 56 41 4c 3b 0a 09 69 66 20 28 21 69 6e 6f 64 65 29 20 7b 0a 09 09 70 72 r.=.-EINVAL;..if.(!inode).{...pr
1b00 5f 65 72 72 28 22 25 73 3a 20 67 6f 74 20 4e 55 4c 4c 20 69 6e 6f 64 65 5c 6e 22 2c 20 5f 5f 66 _err("%s:.got.NULL.inode\n",.__f
1b20 75 6e 63 5f 5f 29 3b 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 7d 0a 0a 09 6e 63 70 5f 64 62 67 unc__);...goto.out;..}...ncp_dbg
1b40 28 31 2c 20 22 6f 70 65 6e 65 64 3d 25 64 2c 20 76 6f 6c 75 6d 65 20 23 20 25 75 2c 20 64 69 72 (1,."opened=%d,.volume.#.%u,.dir
1b60 20 65 6e 74 72 79 20 23 20 25 75 5c 6e 22 2c 0a 09 09 61 74 6f 6d 69 63 5f 72 65 61 64 28 26 4e .entry.#.%u\n",...atomic_read(&N
1b80 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6f 70 65 6e 65 64 29 2c 20 0a 09 09 4e 43 50 CP_FINFO(inode)->opened),....NCP
1ba0 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 2c 20 0a 09 09 4e 43 50 _FINFO(inode)->volNumber,....NCP
1bc0 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 64 69 72 45 6e 74 4e 75 6d 29 3b 0a 09 65 72 72 6f _FINFO(inode)->dirEntNum);..erro
1be0 72 20 3d 20 2d 45 41 43 43 45 53 3b 0a 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 4e 43 50 5f 46 49 r.=.-EACCES;..mutex_lock(&NCP_FI
1c00 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6f 70 65 6e 5f 6d 75 74 65 78 29 3b 0a 09 69 66 20 28 21 61 NFO(inode)->open_mutex);..if.(!a
1c20 74 6f 6d 69 63 5f 72 65 61 64 28 26 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6f 70 tomic_read(&NCP_FINFO(inode)->op
1c40 65 6e 65 64 29 29 20 7b 0a 09 09 73 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 5f 69 6e 66 6f ened)).{...struct.ncp_entry_info
1c60 20 66 69 6e 66 6f 3b 0a 09 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 09 2f 2a 20 74 72 69 65 .finfo;...int.result;..../*.trie
1c80 73 20 6d 61 78 2e 20 72 69 67 68 74 73 20 2a 2f 0a 09 09 66 69 6e 66 6f 2e 61 63 63 65 73 73 20 s.max..rights.*/...finfo.access.
1ca0 3d 20 4f 5f 52 44 57 52 3b 0a 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 6f 70 65 6e 5f 63 72 =.O_RDWR;...result.=.ncp_open_cr
1cc0 65 61 74 65 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 4e 43 50 5f 53 45 52 56 45 52 28 69 eate_file_or_subdir(NCP_SERVER(i
1ce0 6e 6f 64 65 29 2c 0a 09 09 09 09 09 69 6e 6f 64 65 2c 20 4e 55 4c 4c 2c 20 4f 43 5f 4d 4f 44 45 node),......inode,.NULL,.OC_MODE
1d00 5f 4f 50 45 4e 2c 0a 09 09 09 09 09 30 2c 20 41 52 5f 52 45 41 44 20 7c 20 41 52 5f 57 52 49 54 _OPEN,......0,.AR_READ.|.AR_WRIT
1d20 45 2c 20 26 66 69 6e 66 6f 29 3b 0a 09 09 69 66 20 28 21 72 65 73 75 6c 74 29 0a 09 09 09 67 6f E,.&finfo);...if.(!result)....go
1d40 74 6f 20 75 70 64 61 74 65 3b 0a 09 09 2f 2a 20 52 44 57 52 20 64 69 64 20 6e 6f 74 20 73 75 63 to.update;.../*.RDWR.did.not.suc
1d60 63 65 65 64 65 64 2c 20 74 72 79 20 72 65 61 64 6f 6e 6c 79 20 6f 72 20 77 72 69 74 65 6f 6e 6c ceeded,.try.readonly.or.writeonl
1d80 79 20 61 73 20 72 65 71 75 65 73 74 65 64 20 2a 2f 0a 09 09 73 77 69 74 63 68 20 28 72 69 67 68 y.as.requested.*/...switch.(righ
1da0 74 29 20 7b 0a 09 09 09 63 61 73 65 20 4f 5f 52 44 4f 4e 4c 59 3a 0a 09 09 09 09 66 69 6e 66 6f t).{....case.O_RDONLY:.....finfo
1dc0 2e 61 63 63 65 73 73 20 3d 20 4f 5f 52 44 4f 4e 4c 59 3b 0a 09 09 09 09 72 65 73 75 6c 74 20 3d .access.=.O_RDONLY;.....result.=
1de0 20 6e 63 70 5f 6f 70 65 6e 5f 63 72 65 61 74 65 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 .ncp_open_create_file_or_subdir(
1e00 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2c 0a 09 09 09 09 09 69 6e 6f 64 65 2c 20 4e NCP_SERVER(inode),......inode,.N
1e20 55 4c 4c 2c 20 4f 43 5f 4d 4f 44 45 5f 4f 50 45 4e 2c 0a 09 09 09 09 09 30 2c 20 41 52 5f 52 45 ULL,.OC_MODE_OPEN,......0,.AR_RE
1e40 41 44 2c 20 26 66 69 6e 66 6f 29 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 63 61 73 65 20 AD,.&finfo);.....break;....case.
1e60 4f 5f 57 52 4f 4e 4c 59 3a 0a 09 09 09 09 66 69 6e 66 6f 2e 61 63 63 65 73 73 20 3d 20 4f 5f 57 O_WRONLY:.....finfo.access.=.O_W
1e80 52 4f 4e 4c 59 3b 0a 09 09 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 6f 70 65 6e 5f 63 72 65 RONLY;.....result.=.ncp_open_cre
1ea0 61 74 65 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 4e 43 50 5f 53 45 52 56 45 52 28 69 6e ate_file_or_subdir(NCP_SERVER(in
1ec0 6f 64 65 29 2c 0a 09 09 09 09 09 69 6e 6f 64 65 2c 20 4e 55 4c 4c 2c 20 4f 43 5f 4d 4f 44 45 5f ode),......inode,.NULL,.OC_MODE_
1ee0 4f 50 45 4e 2c 0a 09 09 09 09 09 30 2c 20 41 52 5f 57 52 49 54 45 2c 20 26 66 69 6e 66 6f 29 3b OPEN,......0,.AR_WRITE,.&finfo);
1f00 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 7d 0a 09 09 69 66 20 28 72 65 73 75 6c 74 29 20 7b 0a .....break;...}...if.(result).{.
1f20 09 09 09 6e 63 70 5f 76 64 62 67 28 22 66 61 69 6c 65 64 2c 20 72 65 73 75 6c 74 3d 25 64 5c 6e ...ncp_vdbg("failed,.result=%d\n
1f40 22 2c 20 72 65 73 75 6c 74 29 3b 0a 09 09 09 67 6f 74 6f 20 6f 75 74 5f 75 6e 6c 6f 63 6b 3b 0a ",.result);....goto.out_unlock;.
1f60 09 09 7d 0a 09 09 2f 2a 0a 09 09 20 2a 20 55 70 64 61 74 65 20 74 68 65 20 69 6e 6f 64 65 20 69 ..}.../*....*.Update.the.inode.i
1f80 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 09 09 20 2a 2f 0a 09 75 70 64 61 74 65 3a 0a 09 09 6e 63 70 nformation.....*/..update:...ncp
1fa0 5f 75 70 64 61 74 65 5f 69 6e 6f 64 65 28 69 6e 6f 64 65 2c 20 26 66 69 6e 66 6f 29 3b 0a 09 09 _update_inode(inode,.&finfo);...
1fc0 61 74 6f 6d 69 63 5f 73 65 74 28 26 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6f 70 atomic_set(&NCP_FINFO(inode)->op
1fe0 65 6e 65 64 2c 20 31 29 3b 0a 09 7d 0a 0a 09 61 63 63 65 73 73 20 3d 20 4e 43 50 5f 46 49 4e 46 ened,.1);..}...access.=.NCP_FINF
2000 4f 28 69 6e 6f 64 65 29 2d 3e 61 63 63 65 73 73 3b 0a 09 6e 63 70 5f 76 64 62 67 28 22 66 69 6c O(inode)->access;..ncp_vdbg("fil
2020 65 20 6f 70 65 6e 2c 20 61 63 63 65 73 73 3d 25 78 5c 6e 22 2c 20 61 63 63 65 73 73 29 3b 0a 09 e.open,.access=%x\n",.access);..
2040 69 66 20 28 61 63 63 65 73 73 20 3d 3d 20 72 69 67 68 74 20 7c 7c 20 61 63 63 65 73 73 20 3d 3d if.(access.==.right.||.access.==
2060 20 4f 5f 52 44 57 52 29 20 7b 0a 09 09 61 74 6f 6d 69 63 5f 69 6e 63 28 26 4e 43 50 5f 46 49 4e .O_RDWR).{...atomic_inc(&NCP_FIN
2080 46 4f 28 69 6e 6f 64 65 29 2d 3e 6f 70 65 6e 65 64 29 3b 0a 09 09 65 72 72 6f 72 20 3d 20 30 3b FO(inode)->opened);...error.=.0;
20a0 0a 09 7d 0a 0a 6f 75 74 5f 75 6e 6c 6f 63 6b 3a 0a 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 ..}..out_unlock:..mutex_unlock(&
20c0 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6f 70 65 6e 5f 6d 75 74 65 78 29 3b 0a 6f NCP_FINFO(inode)->open_mutex);.o
20e0 75 74 3a 0a 09 72 65 74 75 72 6e 20 65 72 72 6f 72 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 73 73 69 ut:..return.error;.}..static.ssi
2100 7a 65 5f 74 0a 6e 63 70 5f 66 69 6c 65 5f 72 65 61 64 5f 69 74 65 72 28 73 74 72 75 63 74 20 6b ze_t.ncp_file_read_iter(struct.k
2120 69 6f 63 62 20 2a 69 6f 63 62 2c 20 73 74 72 75 63 74 20 69 6f 76 5f 69 74 65 72 20 2a 74 6f 29 iocb.*iocb,.struct.iov_iter.*to)
2140 0a 7b 0a 09 73 74 72 75 63 74 20 66 69 6c 65 20 2a 66 69 6c 65 20 3d 20 69 6f 63 62 2d 3e 6b 69 .{..struct.file.*file.=.iocb->ki
2160 5f 66 69 6c 70 3b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 20 3d 20 66 69 _filp;..struct.inode.*inode.=.fi
2180 6c 65 5f 69 6e 6f 64 65 28 66 69 6c 65 29 3b 0a 09 73 69 7a 65 5f 74 20 61 6c 72 65 61 64 79 5f le_inode(file);..size_t.already_
21a0 72 65 61 64 20 3d 20 30 3b 0a 09 6f 66 66 5f 74 20 70 6f 73 20 3d 20 69 6f 63 62 2d 3e 6b 69 5f read.=.0;..off_t.pos.=.iocb->ki_
21c0 70 6f 73 3b 0a 09 73 69 7a 65 5f 74 20 62 75 66 73 69 7a 65 3b 0a 09 69 6e 74 20 65 72 72 6f 72 pos;..size_t.bufsize;..int.error
21e0 3b 0a 09 76 6f 69 64 20 2a 66 72 65 65 70 61 67 65 3b 0a 09 73 69 7a 65 5f 74 20 66 72 65 65 6c ;..void.*freepage;..size_t.freel
2200 65 6e 3b 0a 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 65 6e 74 65 72 20 25 70 44 32 5c 6e 22 2c en;...ncp_dbg(1,."enter.%pD2\n",
2220 20 66 69 6c 65 29 3b 0a 0a 09 69 66 20 28 21 69 6f 76 5f 69 74 65 72 5f 63 6f 75 6e 74 28 74 6f .file);...if.(!iov_iter_count(to
2240 29 29 0a 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 69 66 20 28 70 6f 73 20 3e 20 69 6e 6f 64 65 2d ))...return.0;..if.(pos.>.inode-
2260 3e 69 5f 73 62 2d 3e 73 5f 6d 61 78 62 79 74 65 73 29 0a 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 >i_sb->s_maxbytes)...return.0;..
2280 69 6f 76 5f 69 74 65 72 5f 74 72 75 6e 63 61 74 65 28 74 6f 2c 20 69 6e 6f 64 65 2d 3e 69 5f 73 iov_iter_truncate(to,.inode->i_s
22a0 62 2d 3e 73 5f 6d 61 78 62 79 74 65 73 20 2d 20 70 6f 73 29 3b 0a 0a 09 65 72 72 6f 72 20 3d 20 b->s_maxbytes.-.pos);...error.=.
22c0 6e 63 70 5f 6d 61 6b 65 5f 6f 70 65 6e 28 69 6e 6f 64 65 2c 20 4f 5f 52 44 4f 4e 4c 59 29 3b 0a ncp_make_open(inode,.O_RDONLY);.
22e0 09 69 66 20 28 65 72 72 6f 72 29 20 7b 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 6f 70 65 6e .if.(error).{...ncp_dbg(1,."open
2300 20 66 61 69 6c 65 64 2c 20 65 72 72 6f 72 3d 25 64 5c 6e 22 2c 20 65 72 72 6f 72 29 3b 0a 09 09 .failed,.error=%d\n",.error);...
2320 72 65 74 75 72 6e 20 65 72 72 6f 72 3b 0a 09 7d 0a 0a 09 62 75 66 73 69 7a 65 20 3d 20 4e 43 50 return.error;..}...bufsize.=.NCP
2340 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2d 3e 62 75 66 66 65 72 5f 73 69 7a 65 3b 0a 0a 09 65 _SERVER(inode)->buffer_size;...e
2360 72 72 6f 72 20 3d 20 2d 45 49 4f 3b 0a 09 66 72 65 65 6c 65 6e 20 3d 20 6e 63 70 5f 72 65 61 64 rror.=.-EIO;..freelen.=.ncp_read
2380 5f 62 6f 75 6e 63 65 5f 73 69 7a 65 28 62 75 66 73 69 7a 65 29 3b 0a 09 66 72 65 65 70 61 67 65 _bounce_size(bufsize);..freepage
23a0 20 3d 20 76 6d 61 6c 6c 6f 63 28 66 72 65 65 6c 65 6e 29 3b 0a 09 69 66 20 28 21 66 72 65 65 70 .=.vmalloc(freelen);..if.(!freep
23c0 61 67 65 29 0a 09 09 67 6f 74 6f 20 6f 75 74 72 65 6c 3b 0a 09 65 72 72 6f 72 20 3d 20 30 3b 0a age)...goto.outrel;..error.=.0;.
23e0 09 2f 2a 20 46 69 72 73 74 20 72 65 61 64 20 69 6e 20 61 73 20 6d 75 63 68 20 61 73 20 70 6f 73 ./*.First.read.in.as.much.as.pos
2400 73 69 62 6c 65 20 66 6f 72 20 65 61 63 68 20 62 75 66 73 69 7a 65 2e 20 2a 2f 0a 09 77 68 69 6c sible.for.each.bufsize..*/..whil
2420 65 20 28 69 6f 76 5f 69 74 65 72 5f 63 6f 75 6e 74 28 74 6f 29 29 20 7b 0a 09 09 69 6e 74 20 72 e.(iov_iter_count(to)).{...int.r
2440 65 61 64 5f 74 68 69 73 5f 74 69 6d 65 3b 0a 09 09 73 69 7a 65 5f 74 20 74 6f 5f 72 65 61 64 20 ead_this_time;...size_t.to_read.
2460 3d 20 6d 69 6e 5f 74 28 73 69 7a 65 5f 74 2c 0a 09 09 09 09 20 20 20 20 20 62 75 66 73 69 7a 65 =.min_t(size_t,..........bufsize
2480 20 2d 20 28 70 6f 73 20 25 20 62 75 66 73 69 7a 65 29 2c 0a 09 09 09 09 20 20 20 20 20 69 6f 76 .-.(pos.%.bufsize),..........iov
24a0 5f 69 74 65 72 5f 63 6f 75 6e 74 28 74 6f 29 29 3b 0a 0a 09 09 65 72 72 6f 72 20 3d 20 6e 63 70 _iter_count(to));....error.=.ncp
24c0 5f 72 65 61 64 5f 62 6f 75 6e 63 65 28 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2c 0a _read_bounce(NCP_SERVER(inode),.
24e0 09 09 09 20 09 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 66 69 6c 65 5f 68 61 6e 64 .....NCP_FINFO(inode)->file_hand
2500 6c 65 2c 0a 09 09 09 09 70 6f 73 2c 20 74 6f 5f 72 65 61 64 2c 20 74 6f 2c 20 26 72 65 61 64 5f le,.....pos,.to_read,.to,.&read_
2520 74 68 69 73 5f 74 69 6d 65 2c 20 0a 09 09 09 09 66 72 65 65 70 61 67 65 2c 20 66 72 65 65 6c 65 this_time,......freepage,.freele
2540 6e 29 3b 0a 09 09 69 66 20 28 65 72 72 6f 72 29 20 7b 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d 45 n);...if.(error).{....error.=.-E
2560 49 4f 3b 09 2f 2a 20 4e 57 20 65 72 72 6e 6f 20 2d 3e 20 4c 69 6e 75 78 20 65 72 72 6e 6f 20 2a IO;./*.NW.errno.->.Linux.errno.*
2580 2f 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 7d 0a 09 09 70 6f 73 20 2b 3d 20 72 65 61 64 5f 74 68 /....break;...}...pos.+=.read_th
25a0 69 73 5f 74 69 6d 65 3b 0a 09 09 61 6c 72 65 61 64 79 5f 72 65 61 64 20 2b 3d 20 72 65 61 64 5f is_time;...already_read.+=.read_
25c0 74 68 69 73 5f 74 69 6d 65 3b 0a 0a 09 09 69 66 20 28 72 65 61 64 5f 74 68 69 73 5f 74 69 6d 65 this_time;....if.(read_this_time
25e0 20 21 3d 20 74 6f 5f 72 65 61 64 29 0a 09 09 09 62 72 65 61 6b 3b 0a 09 7d 0a 09 76 66 72 65 65 .!=.to_read)....break;..}..vfree
2600 28 66 72 65 65 70 61 67 65 29 3b 0a 0a 09 69 6f 63 62 2d 3e 6b 69 5f 70 6f 73 20 3d 20 70 6f 73 (freepage);...iocb->ki_pos.=.pos
2620 3b 0a 0a 09 66 69 6c 65 5f 61 63 63 65 73 73 65 64 28 66 69 6c 65 29 3b 0a 0a 09 6e 63 70 5f 64 ;...file_accessed(file);...ncp_d
2640 62 67 28 31 2c 20 22 65 78 69 74 20 25 70 44 32 5c 6e 22 2c 20 66 69 6c 65 29 3b 0a 6f 75 74 72 bg(1,."exit.%pD2\n",.file);.outr
2660 65 6c 3a 0a 09 6e 63 70 5f 69 6e 6f 64 65 5f 63 6c 6f 73 65 28 69 6e 6f 64 65 29 3b 09 09 0a 09 el:..ncp_inode_close(inode);....
2680 72 65 74 75 72 6e 20 61 6c 72 65 61 64 79 5f 72 65 61 64 20 3f 20 61 6c 72 65 61 64 79 5f 72 65 return.already_read.?.already_re
26a0 61 64 20 3a 20 65 72 72 6f 72 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 73 73 69 7a 65 5f 74 0a 6e 63 ad.:.error;.}..static.ssize_t.nc
26c0 70 5f 66 69 6c 65 5f 77 72 69 74 65 5f 69 74 65 72 28 73 74 72 75 63 74 20 6b 69 6f 63 62 20 2a p_file_write_iter(struct.kiocb.*
26e0 69 6f 63 62 2c 20 73 74 72 75 63 74 20 69 6f 76 5f 69 74 65 72 20 2a 66 72 6f 6d 29 0a 7b 0a 09 iocb,.struct.iov_iter.*from).{..
2700 73 74 72 75 63 74 20 66 69 6c 65 20 2a 66 69 6c 65 20 3d 20 69 6f 63 62 2d 3e 6b 69 5f 66 69 6c struct.file.*file.=.iocb->ki_fil
2720 70 3b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 20 3d 20 66 69 6c 65 5f 69 p;..struct.inode.*inode.=.file_i
2740 6e 6f 64 65 28 66 69 6c 65 29 3b 0a 09 73 69 7a 65 5f 74 20 61 6c 72 65 61 64 79 5f 77 72 69 74 node(file);..size_t.already_writ
2760 74 65 6e 20 3d 20 30 3b 0a 09 73 69 7a 65 5f 74 20 62 75 66 73 69 7a 65 3b 0a 09 69 6e 74 20 65 ten.=.0;..size_t.bufsize;..int.e
2780 72 72 6e 6f 3b 0a 09 76 6f 69 64 20 2a 62 6f 75 6e 63 65 62 75 66 66 65 72 3b 0a 09 6f 66 66 5f rrno;..void.*bouncebuffer;..off_
27a0 74 20 70 6f 73 3b 0a 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 65 6e 74 65 72 20 25 70 44 32 5c t.pos;...ncp_dbg(1,."enter.%pD2\
27c0 6e 22 2c 20 66 69 6c 65 29 3b 0a 09 65 72 72 6e 6f 20 3d 20 67 65 6e 65 72 69 63 5f 77 72 69 74 n",.file);..errno.=.generic_writ
27e0 65 5f 63 68 65 63 6b 73 28 69 6f 63 62 2c 20 66 72 6f 6d 29 3b 0a 09 69 66 20 28 65 72 72 6e 6f e_checks(iocb,.from);..if.(errno
2800 20 3c 3d 20 30 29 0a 09 09 72 65 74 75 72 6e 20 65 72 72 6e 6f 3b 0a 0a 09 65 72 72 6e 6f 20 3d .<=.0)...return.errno;...errno.=
2820 20 6e 63 70 5f 6d 61 6b 65 5f 6f 70 65 6e 28 69 6e 6f 64 65 2c 20 4f 5f 57 52 4f 4e 4c 59 29 3b .ncp_make_open(inode,.O_WRONLY);
2840 0a 09 69 66 20 28 65 72 72 6e 6f 29 20 7b 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 6f 70 65 ..if.(errno).{...ncp_dbg(1,."ope
2860 6e 20 66 61 69 6c 65 64 2c 20 65 72 72 6f 72 3d 25 64 5c 6e 22 2c 20 65 72 72 6e 6f 29 3b 0a 09 n.failed,.error=%d\n",.errno);..
2880 09 72 65 74 75 72 6e 20 65 72 72 6e 6f 3b 0a 09 7d 0a 09 62 75 66 73 69 7a 65 20 3d 20 4e 43 50 .return.errno;..}..bufsize.=.NCP
28a0 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2d 3e 62 75 66 66 65 72 5f 73 69 7a 65 3b 0a 0a 09 65 _SERVER(inode)->buffer_size;...e
28c0 72 72 6e 6f 20 3d 20 66 69 6c 65 5f 75 70 64 61 74 65 5f 74 69 6d 65 28 66 69 6c 65 29 3b 0a 09 rrno.=.file_update_time(file);..
28e0 69 66 20 28 65 72 72 6e 6f 29 0a 09 09 67 6f 74 6f 20 6f 75 74 72 65 6c 3b 0a 0a 09 62 6f 75 6e if.(errno)...goto.outrel;...boun
2900 63 65 62 75 66 66 65 72 20 3d 20 76 6d 61 6c 6c 6f 63 28 62 75 66 73 69 7a 65 29 3b 0a 09 69 66 cebuffer.=.vmalloc(bufsize);..if
2920 20 28 21 62 6f 75 6e 63 65 62 75 66 66 65 72 29 20 7b 0a 09 09 65 72 72 6e 6f 20 3d 20 2d 45 49 .(!bouncebuffer).{...errno.=.-EI
2940 4f 3b 09 2f 2a 20 2d 45 4e 4f 4d 45 4d 20 2a 2f 0a 09 09 67 6f 74 6f 20 6f 75 74 72 65 6c 3b 0a O;./*.-ENOMEM.*/...goto.outrel;.
2960 09 7d 0a 09 70 6f 73 20 3d 20 69 6f 63 62 2d 3e 6b 69 5f 70 6f 73 3b 0a 09 77 68 69 6c 65 20 28 .}..pos.=.iocb->ki_pos;..while.(
2980 69 6f 76 5f 69 74 65 72 5f 63 6f 75 6e 74 28 66 72 6f 6d 29 29 20 7b 0a 09 09 69 6e 74 20 77 72 iov_iter_count(from)).{...int.wr
29a0 69 74 74 65 6e 5f 74 68 69 73 5f 74 69 6d 65 3b 0a 09 09 73 69 7a 65 5f 74 20 74 6f 5f 77 72 69 itten_this_time;...size_t.to_wri
29c0 74 65 20 3d 20 6d 69 6e 5f 74 28 73 69 7a 65 5f 74 2c 0a 09 09 09 09 20 20 20 20 20 20 62 75 66 te.=.min_t(size_t,...........buf
29e0 73 69 7a 65 20 2d 20 28 70 6f 73 20 25 20 62 75 66 73 69 7a 65 29 2c 0a 09 09 09 09 20 20 20 20 size.-.(pos.%.bufsize),.........
2a00 20 20 69 6f 76 5f 69 74 65 72 5f 63 6f 75 6e 74 28 66 72 6f 6d 29 29 3b 0a 0a 09 09 69 66 20 28 ..iov_iter_count(from));....if.(
2a20 63 6f 70 79 5f 66 72 6f 6d 5f 69 74 65 72 28 62 6f 75 6e 63 65 62 75 66 66 65 72 2c 20 74 6f 5f copy_from_iter(bouncebuffer,.to_
2a40 77 72 69 74 65 2c 20 66 72 6f 6d 29 20 21 3d 20 74 6f 5f 77 72 69 74 65 29 20 7b 0a 09 09 09 65 write,.from).!=.to_write).{....e
2a60 72 72 6e 6f 20 3d 20 2d 45 46 41 55 4c 54 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 7d 0a 09 09 rrno.=.-EFAULT;....break;...}...
2a80 69 66 20 28 6e 63 70 5f 77 72 69 74 65 5f 6b 65 72 6e 65 6c 28 4e 43 50 5f 53 45 52 56 45 52 28 if.(ncp_write_kernel(NCP_SERVER(
2aa0 69 6e 6f 64 65 29 2c 20 0a 09 09 20 20 20 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d inode),........NCP_FINFO(inode)-
2ac0 3e 66 69 6c 65 5f 68 61 6e 64 6c 65 2c 0a 09 09 20 20 20 20 70 6f 73 2c 20 74 6f 5f 77 72 69 74 >file_handle,.......pos,.to_writ
2ae0 65 2c 20 62 6f 75 6e 63 65 62 75 66 66 65 72 2c 20 26 77 72 69 74 74 65 6e 5f 74 68 69 73 5f 74 e,.bouncebuffer,.&written_this_t
2b00 69 6d 65 29 20 21 3d 20 30 29 20 7b 0a 09 09 09 65 72 72 6e 6f 20 3d 20 2d 45 49 4f 3b 0a 09 09 ime).!=.0).{....errno.=.-EIO;...
2b20 09 62 72 65 61 6b 3b 0a 09 09 7d 0a 09 09 70 6f 73 20 2b 3d 20 77 72 69 74 74 65 6e 5f 74 68 69 .break;...}...pos.+=.written_thi
2b40 73 5f 74 69 6d 65 3b 0a 09 09 61 6c 72 65 61 64 79 5f 77 72 69 74 74 65 6e 20 2b 3d 20 77 72 69 s_time;...already_written.+=.wri
2b60 74 74 65 6e 5f 74 68 69 73 5f 74 69 6d 65 3b 0a 0a 09 09 69 66 20 28 77 72 69 74 74 65 6e 5f 74 tten_this_time;....if.(written_t
2b80 68 69 73 5f 74 69 6d 65 20 21 3d 20 74 6f 5f 77 72 69 74 65 29 0a 09 09 09 62 72 65 61 6b 3b 0a his_time.!=.to_write)....break;.
2ba0 09 7d 0a 09 76 66 72 65 65 28 62 6f 75 6e 63 65 62 75 66 66 65 72 29 3b 0a 0a 09 69 6f 63 62 2d .}..vfree(bouncebuffer);...iocb-
2bc0 3e 6b 69 5f 70 6f 73 20 3d 20 70 6f 73 3b 0a 0a 09 69 66 20 28 70 6f 73 20 3e 20 69 5f 73 69 7a >ki_pos.=.pos;...if.(pos.>.i_siz
2be0 65 5f 72 65 61 64 28 69 6e 6f 64 65 29 29 20 7b 0a 09 09 69 6e 6f 64 65 5f 6c 6f 63 6b 28 69 6e e_read(inode)).{...inode_lock(in
2c00 6f 64 65 29 3b 0a 09 09 69 66 20 28 70 6f 73 20 3e 20 69 5f 73 69 7a 65 5f 72 65 61 64 28 69 6e ode);...if.(pos.>.i_size_read(in
2c20 6f 64 65 29 29 0a 09 09 09 69 5f 73 69 7a 65 5f 77 72 69 74 65 28 69 6e 6f 64 65 2c 20 70 6f 73 ode))....i_size_write(inode,.pos
2c40 29 3b 0a 09 09 69 6e 6f 64 65 5f 75 6e 6c 6f 63 6b 28 69 6e 6f 64 65 29 3b 0a 09 7d 0a 09 6e 63 );...inode_unlock(inode);..}..nc
2c60 70 5f 64 62 67 28 31 2c 20 22 65 78 69 74 20 25 70 44 32 5c 6e 22 2c 20 66 69 6c 65 29 3b 0a 6f p_dbg(1,."exit.%pD2\n",.file);.o
2c80 75 74 72 65 6c 3a 0a 09 6e 63 70 5f 69 6e 6f 64 65 5f 63 6c 6f 73 65 28 69 6e 6f 64 65 29 3b 09 utrel:..ncp_inode_close(inode);.
2ca0 09 0a 09 72 65 74 75 72 6e 20 61 6c 72 65 61 64 79 5f 77 72 69 74 74 65 6e 20 3f 20 61 6c 72 65 ...return.already_written.?.alre
2cc0 61 64 79 5f 77 72 69 74 74 65 6e 20 3a 20 65 72 72 6e 6f 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 ady_written.:.errno;.}..static.i
2ce0 6e 74 20 6e 63 70 5f 72 65 6c 65 61 73 65 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f nt.ncp_release(struct.inode.*ino
2d00 64 65 2c 20 73 74 72 75 63 74 20 66 69 6c 65 20 2a 66 69 6c 65 29 20 7b 0a 09 69 66 20 28 6e 63 de,.struct.file.*file).{..if.(nc
2d20 70 5f 6d 61 6b 65 5f 63 6c 6f 73 65 64 28 69 6e 6f 64 65 29 29 20 7b 0a 09 09 6e 63 70 5f 64 62 p_make_closed(inode)).{...ncp_db
2d40 67 28 31 2c 20 22 66 61 69 6c 65 64 20 74 6f 20 63 6c 6f 73 65 5c 6e 22 29 3b 0a 09 7d 0a 09 72 g(1,."failed.to.close\n");..}..r
2d60 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 63 6f 6e 73 74 20 73 74 72 75 63 74 20 66 69 6c 65 5f 6f 70 eturn.0;.}..const.struct.file_op
2d80 65 72 61 74 69 6f 6e 73 20 6e 63 70 5f 66 69 6c 65 5f 6f 70 65 72 61 74 69 6f 6e 73 20 3d 0a 7b erations.ncp_file_operations.=.{
2da0 0a 09 2e 6c 6c 73 65 65 6b 09 09 3d 20 67 65 6e 65 72 69 63 5f 66 69 6c 65 5f 6c 6c 73 65 65 6b ...llseek..=.generic_file_llseek
2dc0 2c 0a 09 2e 72 65 61 64 5f 69 74 65 72 09 3d 20 6e 63 70 5f 66 69 6c 65 5f 72 65 61 64 5f 69 74 ,...read_iter.=.ncp_file_read_it
2de0 65 72 2c 0a 09 2e 77 72 69 74 65 5f 69 74 65 72 09 3d 20 6e 63 70 5f 66 69 6c 65 5f 77 72 69 74 er,...write_iter.=.ncp_file_writ
2e00 65 5f 69 74 65 72 2c 0a 09 2e 75 6e 6c 6f 63 6b 65 64 5f 69 6f 63 74 6c 09 3d 20 6e 63 70 5f 69 e_iter,...unlocked_ioctl.=.ncp_i
2e20 6f 63 74 6c 2c 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 41 54 0a 09 2e 63 6f 6d octl,.#ifdef.CONFIG_COMPAT...com
2e40 70 61 74 5f 69 6f 63 74 6c 09 3d 20 6e 63 70 5f 63 6f 6d 70 61 74 5f 69 6f 63 74 6c 2c 0a 23 65 pat_ioctl.=.ncp_compat_ioctl,.#e
2e60 6e 64 69 66 0a 09 2e 6d 6d 61 70 09 09 3d 20 6e 63 70 5f 6d 6d 61 70 2c 0a 09 2e 72 65 6c 65 61 ndif...mmap..=.ncp_mmap,...relea
2e80 73 65 09 3d 20 6e 63 70 5f 72 65 6c 65 61 73 65 2c 0a 09 2e 66 73 79 6e 63 09 09 3d 20 6e 63 70 se.=.ncp_release,...fsync..=.ncp
2ea0 5f 66 73 79 6e 63 2c 0a 7d 3b 0a 0a 63 6f 6e 73 74 20 73 74 72 75 63 74 20 69 6e 6f 64 65 5f 6f _fsync,.};..const.struct.inode_o
2ec0 70 65 72 61 74 69 6f 6e 73 20 6e 63 70 5f 66 69 6c 65 5f 69 6e 6f 64 65 5f 6f 70 65 72 61 74 69 perations.ncp_file_inode_operati
2ee0 6f 6e 73 20 3d 0a 7b 0a 09 2e 73 65 74 61 74 74 72 09 3d 20 6e 63 70 5f 6e 6f 74 69 66 79 5f 63 ons.=.{...setattr.=.ncp_notify_c
2f00 68 61 6e 67 65 2c 0a 7d 3b 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 hange,.};.......................
2f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3000 6e 63 70 66 73 2f 67 65 74 6f 70 74 2e 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ncpfs/getopt.c..................
3020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3060 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 ....0000644.0001750.0001750.0000
3080 30 30 30 33 35 34 30 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 32 36 33 36 00 20 30 00 00 00 0003540.13023323142.012636..0...
30a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
30c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
30e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3100 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...kubax..................
3120 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........kubax..................
3140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
31e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3200 2f 2a 0a 20 2a 20 67 65 74 6f 70 74 2e 63 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 70 72 5f 66 /*..*.getopt.c..*/..#define.pr_f
3220 6d 74 28 66 6d 74 29 20 4b 42 55 49 4c 44 5f 4d 4f 44 4e 41 4d 45 20 22 3a 20 22 20 66 6d 74 0a mt(fmt).KBUILD_MODNAME.":.".fmt.
3240 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6b 65 72 6e 65 6c 2e 68 3e 0a 23 69 6e 63 6c .#include.<linux/kernel.h>.#incl
3260 75 64 65 20 3c 6c 69 6e 75 78 2f 73 74 72 69 6e 67 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 3c ude.<linux/string.h>..#include.<
3280 61 73 6d 2f 65 72 72 6e 6f 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 22 67 65 74 6f 70 74 2e 68 asm/errno.h>..#include."getopt.h
32a0 22 0a 0a 2f 2a 2a 0a 20 2a 09 6e 63 70 5f 67 65 74 6f 70 74 20 2d 20 6f 70 74 69 6f 6e 20 70 61 "../**..*.ncp_getopt.-.option.pa
32c0 72 73 65 72 0a 20 2a 09 40 63 61 6c 6c 65 72 3a 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 61 6c rser..*.@caller:.name.of.the.cal
32e0 6c 65 72 2c 20 66 6f 72 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 73 0a 20 2a 09 40 6f 70 74 69 ler,.for.error.messages..*.@opti
3300 6f 6e 73 3a 20 74 68 65 20 6f 70 74 69 6f 6e 73 20 73 74 72 69 6e 67 0a 20 2a 09 40 6f 70 74 73 ons:.the.options.string..*.@opts
3320 3a 20 61 6e 20 61 72 72 61 79 20 6f 66 20 26 73 74 72 75 63 74 20 6f 70 74 69 6f 6e 20 65 6e 74 :.an.array.of.&struct.option.ent
3340 72 69 65 73 20 63 6f 6e 74 72 6f 6c 6c 69 6e 67 20 70 61 72 73 65 72 20 6f 70 65 72 61 74 69 6f ries.controlling.parser.operatio
3360 6e 73 0a 20 2a 09 40 6f 70 74 6f 70 74 3a 20 6f 75 74 70 75 74 3b 20 77 69 6c 6c 20 63 6f 6e 74 ns..*.@optopt:.output;.will.cont
3380 61 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 6f 70 74 69 6f 6e 0a 20 2a 09 40 6f 70 74 61 72 ain.the.current.option..*.@optar
33a0 67 3a 20 6f 75 74 70 75 74 3b 20 77 69 6c 6c 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 76 61 6c 75 g:.output;.will.contain.the.valu
33c0 65 20 28 69 66 20 6f 6e 65 20 65 78 69 73 74 73 29 0a 20 2a 09 40 76 61 6c 75 65 3a 20 6f 75 74 e.(if.one.exists)..*.@value:.out
33e0 70 75 74 3b 20 6d 61 79 20 62 65 20 4e 55 4c 4c 3b 20 77 69 6c 6c 20 62 65 20 6f 76 65 72 77 72 put;.may.be.NULL;.will.be.overwr
3400 69 74 74 65 6e 20 77 69 74 68 20 74 68 65 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 0a 20 2a 09 itten.with.the.integer.value..*.
3420 09 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 61 72 67 75 6d 65 6e 74 2e 0a 20 2a 0a 20 2a 09 .of.the.current.argument...*..*.
3440 48 65 6c 70 65 72 20 74 6f 20 70 61 72 73 65 20 6f 70 74 69 6f 6e 73 20 6f 6e 20 74 68 65 20 66 Helper.to.parse.options.on.the.f
3460 6f 72 6d 61 74 20 75 73 65 64 20 62 79 20 6d 6f 75 6e 74 20 28 22 61 3d 62 2c 63 3d 64 2c 65 2c ormat.used.by.mount.("a=b,c=d,e,
3480 66 22 29 2e 0a 20 2a 09 52 65 74 75 72 6e 73 20 6f 70 74 73 2d 3e 76 61 6c 20 69 66 20 61 20 6d f")...*.Returns.opts->val.if.a.m
34a0 61 74 63 68 69 6e 67 20 65 6e 74 72 79 20 69 6e 20 74 68 65 20 27 6f 70 74 73 27 20 61 72 72 61 atching.entry.in.the.'opts'.arra
34c0 79 20 69 73 20 66 6f 75 6e 64 2c 0a 20 2a 09 30 20 77 68 65 6e 20 6e 6f 20 6d 6f 72 65 20 74 6f y.is.found,..*.0.when.no.more.to
34e0 6b 65 6e 73 20 61 72 65 20 66 6f 75 6e 64 2c 20 2d 31 20 69 66 20 61 6e 20 65 72 72 6f 72 20 69 kens.are.found,.-1.if.an.error.i
3500 73 20 65 6e 63 6f 75 6e 74 65 72 65 64 2e 0a 20 2a 2f 0a 69 6e 74 20 6e 63 70 5f 67 65 74 6f 70 s.encountered...*/.int.ncp_getop
3520 74 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 63 61 6c 6c 65 72 2c 20 63 68 61 72 20 2a 2a 6f 70 74 t(const.char.*caller,.char.**opt
3540 69 6f 6e 73 2c 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 6e 63 70 5f 6f 70 74 69 6f 6e 20 2a 6f ions,.const.struct.ncp_option.*o
3560 70 74 73 2c 0a 09 20 20 20 20 20 20 20 63 68 61 72 20 2a 2a 6f 70 74 6f 70 74 2c 20 63 68 61 72 pts,.........char.**optopt,.char
3580 20 2a 2a 6f 70 74 61 72 67 2c 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 2a 76 61 6c 75 65 29 .**optarg,.unsigned.long.*value)
35a0 0a 7b 0a 09 63 68 61 72 20 2a 74 6f 6b 65 6e 3b 0a 09 63 68 61 72 20 2a 76 61 6c 3b 0a 0a 09 64 .{..char.*token;..char.*val;...d
35c0 6f 20 7b 0a 09 09 69 66 20 28 28 74 6f 6b 65 6e 20 3d 20 73 74 72 73 65 70 28 6f 70 74 69 6f 6e o.{...if.((token.=.strsep(option
35e0 73 2c 20 22 2c 22 29 29 20 3d 3d 20 4e 55 4c 4c 29 0a 09 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 s,.",")).==.NULL)....return.0;..
3600 7d 20 77 68 69 6c 65 20 28 2a 74 6f 6b 65 6e 20 3d 3d 20 27 5c 30 27 29 3b 0a 09 69 66 20 28 6f }.while.(*token.==.'\0');..if.(o
3620 70 74 6f 70 74 29 0a 09 09 2a 6f 70 74 6f 70 74 20 3d 20 74 6f 6b 65 6e 3b 0a 0a 09 69 66 20 28 ptopt)...*optopt.=.token;...if.(
3640 28 76 61 6c 20 3d 20 73 74 72 63 68 72 20 28 74 6f 6b 65 6e 2c 20 27 3d 27 29 29 20 21 3d 20 4e (val.=.strchr.(token,.'=')).!=.N
3660 55 4c 4c 29 20 7b 0a 09 09 2a 76 61 6c 2b 2b 20 3d 20 30 3b 0a 09 7d 0a 09 2a 6f 70 74 61 72 67 ULL).{...*val++.=.0;..}..*optarg
3680 20 3d 20 76 61 6c 3b 0a 09 66 6f 72 20 28 3b 20 6f 70 74 73 2d 3e 6e 61 6d 65 3b 20 6f 70 74 73 .=.val;..for.(;.opts->name;.opts
36a0 2b 2b 29 20 7b 0a 09 09 69 66 20 28 21 73 74 72 63 6d 70 28 6f 70 74 73 2d 3e 6e 61 6d 65 2c 20 ++).{...if.(!strcmp(opts->name,.
36c0 74 6f 6b 65 6e 29 29 20 7b 0a 09 09 09 69 66 20 28 21 76 61 6c 29 20 7b 0a 09 09 09 09 69 66 20 token)).{....if.(!val).{.....if.
36e0 28 6f 70 74 73 2d 3e 68 61 73 5f 61 72 67 20 26 20 4f 50 54 5f 4e 4f 50 41 52 41 4d 29 20 7b 0a (opts->has_arg.&.OPT_NOPARAM).{.
3700 09 09 09 09 09 72 65 74 75 72 6e 20 6f 70 74 73 2d 3e 76 61 6c 3b 0a 09 09 09 09 7d 0a 09 09 09 .....return.opts->val;.....}....
3720 09 70 72 5f 69 6e 66 6f 28 22 25 73 3a 20 74 68 65 20 25 73 20 6f 70 74 69 6f 6e 20 72 65 71 75 .pr_info("%s:.the.%s.option.requ
3740 69 72 65 73 20 61 6e 20 61 72 67 75 6d 65 6e 74 5c 6e 22 2c 0a 09 09 09 09 09 63 61 6c 6c 65 72 ires.an.argument\n",......caller
3760 2c 20 74 6f 6b 65 6e 29 3b 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 49 4e 56 41 4c 3b 0a 09 09 ,.token);.....return.-EINVAL;...
3780 09 7d 0a 09 09 09 69 66 20 28 6f 70 74 73 2d 3e 68 61 73 5f 61 72 67 20 26 20 4f 50 54 5f 49 4e .}....if.(opts->has_arg.&.OPT_IN
37a0 54 29 20 7b 0a 09 09 09 09 69 6e 74 20 72 63 20 3d 20 6b 73 74 72 74 6f 75 6c 28 76 61 6c 2c 20 T).{.....int.rc.=.kstrtoul(val,.
37c0 30 2c 20 76 61 6c 75 65 29 3b 0a 0a 09 09 09 09 69 66 20 28 72 63 29 20 7b 0a 09 09 09 09 09 70 0,.value);......if.(rc).{......p
37e0 72 5f 69 6e 66 6f 28 22 25 73 3a 20 69 6e 76 61 6c 69 64 20 6e 75 6d 65 72 69 63 20 76 61 6c 75 r_info("%s:.invalid.numeric.valu
3800 65 20 69 6e 20 25 73 3d 25 73 5c 6e 22 2c 0a 09 09 09 09 09 09 63 61 6c 6c 65 72 2c 20 74 6f 6b e.in.%s=%s\n",.......caller,.tok
3820 65 6e 2c 20 76 61 6c 29 3b 0a 09 09 09 09 09 72 65 74 75 72 6e 20 72 63 3b 0a 09 09 09 09 7d 0a en,.val);......return.rc;.....}.
3840 09 09 09 09 72 65 74 75 72 6e 20 6f 70 74 73 2d 3e 76 61 6c 3b 0a 09 09 09 7d 0a 09 09 09 69 66 ....return.opts->val;....}....if
3860 20 28 6f 70 74 73 2d 3e 68 61 73 5f 61 72 67 20 26 20 4f 50 54 5f 53 54 52 49 4e 47 29 20 7b 0a .(opts->has_arg.&.OPT_STRING).{.
3880 09 09 09 09 72 65 74 75 72 6e 20 6f 70 74 73 2d 3e 76 61 6c 3b 0a 09 09 09 7d 0a 09 09 09 70 72 ....return.opts->val;....}....pr
38a0 5f 69 6e 66 6f 28 22 25 73 3a 20 75 6e 65 78 70 65 63 74 65 64 20 61 72 67 75 6d 65 6e 74 20 25 _info("%s:.unexpected.argument.%
38c0 73 20 74 6f 20 74 68 65 20 25 73 20 6f 70 74 69 6f 6e 5c 6e 22 2c 0a 09 09 09 09 63 61 6c 6c 65 s.to.the.%s.option\n",.....calle
38e0 72 2c 20 76 61 6c 2c 20 74 6f 6b 65 6e 29 3b 0a 09 09 09 72 65 74 75 72 6e 20 2d 45 49 4e 56 41 r,.val,.token);....return.-EINVA
3900 4c 3b 0a 09 09 7d 0a 09 7d 0a 09 70 72 5f 69 6e 66 6f 28 22 25 73 3a 20 55 6e 72 65 63 6f 67 6e L;...}..}..pr_info("%s:.Unrecogn
3920 69 7a 65 64 20 6d 6f 75 6e 74 20 6f 70 74 69 6f 6e 20 25 73 5c 6e 22 2c 20 63 61 6c 6c 65 72 2c ized.mount.option.%s\n",.caller,
3940 20 74 6f 6b 65 6e 29 3b 0a 09 72 65 74 75 72 6e 20 2d 45 4f 50 4e 4f 54 53 55 50 50 3b 0a 7d 0a .token);..return.-EOPNOTSUPP;.}.
3960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3a00 6e 63 70 66 73 2f 67 65 74 6f 70 74 2e 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ncpfs/getopt.h..................
3a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3a60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 ....0000644.0001750.0001750.0000
3a80 30 30 30 30 35 35 37 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 32 36 35 30 00 20 30 00 00 00 0000557.13023323142.012650..0...
3aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3b00 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...kubax..................
3b20 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........kubax..................
3b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c00 23 69 66 6e 64 65 66 20 5f 4c 49 4e 55 58 5f 47 45 54 4f 50 54 5f 48 0a 23 64 65 66 69 6e 65 20 #ifndef._LINUX_GETOPT_H.#define.
3c20 5f 4c 49 4e 55 58 5f 47 45 54 4f 50 54 5f 48 0a 0a 23 64 65 66 69 6e 65 20 4f 50 54 5f 4e 4f 50 _LINUX_GETOPT_H..#define.OPT_NOP
3c40 41 52 41 4d 09 31 0a 23 64 65 66 69 6e 65 20 4f 50 54 5f 49 4e 54 09 09 32 0a 23 64 65 66 69 6e ARAM.1.#define.OPT_INT..2.#defin
3c60 65 20 4f 50 54 5f 53 54 52 49 4e 47 09 34 0a 73 74 72 75 63 74 20 6e 63 70 5f 6f 70 74 69 6f 6e e.OPT_STRING.4.struct.ncp_option
3c80 20 7b 0a 09 63 6f 6e 73 74 20 63 68 61 72 20 2a 6e 61 6d 65 3b 0a 09 75 6e 73 69 67 6e 65 64 20 .{..const.char.*name;..unsigned.
3ca0 69 6e 74 20 68 61 73 5f 61 72 67 3b 0a 09 69 6e 74 20 76 61 6c 3b 0a 7d 3b 0a 0a 65 78 74 65 72 int.has_arg;..int.val;.};..exter
3cc0 6e 20 69 6e 74 20 6e 63 70 5f 67 65 74 6f 70 74 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 63 61 6c n.int.ncp_getopt(const.char.*cal
3ce0 6c 65 72 2c 20 63 68 61 72 20 2a 2a 6f 70 74 69 6f 6e 73 2c 20 63 6f 6e 73 74 20 73 74 72 75 63 ler,.char.**options,.const.struc
3d00 74 20 6e 63 70 5f 6f 70 74 69 6f 6e 20 2a 6f 70 74 73 2c 0a 09 09 20 20 20 20 20 20 63 68 61 72 t.ncp_option.*opts,.........char
3d20 20 2a 2a 6f 70 74 6f 70 74 2c 20 63 68 61 72 20 2a 2a 6f 70 74 61 72 67 2c 20 75 6e 73 69 67 6e .**optopt,.char.**optarg,.unsign
3d40 65 64 20 6c 6f 6e 67 20 2a 76 61 6c 75 65 29 3b 0a 0a 23 65 6e 64 69 66 20 2f 2a 20 5f 4c 49 4e ed.long.*value);..#endif./*._LIN
3d60 55 58 5f 47 45 54 4f 50 54 5f 48 20 2a 2f 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 UX_GETOPT_H.*/..................
3d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3e00 6e 63 70 66 73 2f 69 6e 6f 64 65 2e 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ncpfs/inode.c...................
3e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3e60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 ....0000644.0001750.0001750.0000
3e80 30 30 36 36 33 30 30 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 32 34 33 35 00 20 30 00 00 00 0066300.13023323142.012435..0...
3ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3f00 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...kubax..................
3f20 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........kubax..................
3f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4000 2f 2a 0a 20 2a 20 20 69 6e 6f 64 65 2e 63 0a 20 2a 0a 20 2a 20 20 43 6f 70 79 72 69 67 68 74 20 /*..*..inode.c..*..*..Copyright.
4020 28 43 29 20 31 39 39 35 2c 20 31 39 39 36 20 62 79 20 56 6f 6c 6b 65 72 20 4c 65 6e 64 65 63 6b (C).1995,.1996.by.Volker.Lendeck
4040 65 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 66 6f 72 20 62 69 67 20 65 6e 64 69 61 6e 20 62 79 e..*..Modified.for.big.endian.by
4060 20 4a 2e 46 2e 20 43 68 61 64 69 6d 61 20 61 6e 64 20 44 61 76 69 64 20 53 2e 20 4d 69 6c 6c 65 .J.F..Chadima.and.David.S..Mille
4080 72 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 37 20 50 65 74 65 72 20 57 61 6c 74 65 6e r..*..Modified.1997.Peter.Walten
40a0 62 65 72 67 2c 20 42 69 6c 6c 20 48 61 77 65 73 2c 20 44 61 76 69 64 20 57 6f 6f 64 68 6f 75 73 berg,.Bill.Hawes,.David.Woodhous
40c0 65 20 66 6f 72 20 32 2e 31 20 64 63 61 63 68 65 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 e.for.2.1.dcache..*..Modified.19
40e0 39 38 20 57 6f 6c 66 72 61 6d 20 50 69 65 6e 6b 6f 73 73 20 66 6f 72 20 4e 4c 53 0a 20 2a 20 20 98.Wolfram.Pienkoss.for.NLS..*..
4100 4d 6f 64 69 66 69 65 64 20 32 30 30 30 20 42 65 6e 20 48 61 72 72 69 73 2c 20 55 6e 69 76 65 72 Modified.2000.Ben.Harris,.Univer
4120 73 69 74 79 20 6f 66 20 43 61 6d 62 72 69 64 67 65 20 66 6f 72 20 4e 46 53 20 4e 53 20 6d 65 74 sity.of.Cambridge.for.NFS.NS.met
4140 61 2d 69 6e 66 6f 0a 20 2a 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 70 72 5f 66 6d 74 28 66 6d a-info..*..*/..#define.pr_fmt(fm
4160 74 29 20 4b 42 55 49 4c 44 5f 4d 4f 44 4e 41 4d 45 20 22 3a 20 22 20 66 6d 74 0a 0a 23 69 6e 63 t).KBUILD_MODNAME.":.".fmt..#inc
4180 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6d 6f 64 75 6c 65 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 lude.<linux/module.h>..#include.
41a0 3c 61 73 6d 2f 75 61 63 63 65 73 73 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 61 73 6d 2f 62 79 <asm/uaccess.h>.#include.<asm/by
41c0 74 65 6f 72 64 65 72 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 74 69 6d 65 teorder.h>..#include.<linux/time
41e0 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6b 65 72 6e 65 6c 2e 68 3e 0a 23 69 .h>.#include.<linux/kernel.h>.#i
4200 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6d 6d 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 nclude.<linux/mm.h>.#include.<li
4220 6e 75 78 2f 73 74 72 69 6e 67 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 74 nux/string.h>.#include.<linux/st
4240 61 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 65 72 72 6e 6f 2e 68 3e 0a 23 at.h>.#include.<linux/errno.h>.#
4260 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 66 69 6c 65 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 include.<linux/file.h>.#include.
4280 3c 6c 69 6e 75 78 2f 66 63 6e 74 6c 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f <linux/fcntl.h>.#include.<linux/
42a0 73 6c 61 62 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 76 6d 61 6c 6c 6f 63 2e slab.h>.#include.<linux/vmalloc.
42c0 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 69 6e 69 74 2e 68 3e 0a 23 69 6e 63 6c h>.#include.<linux/init.h>.#incl
42e0 75 64 65 20 3c 6c 69 6e 75 78 2f 76 66 73 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 ude.<linux/vfs.h>.#include.<linu
4300 78 2f 6d 6f 75 6e 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 65 71 5f 66 x/mount.h>.#include.<linux/seq_f
4320 69 6c 65 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6e 61 6d 65 69 2e 68 3e 0a ile.h>.#include.<linux/namei.h>.
4340 0a 23 69 6e 63 6c 75 64 65 20 3c 6e 65 74 2f 73 6f 63 6b 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 .#include.<net/sock.h>..#include
4360 20 22 6e 63 70 5f 66 73 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 67 65 74 6f 70 74 2e 68 22 0a ."ncp_fs.h".#include."getopt.h".
4380 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 44 45 46 41 55 4c 54 5f 46 49 4c 45 5f 4d 4f 44 45 20 30 .#define.NCP_DEFAULT_FILE_MODE.0
43a0 36 30 30 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 44 45 46 41 55 4c 54 5f 44 49 52 5f 4d 4f 44 45 600.#define.NCP_DEFAULT_DIR_MODE
43c0 20 30 37 30 30 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 44 45 46 41 55 4c 54 5f 54 49 4d 45 5f 4f .0700.#define.NCP_DEFAULT_TIME_O
43e0 55 54 20 31 30 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 44 45 46 41 55 4c 54 5f 52 45 54 52 59 5f UT.10.#define.NCP_DEFAULT_RETRY_
4400 43 4f 55 4e 54 20 32 30 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 65 76 69 63 74 5f COUNT.20..static.void.ncp_evict_
4420 69 6e 6f 64 65 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 29 3b 0a 73 74 61 74 69 63 20 76 6f inode(struct.inode.*);.static.vo
4440 69 64 20 6e 63 70 5f 70 75 74 5f 73 75 70 65 72 28 73 74 72 75 63 74 20 73 75 70 65 72 5f 62 6c id.ncp_put_super(struct.super_bl
4460 6f 63 6b 20 2a 29 3b 0a 73 74 61 74 69 63 20 69 6e 74 20 20 6e 63 70 5f 73 74 61 74 66 73 28 73 ock.*);.static.int..ncp_statfs(s
4480 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 2c 20 73 74 72 75 63 74 20 6b 73 74 61 74 66 73 20 2a truct.dentry.*,.struct.kstatfs.*
44a0 29 3b 0a 73 74 61 74 69 63 20 69 6e 74 20 20 6e 63 70 5f 73 68 6f 77 5f 6f 70 74 69 6f 6e 73 28 );.static.int..ncp_show_options(
44c0 73 74 72 75 63 74 20 73 65 71 5f 66 69 6c 65 20 2a 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 struct.seq_file.*,.struct.dentry
44e0 20 2a 29 3b 0a 0a 73 74 61 74 69 63 20 73 74 72 75 63 74 20 6b 6d 65 6d 5f 63 61 63 68 65 20 2a .*);..static.struct.kmem_cache.*
4500 20 6e 63 70 5f 69 6e 6f 64 65 5f 63 61 63 68 65 70 3b 0a 0a 73 74 61 74 69 63 20 73 74 72 75 63 .ncp_inode_cachep;..static.struc
4520 74 20 69 6e 6f 64 65 20 2a 6e 63 70 5f 61 6c 6c 6f 63 5f 69 6e 6f 64 65 28 73 74 72 75 63 74 20 t.inode.*ncp_alloc_inode(struct.
4540 73 75 70 65 72 5f 62 6c 6f 63 6b 20 2a 73 62 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 69 super_block.*sb).{..struct.ncp_i
4560 6e 6f 64 65 5f 69 6e 66 6f 20 2a 65 69 3b 0a 09 65 69 20 3d 20 28 73 74 72 75 63 74 20 6e 63 70 node_info.*ei;..ei.=.(struct.ncp
4580 5f 69 6e 6f 64 65 5f 69 6e 66 6f 20 2a 29 6b 6d 65 6d 5f 63 61 63 68 65 5f 61 6c 6c 6f 63 28 6e _inode_info.*)kmem_cache_alloc(n
45a0 63 70 5f 69 6e 6f 64 65 5f 63 61 63 68 65 70 2c 20 47 46 50 5f 4b 45 52 4e 45 4c 29 3b 0a 09 69 cp_inode_cachep,.GFP_KERNEL);..i
45c0 66 20 28 21 65 69 29 0a 09 09 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 0a 09 72 65 74 75 72 6e 20 26 f.(!ei)...return.NULL;..return.&
45e0 65 69 2d 3e 76 66 73 5f 69 6e 6f 64 65 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 ei->vfs_inode;.}..static.void.nc
4600 70 5f 69 5f 63 61 6c 6c 62 61 63 6b 28 73 74 72 75 63 74 20 72 63 75 5f 68 65 61 64 20 2a 68 65 p_i_callback(struct.rcu_head.*he
4620 61 64 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 20 3d 20 63 6f 6e ad).{..struct.inode.*inode.=.con
4640 74 61 69 6e 65 72 5f 6f 66 28 68 65 61 64 2c 20 73 74 72 75 63 74 20 69 6e 6f 64 65 2c 20 69 5f tainer_of(head,.struct.inode,.i_
4660 72 63 75 29 3b 0a 09 6b 6d 65 6d 5f 63 61 63 68 65 5f 66 72 65 65 28 6e 63 70 5f 69 6e 6f 64 65 rcu);..kmem_cache_free(ncp_inode
4680 5f 63 61 63 68 65 70 2c 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 29 3b 0a 7d 0a 0a 73 _cachep,.NCP_FINFO(inode));.}..s
46a0 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 64 65 73 74 72 6f 79 5f 69 6e 6f 64 65 28 73 74 72 tatic.void.ncp_destroy_inode(str
46c0 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 29 0a 7b 0a 09 63 61 6c 6c 5f 72 63 75 28 26 69 uct.inode.*inode).{..call_rcu(&i
46e0 6e 6f 64 65 2d 3e 69 5f 72 63 75 2c 20 6e 63 70 5f 69 5f 63 61 6c 6c 62 61 63 6b 29 3b 0a 7d 0a node->i_rcu,.ncp_i_callback);.}.
4700 0a 73 74 61 74 69 63 20 76 6f 69 64 20 69 6e 69 74 5f 6f 6e 63 65 28 76 6f 69 64 20 2a 66 6f 6f .static.void.init_once(void.*foo
4720 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 69 6e 6f 64 65 5f 69 6e 66 6f 20 2a 65 69 20 3d ).{..struct.ncp_inode_info.*ei.=
4740 20 28 73 74 72 75 63 74 20 6e 63 70 5f 69 6e 6f 64 65 5f 69 6e 66 6f 20 2a 29 20 66 6f 6f 3b 0a .(struct.ncp_inode_info.*).foo;.
4760 0a 09 6d 75 74 65 78 5f 69 6e 69 74 28 26 65 69 2d 3e 6f 70 65 6e 5f 6d 75 74 65 78 29 3b 0a 09 ..mutex_init(&ei->open_mutex);..
4780 69 6e 6f 64 65 5f 69 6e 69 74 5f 6f 6e 63 65 28 26 65 69 2d 3e 76 66 73 5f 69 6e 6f 64 65 29 3b inode_init_once(&ei->vfs_inode);
47a0 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 69 6e 69 74 5f 69 6e 6f 64 65 63 61 63 68 65 28 76 .}..static.int.init_inodecache(v
47c0 6f 69 64 29 0a 7b 0a 09 6e 63 70 5f 69 6e 6f 64 65 5f 63 61 63 68 65 70 20 3d 20 6b 6d 65 6d 5f oid).{..ncp_inode_cachep.=.kmem_
47e0 63 61 63 68 65 5f 63 72 65 61 74 65 28 22 6e 63 70 5f 69 6e 6f 64 65 5f 63 61 63 68 65 22 2c 0a cache_create("ncp_inode_cache",.
4800 09 09 09 09 09 20 20 20 20 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 6e 63 70 5f 69 6e 6f 64 ..........sizeof(struct.ncp_inod
4820 65 5f 69 6e 66 6f 29 2c 0a 09 09 09 09 09 20 20 20 20 20 30 2c 20 28 53 4c 41 42 5f 52 45 43 4c e_info),...........0,.(SLAB_RECL
4840 41 49 4d 5f 41 43 43 4f 55 4e 54 7c 0a 09 09 09 09 09 09 53 4c 41 42 5f 4d 45 4d 5f 53 50 52 45 AIM_ACCOUNT|.......SLAB_MEM_SPRE
4860 41 44 7c 53 4c 41 42 5f 41 43 43 4f 55 4e 54 29 2c 0a 09 09 09 09 09 20 20 20 20 20 69 6e 69 74 AD|SLAB_ACCOUNT),...........init
4880 5f 6f 6e 63 65 29 3b 0a 09 69 66 20 28 6e 63 70 5f 69 6e 6f 64 65 5f 63 61 63 68 65 70 20 3d 3d _once);..if.(ncp_inode_cachep.==
48a0 20 4e 55 4c 4c 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 4e 4f 4d 45 4d 3b 0a 09 72 65 74 75 72 6e .NULL)...return.-ENOMEM;..return
48c0 20 30 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 64 65 73 74 72 6f 79 5f 69 6e 6f 64 65 .0;.}..static.void.destroy_inode
48e0 63 61 63 68 65 28 76 6f 69 64 29 0a 7b 0a 09 2f 2a 0a 09 20 2a 20 4d 61 6b 65 20 73 75 72 65 20 cache(void).{../*...*.Make.sure.
4900 61 6c 6c 20 64 65 6c 61 79 65 64 20 72 63 75 20 66 72 65 65 20 69 6e 6f 64 65 73 20 61 72 65 20 all.delayed.rcu.free.inodes.are.
4920 66 6c 75 73 68 65 64 20 62 65 66 6f 72 65 20 77 65 0a 09 20 2a 20 64 65 73 74 72 6f 79 20 63 61 flushed.before.we...*.destroy.ca
4940 63 68 65 2e 0a 09 20 2a 2f 0a 09 72 63 75 5f 62 61 72 72 69 65 72 28 29 3b 0a 09 6b 6d 65 6d 5f che....*/..rcu_barrier();..kmem_
4960 63 61 63 68 65 5f 64 65 73 74 72 6f 79 28 6e 63 70 5f 69 6e 6f 64 65 5f 63 61 63 68 65 70 29 3b cache_destroy(ncp_inode_cachep);
4980 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 72 65 6d 6f 75 6e 74 28 73 74 72 75 63 .}..static.int.ncp_remount(struc
49a0 74 20 73 75 70 65 72 5f 62 6c 6f 63 6b 20 2a 73 62 2c 20 69 6e 74 20 2a 66 6c 61 67 73 2c 20 63 t.super_block.*sb,.int.*flags,.c
49c0 68 61 72 2a 20 64 61 74 61 29 0a 7b 0a 09 73 79 6e 63 5f 66 69 6c 65 73 79 73 74 65 6d 28 73 62 har*.data).{..sync_filesystem(sb
49e0 29 3b 0a 09 2a 66 6c 61 67 73 20 7c 3d 20 4d 53 5f 4e 4f 44 49 52 41 54 49 4d 45 3b 0a 09 72 65 );..*flags.|=.MS_NODIRATIME;..re
4a00 74 75 72 6e 20 30 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 73 turn.0;.}..static.const.struct.s
4a20 75 70 65 72 5f 6f 70 65 72 61 74 69 6f 6e 73 20 6e 63 70 5f 73 6f 70 73 20 3d 0a 7b 0a 09 2e 61 uper_operations.ncp_sops.=.{...a
4a40 6c 6c 6f 63 5f 69 6e 6f 64 65 09 3d 20 6e 63 70 5f 61 6c 6c 6f 63 5f 69 6e 6f 64 65 2c 0a 09 2e lloc_inode.=.ncp_alloc_inode,...
4a60 64 65 73 74 72 6f 79 5f 69 6e 6f 64 65 09 3d 20 6e 63 70 5f 64 65 73 74 72 6f 79 5f 69 6e 6f 64 destroy_inode.=.ncp_destroy_inod
4a80 65 2c 0a 09 2e 64 72 6f 70 5f 69 6e 6f 64 65 09 3d 20 67 65 6e 65 72 69 63 5f 64 65 6c 65 74 65 e,...drop_inode.=.generic_delete
4aa0 5f 69 6e 6f 64 65 2c 0a 09 2e 65 76 69 63 74 5f 69 6e 6f 64 65 09 3d 20 6e 63 70 5f 65 76 69 63 _inode,...evict_inode.=.ncp_evic
4ac0 74 5f 69 6e 6f 64 65 2c 0a 09 2e 70 75 74 5f 73 75 70 65 72 09 3d 20 6e 63 70 5f 70 75 74 5f 73 t_inode,...put_super.=.ncp_put_s
4ae0 75 70 65 72 2c 0a 09 2e 73 74 61 74 66 73 09 09 3d 20 6e 63 70 5f 73 74 61 74 66 73 2c 0a 09 2e uper,...statfs..=.ncp_statfs,...
4b00 72 65 6d 6f 75 6e 74 5f 66 73 09 3d 20 6e 63 70 5f 72 65 6d 6f 75 6e 74 2c 0a 09 2e 73 68 6f 77 remount_fs.=.ncp_remount,...show
4b20 5f 6f 70 74 69 6f 6e 73 09 3d 20 6e 63 70 5f 73 68 6f 77 5f 6f 70 74 69 6f 6e 73 2c 0a 7d 3b 0a _options.=.ncp_show_options,.};.
4b40 0a 2f 2a 0a 20 2a 20 46 69 6c 6c 20 69 6e 20 74 68 65 20 6e 63 70 66 73 2d 73 70 65 63 69 66 69 ./*..*.Fill.in.the.ncpfs-specifi
4b60 63 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 6e 20 74 68 65 20 69 6e 6f 64 65 2e 0a 20 2a 2f 0a c.information.in.the.inode...*/.
4b80 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 75 70 64 61 74 65 5f 64 69 72 65 6e 74 28 73 74 static.void.ncp_update_dirent(st
4ba0 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 65 6e ruct.inode.*inode,.struct.ncp_en
4bc0 74 72 79 5f 69 6e 66 6f 20 2a 6e 77 69 6e 66 6f 29 0a 7b 0a 09 4e 43 50 5f 46 49 4e 46 4f 28 69 try_info.*nwinfo).{..NCP_FINFO(i
4be0 6e 6f 64 65 29 2d 3e 44 6f 73 44 69 72 4e 75 6d 20 3d 20 6e 77 69 6e 66 6f 2d 3e 69 2e 44 6f 73 node)->DosDirNum.=.nwinfo->i.Dos
4c00 44 69 72 4e 75 6d 3b 0a 09 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 64 69 72 45 6e DirNum;..NCP_FINFO(inode)->dirEn
4c20 74 4e 75 6d 20 3d 20 6e 77 69 6e 66 6f 2d 3e 69 2e 64 69 72 45 6e 74 4e 75 6d 3b 0a 09 4e 43 50 tNum.=.nwinfo->i.dirEntNum;..NCP
4c40 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 20 3d 20 6e 77 69 6e 66 _FINFO(inode)->volNumber.=.nwinf
4c60 6f 2d 3e 76 6f 6c 75 6d 65 3b 0a 7d 0a 0a 76 6f 69 64 20 6e 63 70 5f 75 70 64 61 74 65 5f 69 6e o->volume;.}..void.ncp_update_in
4c80 6f 64 65 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 2c 20 73 74 72 75 63 74 20 ode(struct.inode.*inode,.struct.
4ca0 6e 63 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 2a 6e 77 69 6e 66 6f 29 0a 7b 0a 09 6e 63 70 5f 75 ncp_entry_info.*nwinfo).{..ncp_u
4cc0 70 64 61 74 65 5f 64 69 72 65 6e 74 28 69 6e 6f 64 65 2c 20 6e 77 69 6e 66 6f 29 3b 0a 09 4e 43 pdate_dirent(inode,.nwinfo);..NC
4ce0 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6e 77 61 74 74 72 20 3d 20 6e 77 69 6e 66 6f 2d P_FINFO(inode)->nwattr.=.nwinfo-
4d00 3e 69 2e 61 74 74 72 69 62 75 74 65 73 3b 0a 09 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 >i.attributes;..NCP_FINFO(inode)
4d20 2d 3e 61 63 63 65 73 73 20 3d 20 6e 77 69 6e 66 6f 2d 3e 61 63 63 65 73 73 3b 0a 09 6d 65 6d 63 ->access.=.nwinfo->access;..memc
4d40 70 79 28 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 66 69 6c 65 5f 68 61 6e 64 6c 65 py(NCP_FINFO(inode)->file_handle
4d60 2c 20 6e 77 69 6e 66 6f 2d 3e 66 69 6c 65 5f 68 61 6e 64 6c 65 2c 0a 09 09 09 73 69 7a 65 6f 66 ,.nwinfo->file_handle,....sizeof
4d80 28 6e 77 69 6e 66 6f 2d 3e 66 69 6c 65 5f 68 61 6e 64 6c 65 29 29 3b 0a 09 6e 63 70 5f 64 62 67 (nwinfo->file_handle));..ncp_dbg
4da0 28 31 2c 20 22 75 70 64 61 74 65 64 20 25 73 2c 20 76 6f 6c 6e 75 6d 3d 25 64 2c 20 64 69 72 65 (1,."updated.%s,.volnum=%d,.dire
4dc0 6e 74 3d 25 75 5c 6e 22 2c 0a 09 09 6e 77 69 6e 66 6f 2d 3e 69 2e 65 6e 74 72 79 4e 61 6d 65 2c nt=%u\n",...nwinfo->i.entryName,
4de0 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 2c 0a 09 09 .NCP_FINFO(inode)->volNumber,...
4e00 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 64 69 72 45 6e 74 4e 75 6d 29 3b 0a 7d 0a NCP_FINFO(inode)->dirEntNum);.}.
4e20 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 75 70 64 61 74 65 5f 64 61 74 65 73 28 73 74 .static.void.ncp_update_dates(st
4e40 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 2c 20 73 74 72 75 63 74 20 6e 77 5f 69 6e 66 ruct.inode.*inode,.struct.nw_inf
4e60 6f 5f 73 74 72 75 63 74 20 2a 6e 77 69 29 0a 7b 0a 09 2f 2a 20 4e 46 53 20 6e 61 6d 65 73 70 61 o_struct.*nwi).{../*.NFS.namespa
4e80 63 65 20 6d 6f 64 65 20 6f 76 65 72 72 69 64 65 73 20 6f 74 68 65 72 73 20 69 66 20 69 74 27 73 ce.mode.overrides.others.if.it's
4ea0 20 73 65 74 2e 20 2a 2f 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 28 25 73 29 20 6e 66 73 2e 6d .set..*/..ncp_dbg(1,."(%s).nfs.m
4ec0 6f 64 65 3d 30 25 6f 5c 6e 22 2c 20 6e 77 69 2d 3e 65 6e 74 72 79 4e 61 6d 65 2c 20 6e 77 69 2d ode=0%o\n",.nwi->entryName,.nwi-
4ee0 3e 6e 66 73 2e 6d 6f 64 65 29 3b 0a 09 69 66 20 28 6e 77 69 2d 3e 6e 66 73 2e 6d 6f 64 65 29 20 >nfs.mode);..if.(nwi->nfs.mode).
4f00 7b 0a 09 09 2f 2a 20 58 58 58 20 53 65 63 75 72 69 74 79 3f 20 2a 2f 0a 09 09 69 6e 6f 64 65 2d {.../*.XXX.Security?.*/...inode-
4f20 3e 69 5f 6d 6f 64 65 20 3d 20 6e 77 69 2d 3e 6e 66 73 2e 6d 6f 64 65 3b 0a 09 7d 0a 0a 09 69 6e >i_mode.=.nwi->nfs.mode;..}...in
4f40 6f 64 65 2d 3e 69 5f 62 6c 6f 63 6b 73 20 3d 20 28 69 5f 73 69 7a 65 5f 72 65 61 64 28 69 6e 6f ode->i_blocks.=.(i_size_read(ino
4f60 64 65 29 20 2b 20 4e 43 50 5f 42 4c 4f 43 4b 5f 53 49 5a 45 20 2d 20 31 29 20 3e 3e 20 4e 43 50 de).+.NCP_BLOCK_SIZE.-.1).>>.NCP
4f80 5f 42 4c 4f 43 4b 5f 53 48 49 46 54 3b 0a 0a 09 69 6e 6f 64 65 2d 3e 69 5f 6d 74 69 6d 65 2e 74 _BLOCK_SHIFT;...inode->i_mtime.t
4fa0 76 5f 73 65 63 20 3d 20 6e 63 70 5f 64 61 74 65 5f 64 6f 73 32 75 6e 69 78 28 6e 77 69 2d 3e 6d v_sec.=.ncp_date_dos2unix(nwi->m
4fc0 6f 64 69 66 79 54 69 6d 65 2c 20 6e 77 69 2d 3e 6d 6f 64 69 66 79 44 61 74 65 29 3b 0a 09 69 6e odifyTime,.nwi->modifyDate);..in
4fe0 6f 64 65 2d 3e 69 5f 63 74 69 6d 65 2e 74 76 5f 73 65 63 20 3d 20 6e 63 70 5f 64 61 74 65 5f 64 ode->i_ctime.tv_sec.=.ncp_date_d
5000 6f 73 32 75 6e 69 78 28 6e 77 69 2d 3e 63 72 65 61 74 69 6f 6e 54 69 6d 65 2c 20 6e 77 69 2d 3e os2unix(nwi->creationTime,.nwi->
5020 63 72 65 61 74 69 6f 6e 44 61 74 65 29 3b 0a 09 69 6e 6f 64 65 2d 3e 69 5f 61 74 69 6d 65 2e 74 creationDate);..inode->i_atime.t
5040 76 5f 73 65 63 20 3d 20 6e 63 70 5f 64 61 74 65 5f 64 6f 73 32 75 6e 69 78 28 30 2c 20 6e 77 69 v_sec.=.ncp_date_dos2unix(0,.nwi
5060 2d 3e 6c 61 73 74 41 63 63 65 73 73 44 61 74 65 29 3b 0a 09 69 6e 6f 64 65 2d 3e 69 5f 61 74 69 ->lastAccessDate);..inode->i_ati
5080 6d 65 2e 74 76 5f 6e 73 65 63 20 3d 20 30 3b 0a 09 69 6e 6f 64 65 2d 3e 69 5f 6d 74 69 6d 65 2e me.tv_nsec.=.0;..inode->i_mtime.
50a0 74 76 5f 6e 73 65 63 20 3d 20 30 3b 0a 09 69 6e 6f 64 65 2d 3e 69 5f 63 74 69 6d 65 2e 74 76 5f tv_nsec.=.0;..inode->i_ctime.tv_
50c0 6e 73 65 63 20 3d 20 30 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 75 70 64 nsec.=.0;.}..static.void.ncp_upd
50e0 61 74 65 5f 61 74 74 72 73 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 2c 20 73 ate_attrs(struct.inode.*inode,.s
5100 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 2a 6e 77 69 6e 66 6f 29 0a 7b 0a truct.ncp_entry_info.*nwinfo).{.
5120 09 73 74 72 75 63 74 20 6e 77 5f 69 6e 66 6f 5f 73 74 72 75 63 74 20 2a 6e 77 69 20 3d 20 26 6e .struct.nw_info_struct.*nwi.=.&n
5140 77 69 6e 66 6f 2d 3e 69 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 winfo->i;..struct.ncp_server.*se
5160 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 3b 0a 0a 09 69 66 20 28 rver.=.NCP_SERVER(inode);...if.(
5180 6e 77 69 2d 3e 61 74 74 72 69 62 75 74 65 73 20 26 20 61 44 49 52 29 20 7b 0a 09 09 69 6e 6f 64 nwi->attributes.&.aDIR).{...inod
51a0 65 2d 3e 69 5f 6d 6f 64 65 20 3d 20 73 65 72 76 65 72 2d 3e 6d 2e 64 69 72 5f 6d 6f 64 65 3b 0a e->i_mode.=.server->m.dir_mode;.
51c0 09 09 2f 2a 20 66 6f 72 20 64 69 72 65 63 74 6f 72 69 65 73 20 64 61 74 61 53 74 72 65 61 6d 53 ../*.for.directories.dataStreamS
51e0 69 7a 65 20 73 65 65 6d 73 20 74 6f 20 62 65 20 73 6f 6d 65 0a 09 09 20 20 20 4f 62 6a 65 63 74 ize.seems.to.be.some......Object
5200 20 49 44 20 3f 3f 3f 20 2a 2f 0a 09 09 69 5f 73 69 7a 65 5f 77 72 69 74 65 28 69 6e 6f 64 65 2c .ID.???.*/...i_size_write(inode,
5220 20 4e 43 50 5f 42 4c 4f 43 4b 5f 53 49 5a 45 29 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 75 33 .NCP_BLOCK_SIZE);..}.else.{...u3
5240 32 20 73 69 7a 65 3b 0a 0a 09 09 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 20 3d 20 73 65 72 76 65 2.size;....inode->i_mode.=.serve
5260 72 2d 3e 6d 2e 66 69 6c 65 5f 6d 6f 64 65 3b 0a 09 09 73 69 7a 65 20 3d 20 6c 65 33 32 5f 74 6f r->m.file_mode;...size.=.le32_to
5280 5f 63 70 75 28 6e 77 69 2d 3e 64 61 74 61 53 74 72 65 61 6d 53 69 7a 65 29 3b 0a 09 09 69 5f 73 _cpu(nwi->dataStreamSize);...i_s
52a0 69 7a 65 5f 77 72 69 74 65 28 69 6e 6f 64 65 2c 20 73 69 7a 65 29 3b 0a 23 69 66 64 65 66 20 43 ize_write(inode,.size);.#ifdef.C
52c0 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 45 58 54 52 41 53 0a 09 09 69 66 20 28 28 73 65 72 76 65 72 ONFIG_NCPFS_EXTRAS...if.((server
52e0 2d 3e 6d 2e 66 6c 61 67 73 20 26 20 28 4e 43 50 5f 4d 4f 55 4e 54 5f 45 58 54 52 41 53 7c 4e 43 ->m.flags.&.(NCP_MOUNT_EXTRAS|NC
5300 50 5f 4d 4f 55 4e 54 5f 53 59 4d 4c 49 4e 4b 53 29 29 20 0a 09 09 20 26 26 20 28 6e 77 69 2d 3e P_MOUNT_SYMLINKS)).....&&.(nwi->
5320 61 74 74 72 69 62 75 74 65 73 20 26 20 61 53 48 41 52 45 44 29 29 20 7b 0a 09 09 09 73 77 69 74 attributes.&.aSHARED)).{....swit
5340 63 68 20 28 6e 77 69 2d 3e 61 74 74 72 69 62 75 74 65 73 20 26 20 28 61 48 49 44 44 45 4e 7c 61 ch.(nwi->attributes.&.(aHIDDEN|a
5360 53 59 53 54 45 4d 29 29 20 7b 0a 09 09 09 09 63 61 73 65 20 61 48 49 44 44 45 4e 3a 0a 09 09 09 SYSTEM)).{.....case.aHIDDEN:....
5380 09 09 69 66 20 28 73 65 72 76 65 72 2d 3e 6d 2e 66 6c 61 67 73 20 26 20 4e 43 50 5f 4d 4f 55 4e ..if.(server->m.flags.&.NCP_MOUN
53a0 54 5f 53 59 4d 4c 49 4e 4b 53 29 20 7b 0a 09 09 09 09 09 09 69 66 20 28 2f 2a 20 28 73 69 7a 65 T_SYMLINKS).{.......if.(/*.(size
53c0 20 3e 3d 20 4e 43 50 5f 4d 49 4e 5f 53 59 4d 4c 49 4e 4b 5f 53 49 5a 45 29 0a 09 09 09 09 09 09 .>=.NCP_MIN_SYMLINK_SIZE).......
53e0 20 26 26 20 2a 2f 20 28 73 69 7a 65 20 3c 3d 20 4e 43 50 5f 4d 41 58 5f 53 59 4d 4c 49 4e 4b 5f .&&.*/.(size.<=.NCP_MAX_SYMLINK_
5400 53 49 5a 45 29 29 20 7b 0a 09 09 09 09 09 09 09 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 20 3d 20 SIZE)).{........inode->i_mode.=.
5420 28 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 20 26 20 7e 53 5f 49 46 4d 54 29 20 7c 20 53 5f 49 46 (inode->i_mode.&.~S_IFMT).|.S_IF
5440 4c 4e 4b 3b 0a 09 09 09 09 09 09 09 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 66 6c LNK;........NCP_FINFO(inode)->fl
5460 61 67 73 20 7c 3d 20 4e 43 50 49 5f 4b 4c 55 44 47 45 5f 53 59 4d 4c 49 4e 4b 3b 0a 09 09 09 09 ags.|=.NCPI_KLUDGE_SYMLINK;.....
5480 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 09 09 09 7d 0a 09 09 09 09 09 7d 0a 09 09 09 09 09 2f 2a ...break;.......}......}....../*
54a0 20 46 41 4c 4c 54 48 52 4f 55 47 48 20 2a 2f 0a 09 09 09 09 63 61 73 65 20 30 3a 0a 09 09 09 09 .FALLTHROUGH.*/.....case.0:.....
54c0 09 69 66 20 28 73 65 72 76 65 72 2d 3e 6d 2e 66 6c 61 67 73 20 26 20 4e 43 50 5f 4d 4f 55 4e 54 .if.(server->m.flags.&.NCP_MOUNT
54e0 5f 45 58 54 52 41 53 29 0a 09 09 09 09 09 09 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 20 7c 3d 20 _EXTRAS).......inode->i_mode.|=.
5500 53 5f 49 52 55 47 4f 3b 0a 09 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 09 63 61 73 65 20 61 53 S_IRUGO;......break;.....case.aS
5520 59 53 54 45 4d 3a 0a 09 09 09 09 09 69 66 20 28 73 65 72 76 65 72 2d 3e 6d 2e 66 6c 61 67 73 20 YSTEM:......if.(server->m.flags.
5540 26 20 4e 43 50 5f 4d 4f 55 4e 54 5f 45 58 54 52 41 53 29 0a 09 09 09 09 09 09 69 6e 6f 64 65 2d &.NCP_MOUNT_EXTRAS).......inode-
5560 3e 69 5f 6d 6f 64 65 20 7c 3d 20 28 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 20 3e 3e 20 32 29 20 >i_mode.|=.(inode->i_mode.>>.2).
5580 26 20 53 5f 49 58 55 47 4f 3b 0a 09 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 09 2f 2a 20 63 61 &.S_IXUGO;......break;...../*.ca
55a0 73 65 20 61 53 59 53 54 45 4d 7c 61 48 49 44 44 45 4e 3a 20 2a 2f 0a 09 09 09 09 64 65 66 61 75 se.aSYSTEM|aHIDDEN:.*/.....defau
55c0 6c 74 3a 0a 09 09 09 09 09 2f 2a 20 72 65 73 65 72 76 65 64 20 63 6f 6d 62 69 6e 61 74 69 6f 6e lt:....../*.reserved.combination
55e0 20 2a 2f 0a 09 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 7d 0a 09 09 7d 0a 23 65 6e 64 69 66 0a .*/......break;....}...}.#endif.
5600 09 7d 0a 09 69 66 20 28 6e 77 69 2d 3e 61 74 74 72 69 62 75 74 65 73 20 26 20 61 52 4f 4e 4c 59 .}..if.(nwi->attributes.&.aRONLY
5620 29 20 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 20 26 3d 20 7e 53 5f 49 57 55 47 4f 3b 0a 7d 0a 0a ).inode->i_mode.&=.~S_IWUGO;.}..
5640 76 6f 69 64 20 6e 63 70 5f 75 70 64 61 74 65 5f 69 6e 6f 64 65 32 28 73 74 72 75 63 74 20 69 6e void.ncp_update_inode2(struct.in
5660 6f 64 65 2a 20 69 6e 6f 64 65 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 5f 69 6e 66 ode*.inode,.struct.ncp_entry_inf
5680 6f 20 2a 6e 77 69 6e 66 6f 29 0a 7b 0a 09 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e o.*nwinfo).{..NCP_FINFO(inode)->
56a0 66 6c 61 67 73 20 3d 20 30 3b 0a 09 69 66 20 28 21 61 74 6f 6d 69 63 5f 72 65 61 64 28 26 4e 43 flags.=.0;..if.(!atomic_read(&NC
56c0 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6f 70 65 6e 65 64 29 29 20 7b 0a 09 09 4e 43 50 P_FINFO(inode)->opened)).{...NCP
56e0 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6e 77 61 74 74 72 20 3d 20 6e 77 69 6e 66 6f 2d 3e _FINFO(inode)->nwattr.=.nwinfo->
5700 69 2e 61 74 74 72 69 62 75 74 65 73 3b 0a 09 09 6e 63 70 5f 75 70 64 61 74 65 5f 61 74 74 72 73 i.attributes;...ncp_update_attrs
5720 28 69 6e 6f 64 65 2c 20 6e 77 69 6e 66 6f 29 3b 0a 09 7d 0a 0a 09 6e 63 70 5f 75 70 64 61 74 65 (inode,.nwinfo);..}...ncp_update
5740 5f 64 61 74 65 73 28 69 6e 6f 64 65 2c 20 26 6e 77 69 6e 66 6f 2d 3e 69 29 3b 0a 09 6e 63 70 5f _dates(inode,.&nwinfo->i);..ncp_
5760 75 70 64 61 74 65 5f 64 69 72 65 6e 74 28 69 6e 6f 64 65 2c 20 6e 77 69 6e 66 6f 29 3b 0a 7d 0a update_dirent(inode,.nwinfo);.}.
5780 0a 2f 2a 0a 20 2a 20 46 69 6c 6c 20 69 6e 20 74 68 65 20 69 6e 6f 64 65 20 62 61 73 65 64 20 6f ./*..*.Fill.in.the.inode.based.o
57a0 6e 20 74 68 65 20 6e 63 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 73 74 72 75 63 74 75 72 65 2e 20 n.the.ncp_entry_info.structure..
57c0 20 55 73 65 64 20 6f 6e 6c 79 20 66 6f 72 20 62 72 61 6e 64 20 6e 65 77 20 69 6e 6f 64 65 73 2e .Used.only.for.brand.new.inodes.
57e0 0a 20 2a 2f 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 73 65 74 5f 61 74 74 72 28 73 74 ..*/.static.void.ncp_set_attr(st
5800 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 65 6e ruct.inode.*inode,.struct.ncp_en
5820 74 72 79 5f 69 6e 66 6f 20 2a 6e 77 69 6e 66 6f 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f try_info.*nwinfo).{..struct.ncp_
5840 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 server.*server.=.NCP_SERVER(inod
5860 65 29 3b 0a 0a 09 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 66 6c 61 67 73 20 3d 20 e);...NCP_FINFO(inode)->flags.=.
5880 30 3b 0a 09 0a 09 6e 63 70 5f 75 70 64 61 74 65 5f 61 74 74 72 73 28 69 6e 6f 64 65 2c 20 6e 77 0;....ncp_update_attrs(inode,.nw
58a0 69 6e 66 6f 29 3b 0a 0a 09 6e 63 70 5f 64 62 67 28 32 2c 20 22 69 6e 6f 64 65 2d 3e 69 5f 6d 6f info);...ncp_dbg(2,."inode->i_mo
58c0 64 65 20 3d 20 25 75 5c 6e 22 2c 20 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 29 3b 0a 0a 09 73 65 de.=.%u\n",.inode->i_mode);...se
58e0 74 5f 6e 6c 69 6e 6b 28 69 6e 6f 64 65 2c 20 31 29 3b 0a 09 69 6e 6f 64 65 2d 3e 69 5f 75 69 64 t_nlink(inode,.1);..inode->i_uid
5900 20 3d 20 73 65 72 76 65 72 2d 3e 6d 2e 75 69 64 3b 0a 09 69 6e 6f 64 65 2d 3e 69 5f 67 69 64 20 .=.server->m.uid;..inode->i_gid.
5920 3d 20 73 65 72 76 65 72 2d 3e 6d 2e 67 69 64 3b 0a 0a 09 6e 63 70 5f 75 70 64 61 74 65 5f 64 61 =.server->m.gid;...ncp_update_da
5940 74 65 73 28 69 6e 6f 64 65 2c 20 26 6e 77 69 6e 66 6f 2d 3e 69 29 3b 0a 09 6e 63 70 5f 75 70 64 tes(inode,.&nwinfo->i);..ncp_upd
5960 61 74 65 5f 69 6e 6f 64 65 28 69 6e 6f 64 65 2c 20 6e 77 69 6e 66 6f 29 3b 0a 7d 0a 0a 23 69 66 ate_inode(inode,.nwinfo);.}..#if
5980 20 64 65 66 69 6e 65 64 28 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 45 58 54 52 41 53 29 20 7c 7c .defined(CONFIG_NCPFS_EXTRAS).||
59a0 20 64 65 66 69 6e 65 64 28 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 29 0a 73 74 .defined(CONFIG_NCPFS_NFS_NS).st
59c0 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 69 6e 6f 64 65 5f 6f 70 65 72 61 74 69 6f atic.const.struct.inode_operatio
59e0 6e 73 20 6e 63 70 5f 73 79 6d 6c 69 6e 6b 5f 69 6e 6f 64 65 5f 6f 70 65 72 61 74 69 6f 6e 73 20 ns.ncp_symlink_inode_operations.
5a00 3d 20 7b 0a 09 2e 72 65 61 64 6c 69 6e 6b 09 3d 20 67 65 6e 65 72 69 63 5f 72 65 61 64 6c 69 6e =.{...readlink.=.generic_readlin
5a20 6b 2c 0a 09 2e 67 65 74 5f 6c 69 6e 6b 09 3d 20 70 61 67 65 5f 67 65 74 5f 6c 69 6e 6b 2c 0a 09 k,...get_link.=.page_get_link,..
5a40 2e 73 65 74 61 74 74 72 09 3d 20 6e 63 70 5f 6e 6f 74 69 66 79 5f 63 68 61 6e 67 65 2c 0a 7d 3b .setattr.=.ncp_notify_change,.};
5a60 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a 20 2a 20 47 65 74 20 61 20 6e 65 77 20 69 6e 6f 64 65 2e 0a .#endif../*..*.Get.a.new.inode..
5a80 20 2a 2f 0a 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 20 0a 6e 63 70 5f 69 67 65 74 28 73 74 72 .*/.struct.inode.*..ncp_iget(str
5aa0 75 63 74 20 73 75 70 65 72 5f 62 6c 6f 63 6b 20 2a 73 62 2c 20 73 74 72 75 63 74 20 6e 63 70 5f uct.super_block.*sb,.struct.ncp_
5ac0 65 6e 74 72 79 5f 69 6e 66 6f 20 2a 69 6e 66 6f 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 entry_info.*info).{..struct.inod
5ae0 65 20 2a 69 6e 6f 64 65 3b 0a 0a 09 69 66 20 28 69 6e 66 6f 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a e.*inode;...if.(info.==.NULL).{.
5b00 09 09 70 72 5f 65 72 72 28 22 25 73 3a 20 69 6e 66 6f 20 69 73 20 4e 55 4c 4c 5c 6e 22 2c 20 5f ..pr_err("%s:.info.is.NULL\n",._
5b20 5f 66 75 6e 63 5f 5f 29 3b 0a 09 09 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 0a 09 7d 0a 0a 09 69 6e _func__);...return.NULL;..}...in
5b40 6f 64 65 20 3d 20 6e 65 77 5f 69 6e 6f 64 65 28 73 62 29 3b 0a 09 69 66 20 28 69 6e 6f 64 65 29 ode.=.new_inode(sb);..if.(inode)
5b60 20 7b 0a 09 09 61 74 6f 6d 69 63 5f 73 65 74 28 26 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 .{...atomic_set(&NCP_FINFO(inode
5b80 29 2d 3e 6f 70 65 6e 65 64 2c 20 69 6e 66 6f 2d 3e 6f 70 65 6e 65 64 29 3b 0a 0a 09 09 69 6e 6f )->opened,.info->opened);....ino
5ba0 64 65 2d 3e 69 5f 69 6e 6f 20 3d 20 69 6e 66 6f 2d 3e 69 6e 6f 3b 0a 09 09 6e 63 70 5f 73 65 74 de->i_ino.=.info->ino;...ncp_set
5bc0 5f 61 74 74 72 28 69 6e 6f 64 65 2c 20 69 6e 66 6f 29 3b 0a 09 09 69 66 20 28 53 5f 49 53 52 45 _attr(inode,.info);...if.(S_ISRE
5be0 47 28 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 29 29 20 7b 0a 09 09 09 69 6e 6f 64 65 2d 3e 69 5f G(inode->i_mode)).{....inode->i_
5c00 6f 70 20 3d 20 26 6e 63 70 5f 66 69 6c 65 5f 69 6e 6f 64 65 5f 6f 70 65 72 61 74 69 6f 6e 73 3b op.=.&ncp_file_inode_operations;
5c20 0a 09 09 09 69 6e 6f 64 65 2d 3e 69 5f 66 6f 70 20 3d 20 26 6e 63 70 5f 66 69 6c 65 5f 6f 70 65 ....inode->i_fop.=.&ncp_file_ope
5c40 72 61 74 69 6f 6e 73 3b 0a 09 09 7d 20 65 6c 73 65 20 69 66 20 28 53 5f 49 53 44 49 52 28 69 6e rations;...}.else.if.(S_ISDIR(in
5c60 6f 64 65 2d 3e 69 5f 6d 6f 64 65 29 29 20 7b 0a 09 09 09 69 6e 6f 64 65 2d 3e 69 5f 6f 70 20 3d ode->i_mode)).{....inode->i_op.=
5c80 20 26 6e 63 70 5f 64 69 72 5f 69 6e 6f 64 65 5f 6f 70 65 72 61 74 69 6f 6e 73 3b 0a 09 09 09 69 .&ncp_dir_inode_operations;....i
5ca0 6e 6f 64 65 2d 3e 69 5f 66 6f 70 20 3d 20 26 6e 63 70 5f 64 69 72 5f 6f 70 65 72 61 74 69 6f 6e node->i_fop.=.&ncp_dir_operation
5cc0 73 3b 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 0a 09 09 s;.#ifdef.CONFIG_NCPFS_NFS_NS...
5ce0 7d 20 65 6c 73 65 20 69 66 20 28 53 5f 49 53 43 48 52 28 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 }.else.if.(S_ISCHR(inode->i_mode
5d00 29 20 7c 7c 20 53 5f 49 53 42 4c 4b 28 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 29 20 7c 7c 20 53 ).||.S_ISBLK(inode->i_mode).||.S
5d20 5f 49 53 46 49 46 4f 28 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 29 20 7c 7c 20 53 5f 49 53 53 4f _ISFIFO(inode->i_mode).||.S_ISSO
5d40 43 4b 28 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 29 29 20 7b 0a 09 09 09 69 6e 69 74 5f 73 70 65 CK(inode->i_mode)).{....init_spe
5d60 63 69 61 6c 5f 69 6e 6f 64 65 28 69 6e 6f 64 65 2c 20 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 2c cial_inode(inode,.inode->i_mode,
5d80 0a 09 09 09 09 6e 65 77 5f 64 65 63 6f 64 65 5f 64 65 76 28 69 6e 66 6f 2d 3e 69 2e 6e 66 73 2e .....new_decode_dev(info->i.nfs.
5da0 72 64 65 76 29 29 3b 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 43 4f 4e 46 49 rdev));.#endif.#if.defined(CONFI
5dc0 47 5f 4e 43 50 46 53 5f 45 58 54 52 41 53 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 43 4f 4e 46 49 G_NCPFS_EXTRAS).||.defined(CONFI
5de0 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 29 0a 09 09 7d 20 65 6c 73 65 20 69 66 20 28 53 5f 49 G_NCPFS_NFS_NS)...}.else.if.(S_I
5e00 53 4c 4e 4b 28 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 29 29 20 7b 0a 09 09 09 69 6e 6f 64 65 2d SLNK(inode->i_mode)).{....inode-
5e20 3e 69 5f 6f 70 20 3d 20 26 6e 63 70 5f 73 79 6d 6c 69 6e 6b 5f 69 6e 6f 64 65 5f 6f 70 65 72 61 >i_op.=.&ncp_symlink_inode_opera
5e40 74 69 6f 6e 73 3b 0a 09 09 09 69 6e 6f 64 65 5f 6e 6f 68 69 67 68 6d 65 6d 28 69 6e 6f 64 65 29 tions;....inode_nohighmem(inode)
5e60 3b 0a 09 09 09 69 6e 6f 64 65 2d 3e 69 5f 64 61 74 61 2e 61 5f 6f 70 73 20 3d 20 26 6e 63 70 5f ;....inode->i_data.a_ops.=.&ncp_
5e80 73 79 6d 6c 69 6e 6b 5f 61 6f 70 73 3b 0a 23 65 6e 64 69 66 0a 09 09 7d 20 65 6c 73 65 20 7b 0a symlink_aops;.#endif...}.else.{.
5ea0 09 09 09 6d 61 6b 65 5f 62 61 64 5f 69 6e 6f 64 65 28 69 6e 6f 64 65 29 3b 0a 09 09 7d 0a 09 09 ...make_bad_inode(inode);...}...
5ec0 69 6e 73 65 72 74 5f 69 6e 6f 64 65 5f 68 61 73 68 28 69 6e 6f 64 65 29 3b 0a 09 7d 20 65 6c 73 insert_inode_hash(inode);..}.els
5ee0 65 0a 09 09 70 72 5f 65 72 72 28 22 25 73 3a 20 69 67 65 74 20 66 61 69 6c 65 64 21 5c 6e 22 2c e...pr_err("%s:.iget.failed!\n",
5f00 20 5f 5f 66 75 6e 63 5f 5f 29 3b 0a 09 72 65 74 75 72 6e 20 69 6e 6f 64 65 3b 0a 7d 0a 0a 73 74 .__func__);..return.inode;.}..st
5f20 61 74 69 63 20 76 6f 69 64 0a 6e 63 70 5f 65 76 69 63 74 5f 69 6e 6f 64 65 28 73 74 72 75 63 74 atic.void.ncp_evict_inode(struct
5f40 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 29 0a 7b 0a 09 74 72 75 6e 63 61 74 65 5f 69 6e 6f 64 65 .inode.*inode).{..truncate_inode
5f60 5f 70 61 67 65 73 5f 66 69 6e 61 6c 28 26 69 6e 6f 64 65 2d 3e 69 5f 64 61 74 61 29 3b 0a 09 63 _pages_final(&inode->i_data);..c
5f80 6c 65 61 72 5f 69 6e 6f 64 65 28 69 6e 6f 64 65 29 3b 0a 0a 09 69 66 20 28 53 5f 49 53 44 49 52 lear_inode(inode);...if.(S_ISDIR
5fa0 28 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 29 29 20 7b 0a 09 09 6e 63 70 5f 64 62 67 28 32 2c 20 (inode->i_mode)).{...ncp_dbg(2,.
5fc0 22 70 75 74 20 64 69 72 65 63 74 6f 72 79 20 25 6c 64 5c 6e 22 2c 20 69 6e 6f 64 65 2d 3e 69 5f "put.directory.%ld\n",.inode->i_
5fe0 69 6e 6f 29 3b 0a 09 7d 0a 0a 09 69 66 20 28 6e 63 70 5f 6d 61 6b 65 5f 63 6c 6f 73 65 64 28 69 ino);..}...if.(ncp_make_closed(i
6000 6e 6f 64 65 29 20 21 3d 20 30 29 20 7b 0a 09 09 2f 2a 20 57 65 20 63 61 6e 27 74 20 64 6f 20 61 node).!=.0).{.../*.We.can't.do.a
6020 6e 79 74 68 69 6e 67 20 62 75 74 20 63 6f 6d 70 6c 61 69 6e 2e 20 2a 2f 0a 09 09 70 72 5f 65 72 nything.but.complain..*/...pr_er
6040 72 28 22 25 73 3a 20 63 6f 75 6c 64 20 6e 6f 74 20 63 6c 6f 73 65 5c 6e 22 2c 20 5f 5f 66 75 6e r("%s:.could.not.close\n",.__fun
6060 63 5f 5f 29 3b 0a 09 7d 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 73 74 6f 70 c__);..}.}..static.void.ncp_stop
6080 5f 74 61 73 6b 73 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 _tasks(struct.ncp_server.*server
60a0 29 20 7b 0a 09 73 74 72 75 63 74 20 73 6f 63 6b 2a 20 73 6b 20 3d 20 73 65 72 76 65 72 2d 3e 6e ).{..struct.sock*.sk.=.server->n
60c0 63 70 5f 73 6f 63 6b 2d 3e 73 6b 3b 0a 0a 09 6c 6f 63 6b 5f 73 6f 63 6b 28 73 6b 29 3b 0a 09 73 cp_sock->sk;...lock_sock(sk);..s
60e0 6b 2d 3e 73 6b 5f 65 72 72 6f 72 5f 72 65 70 6f 72 74 20 3d 20 73 65 72 76 65 72 2d 3e 65 72 72 k->sk_error_report.=.server->err
6100 6f 72 5f 72 65 70 6f 72 74 3b 0a 09 73 6b 2d 3e 73 6b 5f 64 61 74 61 5f 72 65 61 64 79 20 20 20 or_report;..sk->sk_data_ready...
6120 3d 20 73 65 72 76 65 72 2d 3e 64 61 74 61 5f 72 65 61 64 79 3b 0a 09 73 6b 2d 3e 73 6b 5f 77 72 =.server->data_ready;..sk->sk_wr
6140 69 74 65 5f 73 70 61 63 65 20 20 3d 20 73 65 72 76 65 72 2d 3e 77 72 69 74 65 5f 73 70 61 63 65 ite_space..=.server->write_space
6160 3b 0a 09 72 65 6c 65 61 73 65 5f 73 6f 63 6b 28 73 6b 29 3b 0a 09 64 65 6c 5f 74 69 6d 65 72 5f ;..release_sock(sk);..del_timer_
6180 73 79 6e 63 28 26 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 74 6d 29 3b 0a 0a 09 66 6c 75 sync(&server->timeout_tm);...flu
61a0 73 68 5f 77 6f 72 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 74 71 29 3b 0a 09 69 66 20 28 73 sh_work(&server->rcv.tq);..if.(s
61c0 6b 2d 3e 73 6b 5f 73 6f 63 6b 65 74 2d 3e 74 79 70 65 20 3d 3d 20 53 4f 43 4b 5f 53 54 52 45 41 k->sk_socket->type.==.SOCK_STREA
61e0 4d 29 0a 09 09 66 6c 75 73 68 5f 77 6f 72 6b 28 26 73 65 72 76 65 72 2d 3e 74 78 2e 74 71 29 3b M)...flush_work(&server->tx.tq);
6200 0a 09 65 6c 73 65 0a 09 09 66 6c 75 73 68 5f 77 6f 72 6b 28 26 73 65 72 76 65 72 2d 3e 74 69 6d ..else...flush_work(&server->tim
6220 65 6f 75 74 5f 74 71 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 20 6e 63 70 5f 73 68 6f eout_tq);.}..static.int..ncp_sho
6240 77 5f 6f 70 74 69 6f 6e 73 28 73 74 72 75 63 74 20 73 65 71 5f 66 69 6c 65 20 2a 73 65 71 2c 20 w_options(struct.seq_file.*seq,.
6260 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 72 6f 6f 74 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e struct.dentry.*root).{..struct.n
6280 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 42 50 28 72 6f 6f 74 cp_server.*server.=.NCP_SBP(root
62a0 2d 3e 64 5f 73 62 29 3b 0a 09 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 74 6d 70 3b 0a 0a 09 69 66 ->d_sb);..unsigned.int.tmp;...if
62c0 20 28 21 75 69 64 5f 65 71 28 73 65 72 76 65 72 2d 3e 6d 2e 75 69 64 2c 20 47 4c 4f 42 41 4c 5f .(!uid_eq(server->m.uid,.GLOBAL_
62e0 52 4f 4f 54 5f 55 49 44 29 29 0a 09 09 73 65 71 5f 70 72 69 6e 74 66 28 73 65 71 2c 20 22 2c 75 ROOT_UID))...seq_printf(seq,.",u
6300 69 64 3d 25 75 22 2c 0a 09 09 09 20 20 20 66 72 6f 6d 5f 6b 75 69 64 5f 6d 75 6e 67 65 64 28 26 id=%u",.......from_kuid_munged(&
6320 69 6e 69 74 5f 75 73 65 72 5f 6e 73 2c 20 73 65 72 76 65 72 2d 3e 6d 2e 75 69 64 29 29 3b 0a 09 init_user_ns,.server->m.uid));..
6340 69 66 20 28 21 67 69 64 5f 65 71 28 73 65 72 76 65 72 2d 3e 6d 2e 67 69 64 2c 20 47 4c 4f 42 41 if.(!gid_eq(server->m.gid,.GLOBA
6360 4c 5f 52 4f 4f 54 5f 47 49 44 29 29 0a 09 09 73 65 71 5f 70 72 69 6e 74 66 28 73 65 71 2c 20 22 L_ROOT_GID))...seq_printf(seq,."
6380 2c 67 69 64 3d 25 75 22 2c 0a 09 09 09 20 20 20 66 72 6f 6d 5f 6b 67 69 64 5f 6d 75 6e 67 65 64 ,gid=%u",.......from_kgid_munged
63a0 28 26 69 6e 69 74 5f 75 73 65 72 5f 6e 73 2c 20 73 65 72 76 65 72 2d 3e 6d 2e 67 69 64 29 29 3b (&init_user_ns,.server->m.gid));
63c0 0a 09 69 66 20 28 21 75 69 64 5f 65 71 28 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f ..if.(!uid_eq(server->m.mounted_
63e0 75 69 64 2c 20 47 4c 4f 42 41 4c 5f 52 4f 4f 54 5f 55 49 44 29 29 0a 09 09 73 65 71 5f 70 72 69 uid,.GLOBAL_ROOT_UID))...seq_pri
6400 6e 74 66 28 73 65 71 2c 20 22 2c 6f 77 6e 65 72 3d 25 75 22 2c 0a 09 09 09 20 20 20 66 72 6f 6d ntf(seq,.",owner=%u",.......from
6420 5f 6b 75 69 64 5f 6d 75 6e 67 65 64 28 26 69 6e 69 74 5f 75 73 65 72 5f 6e 73 2c 20 73 65 72 76 _kuid_munged(&init_user_ns,.serv
6440 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 75 69 64 29 29 3b 0a 09 74 6d 70 20 3d 20 73 65 72 76 er->m.mounted_uid));..tmp.=.serv
6460 65 72 2d 3e 6d 2e 66 69 6c 65 5f 6d 6f 64 65 20 26 20 53 5f 49 41 4c 4c 55 47 4f 3b 0a 09 69 66 er->m.file_mode.&.S_IALLUGO;..if
6480 20 28 74 6d 70 20 21 3d 20 4e 43 50 5f 44 45 46 41 55 4c 54 5f 46 49 4c 45 5f 4d 4f 44 45 29 0a .(tmp.!=.NCP_DEFAULT_FILE_MODE).
64a0 09 09 73 65 71 5f 70 72 69 6e 74 66 28 73 65 71 2c 20 22 2c 6d 6f 64 65 3d 30 25 6f 22 2c 20 74 ..seq_printf(seq,.",mode=0%o",.t
64c0 6d 70 29 3b 0a 09 74 6d 70 20 3d 20 73 65 72 76 65 72 2d 3e 6d 2e 64 69 72 5f 6d 6f 64 65 20 26 mp);..tmp.=.server->m.dir_mode.&
64e0 20 53 5f 49 41 4c 4c 55 47 4f 3b 0a 09 69 66 20 28 74 6d 70 20 21 3d 20 4e 43 50 5f 44 45 46 41 .S_IALLUGO;..if.(tmp.!=.NCP_DEFA
6500 55 4c 54 5f 44 49 52 5f 4d 4f 44 45 29 0a 09 09 73 65 71 5f 70 72 69 6e 74 66 28 73 65 71 2c 20 ULT_DIR_MODE)...seq_printf(seq,.
6520 22 2c 64 69 72 6d 6f 64 65 3d 30 25 6f 22 2c 20 74 6d 70 29 3b 0a 09 69 66 20 28 73 65 72 76 65 ",dirmode=0%o",.tmp);..if.(serve
6540 72 2d 3e 6d 2e 74 69 6d 65 5f 6f 75 74 20 21 3d 20 4e 43 50 5f 44 45 46 41 55 4c 54 5f 54 49 4d r->m.time_out.!=.NCP_DEFAULT_TIM
6560 45 5f 4f 55 54 20 2a 20 48 5a 20 2f 20 31 30 30 29 20 7b 0a 09 09 74 6d 70 20 3d 20 73 65 72 76 E_OUT.*.HZ./.100).{...tmp.=.serv
6580 65 72 2d 3e 6d 2e 74 69 6d 65 5f 6f 75 74 20 2a 20 31 30 30 20 2f 20 48 5a 3b 0a 09 09 73 65 71 er->m.time_out.*.100./.HZ;...seq
65a0 5f 70 72 69 6e 74 66 28 73 65 71 2c 20 22 2c 74 69 6d 65 6f 75 74 3d 25 75 22 2c 20 74 6d 70 29 _printf(seq,.",timeout=%u",.tmp)
65c0 3b 0a 09 7d 0a 09 69 66 20 28 73 65 72 76 65 72 2d 3e 6d 2e 72 65 74 72 79 5f 63 6f 75 6e 74 20 ;..}..if.(server->m.retry_count.
65e0 21 3d 20 4e 43 50 5f 44 45 46 41 55 4c 54 5f 52 45 54 52 59 5f 43 4f 55 4e 54 29 0a 09 09 73 65 !=.NCP_DEFAULT_RETRY_COUNT)...se
6600 71 5f 70 72 69 6e 74 66 28 73 65 71 2c 20 22 2c 72 65 74 72 79 3d 25 75 22 2c 20 73 65 72 76 65 q_printf(seq,.",retry=%u",.serve
6620 72 2d 3e 6d 2e 72 65 74 72 79 5f 63 6f 75 6e 74 29 3b 0a 09 69 66 20 28 73 65 72 76 65 72 2d 3e r->m.retry_count);..if.(server->
6640 6d 2e 66 6c 61 67 73 20 21 3d 20 30 29 0a 09 09 73 65 71 5f 70 72 69 6e 74 66 28 73 65 71 2c 20 m.flags.!=.0)...seq_printf(seq,.
6660 22 2c 66 6c 61 67 73 3d 25 6c 75 22 2c 20 73 65 72 76 65 72 2d 3e 6d 2e 66 6c 61 67 73 29 3b 0a ",flags=%lu",.server->m.flags);.
6680 09 69 66 20 28 73 65 72 76 65 72 2d 3e 6d 2e 77 64 6f 67 5f 70 69 64 20 21 3d 20 4e 55 4c 4c 29 .if.(server->m.wdog_pid.!=.NULL)
66a0 0a 09 09 73 65 71 5f 70 72 69 6e 74 66 28 73 65 71 2c 20 22 2c 77 64 6f 67 70 69 64 3d 25 75 22 ...seq_printf(seq,.",wdogpid=%u"
66c0 2c 20 70 69 64 5f 76 6e 72 28 73 65 72 76 65 72 2d 3e 6d 2e 77 64 6f 67 5f 70 69 64 29 29 3b 0a ,.pid_vnr(server->m.wdog_pid));.
66e0 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 ..return.0;.}..static.const.stru
6700 63 74 20 6e 63 70 5f 6f 70 74 69 6f 6e 20 6e 63 70 5f 6f 70 74 73 5b 5d 20 3d 20 7b 0a 09 7b 20 ct.ncp_option.ncp_opts[].=.{..{.
6720 22 75 69 64 22 2c 09 4f 50 54 5f 49 4e 54 2c 09 27 75 27 20 7d 2c 0a 09 7b 20 22 67 69 64 22 2c "uid",.OPT_INT,.'u'.},..{."gid",
6740 09 4f 50 54 5f 49 4e 54 2c 09 27 67 27 20 7d 2c 0a 09 7b 20 22 6f 77 6e 65 72 22 2c 09 4f 50 54 .OPT_INT,.'g'.},..{."owner",.OPT
6760 5f 49 4e 54 2c 09 27 6f 27 20 7d 2c 0a 09 7b 20 22 6d 6f 64 65 22 2c 09 4f 50 54 5f 49 4e 54 2c _INT,.'o'.},..{."mode",.OPT_INT,
6780 09 27 6d 27 20 7d 2c 0a 09 7b 20 22 64 69 72 6d 6f 64 65 22 2c 09 4f 50 54 5f 49 4e 54 2c 09 27 .'m'.},..{."dirmode",.OPT_INT,.'
67a0 64 27 20 7d 2c 0a 09 7b 20 22 74 69 6d 65 6f 75 74 22 2c 09 4f 50 54 5f 49 4e 54 2c 09 27 74 27 d'.},..{."timeout",.OPT_INT,.'t'
67c0 20 7d 2c 0a 09 7b 20 22 72 65 74 72 79 22 2c 09 4f 50 54 5f 49 4e 54 2c 09 27 72 27 20 7d 2c 0a .},..{."retry",.OPT_INT,.'r'.},.
67e0 09 7b 20 22 66 6c 61 67 73 22 2c 09 4f 50 54 5f 49 4e 54 2c 09 27 66 27 20 7d 2c 0a 09 7b 20 22 .{."flags",.OPT_INT,.'f'.},..{."
6800 77 64 6f 67 70 69 64 22 2c 09 4f 50 54 5f 49 4e 54 2c 09 27 77 27 20 7d 2c 0a 09 7b 20 22 6e 63 wdogpid",.OPT_INT,.'w'.},..{."nc
6820 70 66 64 22 2c 09 4f 50 54 5f 49 4e 54 2c 09 27 6e 27 20 7d 2c 0a 09 7b 20 22 69 6e 66 6f 66 64 pfd",.OPT_INT,.'n'.},..{."infofd
6840 22 2c 09 4f 50 54 5f 49 4e 54 2c 09 27 69 27 20 7d 2c 09 2f 2a 20 76 35 20 2a 2f 0a 09 7b 20 22 ",.OPT_INT,.'i'.},./*.v5.*/..{."
6860 76 65 72 73 69 6f 6e 22 2c 09 4f 50 54 5f 49 4e 54 2c 09 27 76 27 20 7d 2c 0a 09 7b 20 4e 55 4c version",.OPT_INT,.'v'.},..{.NUL
6880 4c 2c 09 09 30 2c 09 09 30 20 7d 20 7d 3b 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 70 L,..0,..0.}.};..static.int.ncp_p
68a0 61 72 73 65 5f 6f 70 74 69 6f 6e 73 28 73 74 72 75 63 74 20 6e 63 70 5f 6d 6f 75 6e 74 5f 64 61 arse_options(struct.ncp_mount_da
68c0 74 61 5f 6b 65 72 6e 65 6c 20 2a 64 61 74 61 2c 20 63 68 61 72 20 2a 6f 70 74 69 6f 6e 73 29 20 ta_kernel.*data,.char.*options).
68e0 7b 0a 09 69 6e 74 20 6f 70 74 76 61 6c 3b 0a 09 63 68 61 72 20 2a 6f 70 74 61 72 67 3b 0a 09 75 {..int.optval;..char.*optarg;..u
6900 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 6f 70 74 69 6e 74 3b 0a 09 69 6e 74 20 76 65 72 73 69 6f nsigned.long.optint;..int.versio
6920 6e 20 3d 20 30 3b 0a 09 69 6e 74 20 72 65 74 3b 0a 0a 09 64 61 74 61 2d 3e 66 6c 61 67 73 20 3d n.=.0;..int.ret;...data->flags.=
6940 20 30 3b 0a 09 64 61 74 61 2d 3e 69 6e 74 5f 66 6c 61 67 73 20 3d 20 30 3b 0a 09 64 61 74 61 2d .0;..data->int_flags.=.0;..data-
6960 3e 6d 6f 75 6e 74 65 64 5f 75 69 64 20 3d 20 47 4c 4f 42 41 4c 5f 52 4f 4f 54 5f 55 49 44 3b 0a >mounted_uid.=.GLOBAL_ROOT_UID;.
6980 09 64 61 74 61 2d 3e 77 64 6f 67 5f 70 69 64 20 3d 20 4e 55 4c 4c 3b 0a 09 64 61 74 61 2d 3e 6e .data->wdog_pid.=.NULL;..data->n
69a0 63 70 5f 66 64 20 3d 20 7e 30 3b 0a 09 64 61 74 61 2d 3e 74 69 6d 65 5f 6f 75 74 20 3d 20 4e 43 cp_fd.=.~0;..data->time_out.=.NC
69c0 50 5f 44 45 46 41 55 4c 54 5f 54 49 4d 45 5f 4f 55 54 3b 0a 09 64 61 74 61 2d 3e 72 65 74 72 79 P_DEFAULT_TIME_OUT;..data->retry
69e0 5f 63 6f 75 6e 74 20 3d 20 4e 43 50 5f 44 45 46 41 55 4c 54 5f 52 45 54 52 59 5f 43 4f 55 4e 54 _count.=.NCP_DEFAULT_RETRY_COUNT
6a00 3b 0a 09 64 61 74 61 2d 3e 75 69 64 20 3d 20 47 4c 4f 42 41 4c 5f 52 4f 4f 54 5f 55 49 44 3b 0a ;..data->uid.=.GLOBAL_ROOT_UID;.
6a20 09 64 61 74 61 2d 3e 67 69 64 20 3d 20 47 4c 4f 42 41 4c 5f 52 4f 4f 54 5f 47 49 44 3b 0a 09 64 .data->gid.=.GLOBAL_ROOT_GID;..d
6a40 61 74 61 2d 3e 66 69 6c 65 5f 6d 6f 64 65 20 3d 20 4e 43 50 5f 44 45 46 41 55 4c 54 5f 46 49 4c ata->file_mode.=.NCP_DEFAULT_FIL
6a60 45 5f 4d 4f 44 45 3b 0a 09 64 61 74 61 2d 3e 64 69 72 5f 6d 6f 64 65 20 3d 20 4e 43 50 5f 44 45 E_MODE;..data->dir_mode.=.NCP_DE
6a80 46 41 55 4c 54 5f 44 49 52 5f 4d 4f 44 45 3b 0a 09 64 61 74 61 2d 3e 69 6e 66 6f 5f 66 64 20 3d FAULT_DIR_MODE;..data->info_fd.=
6aa0 20 2d 31 3b 0a 09 64 61 74 61 2d 3e 6d 6f 75 6e 74 65 64 5f 76 6f 6c 5b 30 5d 20 3d 20 30 3b 0a .-1;..data->mounted_vol[0].=.0;.
6ac0 09 0a 09 77 68 69 6c 65 20 28 28 6f 70 74 76 61 6c 20 3d 20 6e 63 70 5f 67 65 74 6f 70 74 28 22 ...while.((optval.=.ncp_getopt("
6ae0 6e 63 70 66 73 22 2c 20 26 6f 70 74 69 6f 6e 73 2c 20 6e 63 70 5f 6f 70 74 73 2c 20 4e 55 4c 4c ncpfs",.&options,.ncp_opts,.NULL
6b00 2c 20 26 6f 70 74 61 72 67 2c 20 26 6f 70 74 69 6e 74 29 29 20 21 3d 20 30 29 20 7b 0a 09 09 72 ,.&optarg,.&optint)).!=.0).{...r
6b20 65 74 20 3d 20 6f 70 74 76 61 6c 3b 0a 09 09 69 66 20 28 72 65 74 20 3c 20 30 29 0a 09 09 09 67 et.=.optval;...if.(ret.<.0)....g
6b40 6f 74 6f 20 65 72 72 3b 0a 09 09 73 77 69 74 63 68 20 28 6f 70 74 76 61 6c 29 20 7b 0a 09 09 09 oto.err;...switch.(optval).{....
6b60 63 61 73 65 20 27 75 27 3a 0a 09 09 09 09 64 61 74 61 2d 3e 75 69 64 20 3d 20 6d 61 6b 65 5f 6b case.'u':.....data->uid.=.make_k
6b80 75 69 64 28 63 75 72 72 65 6e 74 5f 75 73 65 72 5f 6e 73 28 29 2c 20 6f 70 74 69 6e 74 29 3b 0a uid(current_user_ns(),.optint);.
6ba0 09 09 09 09 69 66 20 28 21 75 69 64 5f 76 61 6c 69 64 28 64 61 74 61 2d 3e 75 69 64 29 29 20 7b ....if.(!uid_valid(data->uid)).{
6bc0 0a 09 09 09 09 09 72 65 74 20 3d 20 2d 45 49 4e 56 41 4c 3b 0a 09 09 09 09 09 67 6f 74 6f 20 65 ......ret.=.-EINVAL;......goto.e
6be0 72 72 3b 0a 09 09 09 09 7d 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 63 61 73 65 20 27 67 27 rr;.....}.....break;....case.'g'
6c00 3a 0a 09 09 09 09 64 61 74 61 2d 3e 67 69 64 20 3d 20 6d 61 6b 65 5f 6b 67 69 64 28 63 75 72 72 :.....data->gid.=.make_kgid(curr
6c20 65 6e 74 5f 75 73 65 72 5f 6e 73 28 29 2c 20 6f 70 74 69 6e 74 29 3b 0a 09 09 09 09 69 66 20 28 ent_user_ns(),.optint);.....if.(
6c40 21 67 69 64 5f 76 61 6c 69 64 28 64 61 74 61 2d 3e 67 69 64 29 29 20 7b 0a 09 09 09 09 09 72 65 !gid_valid(data->gid)).{......re
6c60 74 20 3d 20 2d 45 49 4e 56 41 4c 3b 0a 09 09 09 09 09 67 6f 74 6f 20 65 72 72 3b 0a 09 09 09 09 t.=.-EINVAL;......goto.err;.....
6c80 7d 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 63 61 73 65 20 27 6f 27 3a 0a 09 09 09 09 64 61 }.....break;....case.'o':.....da
6ca0 74 61 2d 3e 6d 6f 75 6e 74 65 64 5f 75 69 64 20 3d 20 6d 61 6b 65 5f 6b 75 69 64 28 63 75 72 72 ta->mounted_uid.=.make_kuid(curr
6cc0 65 6e 74 5f 75 73 65 72 5f 6e 73 28 29 2c 20 6f 70 74 69 6e 74 29 3b 0a 09 09 09 09 69 66 20 28 ent_user_ns(),.optint);.....if.(
6ce0 21 75 69 64 5f 76 61 6c 69 64 28 64 61 74 61 2d 3e 6d 6f 75 6e 74 65 64 5f 75 69 64 29 29 20 7b !uid_valid(data->mounted_uid)).{
6d00 0a 09 09 09 09 09 72 65 74 20 3d 20 2d 45 49 4e 56 41 4c 3b 0a 09 09 09 09 09 67 6f 74 6f 20 65 ......ret.=.-EINVAL;......goto.e
6d20 72 72 3b 0a 09 09 09 09 7d 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 63 61 73 65 20 27 6d 27 rr;.....}.....break;....case.'m'
6d40 3a 0a 09 09 09 09 64 61 74 61 2d 3e 66 69 6c 65 5f 6d 6f 64 65 20 3d 20 6f 70 74 69 6e 74 3b 0a :.....data->file_mode.=.optint;.
6d60 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 63 61 73 65 20 27 64 27 3a 0a 09 09 09 09 64 61 74 61 ....break;....case.'d':.....data
6d80 2d 3e 64 69 72 5f 6d 6f 64 65 20 3d 20 6f 70 74 69 6e 74 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a ->dir_mode.=.optint;.....break;.
6da0 09 09 09 63 61 73 65 20 27 74 27 3a 0a 09 09 09 09 64 61 74 61 2d 3e 74 69 6d 65 5f 6f 75 74 20 ...case.'t':.....data->time_out.
6dc0 3d 20 6f 70 74 69 6e 74 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 63 61 73 65 20 27 72 27 =.optint;.....break;....case.'r'
6de0 3a 0a 09 09 09 09 64 61 74 61 2d 3e 72 65 74 72 79 5f 63 6f 75 6e 74 20 3d 20 6f 70 74 69 6e 74 :.....data->retry_count.=.optint
6e00 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 63 61 73 65 20 27 66 27 3a 0a 09 09 09 09 64 61 ;.....break;....case.'f':.....da
6e20 74 61 2d 3e 66 6c 61 67 73 20 3d 20 6f 70 74 69 6e 74 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 ta->flags.=.optint;.....break;..
6e40 09 09 63 61 73 65 20 27 77 27 3a 0a 09 09 09 09 64 61 74 61 2d 3e 77 64 6f 67 5f 70 69 64 20 3d ..case.'w':.....data->wdog_pid.=
6e60 20 66 69 6e 64 5f 67 65 74 5f 70 69 64 28 6f 70 74 69 6e 74 29 3b 0a 09 09 09 09 62 72 65 61 6b .find_get_pid(optint);.....break
6e80 3b 0a 09 09 09 63 61 73 65 20 27 6e 27 3a 0a 09 09 09 09 64 61 74 61 2d 3e 6e 63 70 5f 66 64 20 ;....case.'n':.....data->ncp_fd.
6ea0 3d 20 6f 70 74 69 6e 74 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 63 61 73 65 20 27 69 27 =.optint;.....break;....case.'i'
6ec0 3a 0a 09 09 09 09 64 61 74 61 2d 3e 69 6e 66 6f 5f 66 64 20 3d 20 6f 70 74 69 6e 74 3b 0a 09 09 :.....data->info_fd.=.optint;...
6ee0 09 09 62 72 65 61 6b 3b 0a 09 09 09 63 61 73 65 20 27 76 27 3a 0a 09 09 09 09 72 65 74 20 3d 20 ..break;....case.'v':.....ret.=.
6f00 2d 45 43 48 52 4e 47 3b 0a 09 09 09 09 69 66 20 28 6f 70 74 69 6e 74 20 3c 20 4e 43 50 5f 4d 4f -ECHRNG;.....if.(optint.<.NCP_MO
6f20 55 4e 54 5f 56 45 52 53 49 4f 4e 5f 56 34 29 0a 09 09 09 09 09 67 6f 74 6f 20 65 72 72 3b 0a 09 UNT_VERSION_V4)......goto.err;..
6f40 09 09 09 69 66 20 28 6f 70 74 69 6e 74 20 3e 20 4e 43 50 5f 4d 4f 55 4e 54 5f 56 45 52 53 49 4f ...if.(optint.>.NCP_MOUNT_VERSIO
6f60 4e 5f 56 35 29 0a 09 09 09 09 09 67 6f 74 6f 20 65 72 72 3b 0a 09 09 09 09 76 65 72 73 69 6f 6e N_V5)......goto.err;.....version
6f80 20 3d 20 6f 70 74 69 6e 74 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 0a 09 09 7d 0a 09 7d .=.optint;.....break;.......}..}
6fa0 0a 09 72 65 74 75 72 6e 20 30 3b 0a 65 72 72 3a 0a 09 70 75 74 5f 70 69 64 28 64 61 74 61 2d 3e ..return.0;.err:..put_pid(data->
6fc0 77 64 6f 67 5f 70 69 64 29 3b 0a 09 64 61 74 61 2d 3e 77 64 6f 67 5f 70 69 64 20 3d 20 4e 55 4c wdog_pid);..data->wdog_pid.=.NUL
6fe0 4c 3b 0a 09 72 65 74 75 72 6e 20 72 65 74 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 L;..return.ret;.}..static.int.nc
7000 70 5f 66 69 6c 6c 5f 73 75 70 65 72 28 73 74 72 75 63 74 20 73 75 70 65 72 5f 62 6c 6f 63 6b 20 p_fill_super(struct.super_block.
7020 2a 73 62 2c 20 76 6f 69 64 20 2a 72 61 77 5f 64 61 74 61 2c 20 69 6e 74 20 73 69 6c 65 6e 74 29 *sb,.void.*raw_data,.int.silent)
7040 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 6d 6f 75 6e 74 5f 64 61 74 61 5f 6b 65 72 6e 65 6c .{..struct.ncp_mount_data_kernel
7060 20 64 61 74 61 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 .data;..struct.ncp_server.*serve
7080 72 3b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 72 6f 6f 74 5f 69 6e 6f 64 65 3b 0a 09 73 r;..struct.inode.*root_inode;..s
70a0 74 72 75 63 74 20 73 6f 63 6b 65 74 20 2a 73 6f 63 6b 3b 0a 09 69 6e 74 20 65 72 72 6f 72 3b 0a truct.socket.*sock;..int.error;.
70c0 09 69 6e 74 20 64 65 66 61 75 6c 74 5f 62 75 66 73 69 7a 65 3b 0a 23 69 66 64 65 66 20 43 4f 4e .int.default_bufsize;.#ifdef.CON
70e0 46 49 47 5f 4e 43 50 46 53 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 0a 09 69 6e 74 20 6f 70 FIG_NCPFS_PACKET_SIGNING..int.op
7100 74 69 6f 6e 73 3b 0a 23 65 6e 64 69 66 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 5f tions;.#endif..struct.ncp_entry_
7120 69 6e 66 6f 20 66 69 6e 66 6f 3b 0a 0a 09 6d 65 6d 73 65 74 28 26 64 61 74 61 2c 20 30 2c 20 73 info.finfo;...memset(&data,.0,.s
7140 69 7a 65 6f 66 28 64 61 74 61 29 29 3b 0a 09 73 65 72 76 65 72 20 3d 20 6b 7a 61 6c 6c 6f 63 28 izeof(data));..server.=.kzalloc(
7160 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 29 2c 20 47 46 50 5f 4b sizeof(struct.ncp_server),.GFP_K
7180 45 52 4e 45 4c 29 3b 0a 09 69 66 20 28 21 73 65 72 76 65 72 29 0a 09 09 72 65 74 75 72 6e 20 2d ERNEL);..if.(!server)...return.-
71a0 45 4e 4f 4d 45 4d 3b 0a 09 73 62 2d 3e 73 5f 66 73 5f 69 6e 66 6f 20 3d 20 73 65 72 76 65 72 3b ENOMEM;..sb->s_fs_info.=.server;
71c0 0a 0a 09 65 72 72 6f 72 20 3d 20 2d 45 46 41 55 4c 54 3b 0a 09 69 66 20 28 72 61 77 5f 64 61 74 ...error.=.-EFAULT;..if.(raw_dat
71e0 61 20 3d 3d 20 4e 55 4c 4c 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 73 77 69 74 63 68 20 28 a.==.NULL)...goto.out;..switch.(
7200 2a 28 69 6e 74 2a 29 72 61 77 5f 64 61 74 61 29 20 7b 0a 09 09 63 61 73 65 20 4e 43 50 5f 4d 4f *(int*)raw_data).{...case.NCP_MO
7220 55 4e 54 5f 56 45 52 53 49 4f 4e 3a 0a 09 09 09 7b 0a 09 09 09 09 73 74 72 75 63 74 20 6e 63 70 UNT_VERSION:....{.....struct.ncp
7240 5f 6d 6f 75 6e 74 5f 64 61 74 61 2a 20 6d 64 20 3d 20 28 73 74 72 75 63 74 20 6e 63 70 5f 6d 6f _mount_data*.md.=.(struct.ncp_mo
7260 75 6e 74 5f 64 61 74 61 2a 29 72 61 77 5f 64 61 74 61 3b 0a 0a 09 09 09 09 64 61 74 61 2e 66 6c unt_data*)raw_data;......data.fl
7280 61 67 73 20 3d 20 6d 64 2d 3e 66 6c 61 67 73 3b 0a 09 09 09 09 64 61 74 61 2e 69 6e 74 5f 66 6c ags.=.md->flags;.....data.int_fl
72a0 61 67 73 20 3d 20 4e 43 50 5f 49 4d 4f 55 4e 54 5f 4c 4f 47 47 45 44 49 4e 5f 50 4f 53 53 49 42 ags.=.NCP_IMOUNT_LOGGEDIN_POSSIB
72c0 4c 45 3b 0a 09 09 09 09 64 61 74 61 2e 6d 6f 75 6e 74 65 64 5f 75 69 64 20 3d 20 6d 61 6b 65 5f LE;.....data.mounted_uid.=.make_
72e0 6b 75 69 64 28 63 75 72 72 65 6e 74 5f 75 73 65 72 5f 6e 73 28 29 2c 20 6d 64 2d 3e 6d 6f 75 6e kuid(current_user_ns(),.md->moun
7300 74 65 64 5f 75 69 64 29 3b 0a 09 09 09 09 64 61 74 61 2e 77 64 6f 67 5f 70 69 64 20 3d 20 66 69 ted_uid);.....data.wdog_pid.=.fi
7320 6e 64 5f 67 65 74 5f 70 69 64 28 6d 64 2d 3e 77 64 6f 67 5f 70 69 64 29 3b 0a 09 09 09 09 64 61 nd_get_pid(md->wdog_pid);.....da
7340 74 61 2e 6e 63 70 5f 66 64 20 3d 20 6d 64 2d 3e 6e 63 70 5f 66 64 3b 0a 09 09 09 09 64 61 74 61 ta.ncp_fd.=.md->ncp_fd;.....data
7360 2e 74 69 6d 65 5f 6f 75 74 20 3d 20 6d 64 2d 3e 74 69 6d 65 5f 6f 75 74 3b 0a 09 09 09 09 64 61 .time_out.=.md->time_out;.....da
7380 74 61 2e 72 65 74 72 79 5f 63 6f 75 6e 74 20 3d 20 6d 64 2d 3e 72 65 74 72 79 5f 63 6f 75 6e 74 ta.retry_count.=.md->retry_count
73a0 3b 0a 09 09 09 09 64 61 74 61 2e 75 69 64 20 3d 20 6d 61 6b 65 5f 6b 75 69 64 28 63 75 72 72 65 ;.....data.uid.=.make_kuid(curre
73c0 6e 74 5f 75 73 65 72 5f 6e 73 28 29 2c 20 6d 64 2d 3e 75 69 64 29 3b 0a 09 09 09 09 64 61 74 61 nt_user_ns(),.md->uid);.....data
73e0 2e 67 69 64 20 3d 20 6d 61 6b 65 5f 6b 67 69 64 28 63 75 72 72 65 6e 74 5f 75 73 65 72 5f 6e 73 .gid.=.make_kgid(current_user_ns
7400 28 29 2c 20 6d 64 2d 3e 67 69 64 29 3b 0a 09 09 09 09 64 61 74 61 2e 66 69 6c 65 5f 6d 6f 64 65 (),.md->gid);.....data.file_mode
7420 20 3d 20 6d 64 2d 3e 66 69 6c 65 5f 6d 6f 64 65 3b 0a 09 09 09 09 64 61 74 61 2e 64 69 72 5f 6d .=.md->file_mode;.....data.dir_m
7440 6f 64 65 20 3d 20 6d 64 2d 3e 64 69 72 5f 6d 6f 64 65 3b 0a 09 09 09 09 64 61 74 61 2e 69 6e 66 ode.=.md->dir_mode;.....data.inf
7460 6f 5f 66 64 20 3d 20 2d 31 3b 0a 09 09 09 09 6d 65 6d 63 70 79 28 64 61 74 61 2e 6d 6f 75 6e 74 o_fd.=.-1;.....memcpy(data.mount
7480 65 64 5f 76 6f 6c 2c 20 6d 64 2d 3e 6d 6f 75 6e 74 65 64 5f 76 6f 6c 2c 0a 09 09 09 09 09 4e 43 ed_vol,.md->mounted_vol,......NC
74a0 50 5f 56 4f 4c 4e 41 4d 45 5f 4c 45 4e 2b 31 29 3b 0a 09 09 09 7d 0a 09 09 09 62 72 65 61 6b 3b P_VOLNAME_LEN+1);....}....break;
74c0 0a 09 09 63 61 73 65 20 4e 43 50 5f 4d 4f 55 4e 54 5f 56 45 52 53 49 4f 4e 5f 56 34 3a 0a 09 09 ...case.NCP_MOUNT_VERSION_V4:...
74e0 09 7b 0a 09 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f 6d 6f 75 6e 74 5f 64 61 74 61 5f 76 34 2a .{.....struct.ncp_mount_data_v4*
7500 20 6d 64 20 3d 20 28 73 74 72 75 63 74 20 6e 63 70 5f 6d 6f 75 6e 74 5f 64 61 74 61 5f 76 34 2a .md.=.(struct.ncp_mount_data_v4*
7520 29 72 61 77 5f 64 61 74 61 3b 0a 0a 09 09 09 09 64 61 74 61 2e 66 6c 61 67 73 20 3d 20 6d 64 2d )raw_data;......data.flags.=.md-
7540 3e 66 6c 61 67 73 3b 0a 09 09 09 09 64 61 74 61 2e 6d 6f 75 6e 74 65 64 5f 75 69 64 20 3d 20 6d >flags;.....data.mounted_uid.=.m
7560 61 6b 65 5f 6b 75 69 64 28 63 75 72 72 65 6e 74 5f 75 73 65 72 5f 6e 73 28 29 2c 20 6d 64 2d 3e ake_kuid(current_user_ns(),.md->
7580 6d 6f 75 6e 74 65 64 5f 75 69 64 29 3b 0a 09 09 09 09 64 61 74 61 2e 77 64 6f 67 5f 70 69 64 20 mounted_uid);.....data.wdog_pid.
75a0 3d 20 66 69 6e 64 5f 67 65 74 5f 70 69 64 28 6d 64 2d 3e 77 64 6f 67 5f 70 69 64 29 3b 0a 09 09 =.find_get_pid(md->wdog_pid);...
75c0 09 09 64 61 74 61 2e 6e 63 70 5f 66 64 20 3d 20 6d 64 2d 3e 6e 63 70 5f 66 64 3b 0a 09 09 09 09 ..data.ncp_fd.=.md->ncp_fd;.....
75e0 64 61 74 61 2e 74 69 6d 65 5f 6f 75 74 20 3d 20 6d 64 2d 3e 74 69 6d 65 5f 6f 75 74 3b 0a 09 09 data.time_out.=.md->time_out;...
7600 09 09 64 61 74 61 2e 72 65 74 72 79 5f 63 6f 75 6e 74 20 3d 20 6d 64 2d 3e 72 65 74 72 79 5f 63 ..data.retry_count.=.md->retry_c
7620 6f 75 6e 74 3b 0a 09 09 09 09 64 61 74 61 2e 75 69 64 20 3d 20 6d 61 6b 65 5f 6b 75 69 64 28 63 ount;.....data.uid.=.make_kuid(c
7640 75 72 72 65 6e 74 5f 75 73 65 72 5f 6e 73 28 29 2c 20 6d 64 2d 3e 75 69 64 29 3b 0a 09 09 09 09 urrent_user_ns(),.md->uid);.....
7660 64 61 74 61 2e 67 69 64 20 3d 20 6d 61 6b 65 5f 6b 67 69 64 28 63 75 72 72 65 6e 74 5f 75 73 65 data.gid.=.make_kgid(current_use
7680 72 5f 6e 73 28 29 2c 20 6d 64 2d 3e 67 69 64 29 3b 0a 09 09 09 09 64 61 74 61 2e 66 69 6c 65 5f r_ns(),.md->gid);.....data.file_
76a0 6d 6f 64 65 20 3d 20 6d 64 2d 3e 66 69 6c 65 5f 6d 6f 64 65 3b 0a 09 09 09 09 64 61 74 61 2e 64 mode.=.md->file_mode;.....data.d
76c0 69 72 5f 6d 6f 64 65 20 3d 20 6d 64 2d 3e 64 69 72 5f 6d 6f 64 65 3b 0a 09 09 09 09 64 61 74 61 ir_mode.=.md->dir_mode;.....data
76e0 2e 69 6e 66 6f 5f 66 64 20 3d 20 2d 31 3b 0a 09 09 09 7d 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 .info_fd.=.-1;....}....break;...
7700 64 65 66 61 75 6c 74 3a 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d 45 43 48 52 4e 47 3b 0a 09 09 09 default:....error.=.-ECHRNG;....
7720 69 66 20 28 6d 65 6d 63 6d 70 28 72 61 77 5f 64 61 74 61 2c 20 22 76 65 72 73 22 2c 20 34 29 20 if.(memcmp(raw_data,."vers",.4).
7740 3d 3d 20 30 29 20 7b 0a 09 09 09 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 70 61 72 73 65 5f 6f 70 ==.0).{.....error.=.ncp_parse_op
7760 74 69 6f 6e 73 28 26 64 61 74 61 2c 20 72 61 77 5f 64 61 74 61 29 3b 0a 09 09 09 7d 0a 09 09 09 tions(&data,.raw_data);....}....
7780 69 66 20 28 65 72 72 6f 72 29 0a 09 09 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 09 09 62 72 65 61 if.(error).....goto.out;....brea
77a0 6b 3b 0a 09 7d 0a 09 65 72 72 6f 72 20 3d 20 2d 45 49 4e 56 41 4c 3b 0a 09 69 66 20 28 21 75 69 k;..}..error.=.-EINVAL;..if.(!ui
77c0 64 5f 76 61 6c 69 64 28 64 61 74 61 2e 6d 6f 75 6e 74 65 64 5f 75 69 64 29 20 7c 7c 20 21 75 69 d_valid(data.mounted_uid).||.!ui
77e0 64 5f 76 61 6c 69 64 28 64 61 74 61 2e 75 69 64 29 20 7c 7c 0a 09 20 20 20 20 21 67 69 64 5f 76 d_valid(data.uid).||......!gid_v
7800 61 6c 69 64 28 64 61 74 61 2e 67 69 64 29 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 73 6f 63 alid(data.gid))...goto.out;..soc
7820 6b 20 3d 20 73 6f 63 6b 66 64 5f 6c 6f 6f 6b 75 70 28 64 61 74 61 2e 6e 63 70 5f 66 64 2c 20 26 k.=.sockfd_lookup(data.ncp_fd,.&
7840 65 72 72 6f 72 29 3b 0a 09 69 66 20 28 21 73 6f 63 6b 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a error);..if.(!sock)...goto.out;.
7860 0a 09 69 66 20 28 73 6f 63 6b 2d 3e 74 79 70 65 20 3d 3d 20 53 4f 43 4b 5f 53 54 52 45 41 4d 29 ..if.(sock->type.==.SOCK_STREAM)
7880 0a 09 09 64 65 66 61 75 6c 74 5f 62 75 66 73 69 7a 65 20 3d 20 30 78 46 30 30 30 3b 0a 09 65 6c ...default_bufsize.=.0xF000;..el
78a0 73 65 0a 09 09 64 65 66 61 75 6c 74 5f 62 75 66 73 69 7a 65 20 3d 20 31 30 32 34 3b 0a 0a 09 73 se...default_bufsize.=.1024;...s
78c0 62 2d 3e 73 5f 66 6c 61 67 73 20 7c 3d 20 4d 53 5f 4e 4f 44 49 52 41 54 49 4d 45 3b 09 2f 2a 20 b->s_flags.|=.MS_NODIRATIME;./*.
78e0 70 72 6f 62 61 62 6c 79 20 65 76 65 6e 20 6e 6f 61 74 69 6d 65 20 2a 2f 0a 09 73 62 2d 3e 73 5f probably.even.noatime.*/..sb->s_
7900 6d 61 78 62 79 74 65 73 20 3d 20 30 78 46 46 46 46 46 46 46 46 55 3b 0a 09 73 62 2d 3e 73 5f 62 maxbytes.=.0xFFFFFFFFU;..sb->s_b
7920 6c 6f 63 6b 73 69 7a 65 20 3d 20 31 30 32 34 3b 09 2f 2a 20 45 68 2e 2e 2e 20 20 49 73 20 74 68 locksize.=.1024;./*.Eh.....Is.th
7940 69 73 20 63 6f 72 72 65 63 74 3f 20 2a 2f 0a 09 73 62 2d 3e 73 5f 62 6c 6f 63 6b 73 69 7a 65 5f is.correct?.*/..sb->s_blocksize_
7960 62 69 74 73 20 3d 20 31 30 3b 0a 09 73 62 2d 3e 73 5f 6d 61 67 69 63 20 3d 20 4e 43 50 5f 53 55 bits.=.10;..sb->s_magic.=.NCP_SU
7980 50 45 52 5f 4d 41 47 49 43 3b 0a 09 73 62 2d 3e 73 5f 6f 70 20 3d 20 26 6e 63 70 5f 73 6f 70 73 PER_MAGIC;..sb->s_op.=.&ncp_sops
79a0 3b 0a 09 73 62 2d 3e 73 5f 64 5f 6f 70 20 3d 20 26 6e 63 70 5f 64 65 6e 74 72 79 5f 6f 70 65 72 ;..sb->s_d_op.=.&ncp_dentry_oper
79c0 61 74 69 6f 6e 73 3b 0a 09 73 62 2d 3e 73 5f 62 64 69 20 3d 20 26 73 65 72 76 65 72 2d 3e 62 64 ations;..sb->s_bdi.=.&server->bd
79e0 69 3b 0a 0a 09 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 42 50 28 73 62 29 3b 0a 09 6d 65 6d 73 i;...server.=.NCP_SBP(sb);..mems
7a00 65 74 28 73 65 72 76 65 72 2c 20 30 2c 20 73 69 7a 65 6f 66 28 2a 73 65 72 76 65 72 29 29 3b 0a et(server,.0,.sizeof(*server));.
7a20 0a 09 65 72 72 6f 72 20 3d 20 62 64 69 5f 73 65 74 75 70 5f 61 6e 64 5f 72 65 67 69 73 74 65 72 ..error.=.bdi_setup_and_register
7a40 28 26 73 65 72 76 65 72 2d 3e 62 64 69 2c 20 22 6e 63 70 66 73 22 29 3b 0a 09 69 66 20 28 65 72 (&server->bdi,."ncpfs");..if.(er
7a60 72 6f 72 29 0a 09 09 67 6f 74 6f 20 6f 75 74 5f 66 70 75 74 3b 0a 0a 09 73 65 72 76 65 72 2d 3e ror)...goto.out_fput;...server->
7a80 6e 63 70 5f 73 6f 63 6b 20 3d 20 73 6f 63 6b 3b 0a 09 0a 09 69 66 20 28 64 61 74 61 2e 69 6e 66 ncp_sock.=.sock;....if.(data.inf
7aa0 6f 5f 66 64 20 21 3d 20 2d 31 29 20 7b 0a 09 09 73 74 72 75 63 74 20 73 6f 63 6b 65 74 20 2a 69 o_fd.!=.-1).{...struct.socket.*i
7ac0 6e 66 6f 5f 73 6f 63 6b 20 3d 20 73 6f 63 6b 66 64 5f 6c 6f 6f 6b 75 70 28 64 61 74 61 2e 69 6e nfo_sock.=.sockfd_lookup(data.in
7ae0 66 6f 5f 66 64 2c 20 26 65 72 72 6f 72 29 3b 0a 09 09 69 66 20 28 21 69 6e 66 6f 5f 73 6f 63 6b fo_fd,.&error);...if.(!info_sock
7b00 29 0a 09 09 09 67 6f 74 6f 20 6f 75 74 5f 62 64 69 3b 0a 09 09 73 65 72 76 65 72 2d 3e 69 6e 66 )....goto.out_bdi;...server->inf
7b20 6f 5f 73 6f 63 6b 20 3d 20 69 6e 66 6f 5f 73 6f 63 6b 3b 0a 09 09 65 72 72 6f 72 20 3d 20 2d 45 o_sock.=.info_sock;...error.=.-E
7b40 42 41 44 46 44 3b 0a 09 09 69 66 20 28 69 6e 66 6f 5f 73 6f 63 6b 2d 3e 74 79 70 65 20 21 3d 20 BADFD;...if.(info_sock->type.!=.
7b60 53 4f 43 4b 5f 53 54 52 45 41 4d 29 0a 09 09 09 67 6f 74 6f 20 6f 75 74 5f 66 70 75 74 32 3b 0a SOCK_STREAM)....goto.out_fput2;.
7b80 09 7d 0a 0a 2f 2a 09 73 65 72 76 65 72 2d 3e 6c 6f 63 6b 20 3d 20 30 3b 09 2a 2f 0a 09 6d 75 74 .}../*.server->lock.=.0;.*/..mut
7ba0 65 78 5f 69 6e 69 74 28 26 73 65 72 76 65 72 2d 3e 6d 75 74 65 78 29 3b 0a 09 73 65 72 76 65 72 ex_init(&server->mutex);..server
7bc0 2d 3e 70 61 63 6b 65 74 20 3d 20 4e 55 4c 4c 3b 0a 2f 2a 09 73 65 72 76 65 72 2d 3e 62 75 66 66 ->packet.=.NULL;./*.server->buff
7be0 65 72 5f 73 69 7a 65 20 3d 20 30 3b 09 2a 2f 0a 2f 2a 09 73 65 72 76 65 72 2d 3e 63 6f 6e 6e 5f er_size.=.0;.*/./*.server->conn_
7c00 73 74 61 74 75 73 20 3d 20 30 3b 09 2a 2f 0a 2f 2a 09 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 64 status.=.0;.*/./*.server->root_d
7c20 65 6e 74 72 79 20 3d 20 4e 55 4c 4c 3b 09 2a 2f 0a 2f 2a 09 73 65 72 76 65 72 2d 3e 72 6f 6f 74 entry.=.NULL;.*/./*.server->root
7c40 5f 73 65 74 75 70 65 64 20 3d 20 30 3b 09 2a 2f 0a 09 6d 75 74 65 78 5f 69 6e 69 74 28 26 73 65 _setuped.=.0;.*/..mutex_init(&se
7c60 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 5f 6c 6f 63 6b 29 3b 0a 23 69 66 64 65 66 20 43 rver->root_setup_lock);.#ifdef.C
7c80 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 0a 2f 2a 09 73 65 ONFIG_NCPFS_PACKET_SIGNING./*.se
7ca0 72 76 65 72 2d 3e 73 69 67 6e 5f 77 61 6e 74 65 64 20 3d 20 30 3b 09 2a 2f 0a 2f 2a 09 73 65 72 rver->sign_wanted.=.0;.*/./*.ser
7cc0 76 65 72 2d 3e 73 69 67 6e 5f 61 63 74 69 76 65 20 3d 20 30 3b 09 2a 2f 0a 23 65 6e 64 69 66 0a ver->sign_active.=.0;.*/.#endif.
7ce0 09 69 6e 69 74 5f 72 77 73 65 6d 28 26 73 65 72 76 65 72 2d 3e 61 75 74 68 5f 72 77 73 65 6d 29 .init_rwsem(&server->auth_rwsem)
7d00 3b 0a 09 73 65 72 76 65 72 2d 3e 61 75 74 68 2e 61 75 74 68 5f 74 79 70 65 20 3d 20 4e 43 50 5f ;..server->auth.auth_type.=.NCP_
7d20 41 55 54 48 5f 4e 4f 4e 45 3b 0a 2f 2a 09 73 65 72 76 65 72 2d 3e 61 75 74 68 2e 6f 62 6a 65 63 AUTH_NONE;./*.server->auth.objec
7d40 74 5f 6e 61 6d 65 5f 6c 65 6e 20 3d 20 30 3b 09 2a 2f 0a 2f 2a 09 73 65 72 76 65 72 2d 3e 61 75 t_name_len.=.0;.*/./*.server->au
7d60 74 68 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 20 3d 20 4e 55 4c 4c 3b 09 2a 2f 0a 2f 2a 09 73 65 72 th.object_name.=.NULL;.*/./*.ser
7d80 76 65 72 2d 3e 61 75 74 68 2e 6f 62 6a 65 63 74 5f 74 79 70 65 20 3d 20 30 3b 09 09 2a 2f 0a 2f ver->auth.object_type.=.0;..*/./
7da0 2a 09 73 65 72 76 65 72 2d 3e 70 72 69 76 2e 6c 65 6e 20 3d 20 30 3b 09 09 09 2a 2f 0a 2f 2a 09 *.server->priv.len.=.0;...*/./*.
7dc0 73 65 72 76 65 72 2d 3e 70 72 69 76 2e 64 61 74 61 20 3d 20 4e 55 4c 4c 3b 09 09 2a 2f 0a 0a 09 server->priv.data.=.NULL;..*/...
7de0 73 65 72 76 65 72 2d 3e 6d 20 3d 20 64 61 74 61 3b 0a 09 2f 2a 20 41 6c 74 68 6f 75 67 68 20 61 server->m.=.data;../*.Although.a
7e00 6e 79 74 68 69 6e 67 20 70 72 6f 64 75 63 69 6e 67 20 74 68 69 73 20 69 73 20 62 75 67 67 79 2c nything.producing.this.is.buggy,
7e20 20 69 74 20 68 61 70 70 65 6e 73 0a 09 20 20 20 6e 6f 77 20 62 65 63 61 75 73 65 20 6f 66 20 50 .it.happens.....now.because.of.P
7e40 41 54 48 5f 4d 41 58 20 63 68 61 6e 67 65 73 2e 2e 20 2a 2f 0a 09 69 66 20 28 73 65 72 76 65 72 ATH_MAX.changes...*/..if.(server
7e60 2d 3e 6d 2e 74 69 6d 65 5f 6f 75 74 20 3c 20 31 29 20 7b 0a 09 09 73 65 72 76 65 72 2d 3e 6d 2e ->m.time_out.<.1).{...server->m.
7e80 74 69 6d 65 5f 6f 75 74 20 3d 20 31 30 3b 0a 09 09 70 72 5f 69 6e 66 6f 28 22 59 6f 75 20 6e 65 time_out.=.10;...pr_info("You.ne
7ea0 65 64 20 74 6f 20 72 65 63 6f 6d 70 69 6c 65 20 79 6f 75 72 20 6e 63 70 66 73 20 75 74 69 6c 73 ed.to.recompile.your.ncpfs.utils
7ec0 2e 2e 5c 6e 22 29 3b 0a 09 7d 0a 09 73 65 72 76 65 72 2d 3e 6d 2e 74 69 6d 65 5f 6f 75 74 20 3d ..\n");..}..server->m.time_out.=
7ee0 20 73 65 72 76 65 72 2d 3e 6d 2e 74 69 6d 65 5f 6f 75 74 20 2a 20 48 5a 20 2f 20 31 30 30 3b 0a .server->m.time_out.*.HZ./.100;.
7f00 09 73 65 72 76 65 72 2d 3e 6d 2e 66 69 6c 65 5f 6d 6f 64 65 20 3d 20 28 73 65 72 76 65 72 2d 3e .server->m.file_mode.=.(server->
7f20 6d 2e 66 69 6c 65 5f 6d 6f 64 65 20 26 20 53 5f 49 52 57 58 55 47 4f 29 20 7c 20 53 5f 49 46 52 m.file_mode.&.S_IRWXUGO).|.S_IFR
7f40 45 47 3b 0a 09 73 65 72 76 65 72 2d 3e 6d 2e 64 69 72 5f 6d 6f 64 65 20 3d 20 28 73 65 72 76 65 EG;..server->m.dir_mode.=.(serve
7f60 72 2d 3e 6d 2e 64 69 72 5f 6d 6f 64 65 20 26 20 53 5f 49 52 57 58 55 47 4f 29 20 7c 20 53 5f 49 r->m.dir_mode.&.S_IRWXUGO).|.S_I
7f80 46 44 49 52 3b 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 4c 53 0a 09 FDIR;..#ifdef.CONFIG_NCPFS_NLS..
7fa0 2f 2a 20 6c 6f 61 64 20 74 68 65 20 64 65 66 61 75 6c 74 20 4e 4c 53 20 63 68 61 72 73 65 74 73 /*.load.the.default.NLS.charsets
7fc0 20 2a 2f 0a 09 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 76 6f 6c 20 3d 20 6c 6f 61 64 5f 6e 6c 73 5f .*/..server->nls_vol.=.load_nls_
7fe0 64 65 66 61 75 6c 74 28 29 3b 0a 09 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 69 6f 20 3d 20 6c 6f 61 default();..server->nls_io.=.loa
8000 64 5f 6e 6c 73 5f 64 65 66 61 75 6c 74 28 29 3b 0a 23 65 6e 64 69 66 20 2f 2a 20 43 4f 4e 46 49 d_nls_default();.#endif./*.CONFI
8020 47 5f 4e 43 50 46 53 5f 4e 4c 53 20 2a 2f 0a 0a 09 61 74 6f 6d 69 63 5f 73 65 74 28 26 73 65 72 G_NCPFS_NLS.*/...atomic_set(&ser
8040 76 65 72 2d 3e 64 65 6e 74 72 79 5f 74 74 6c 2c 20 30 29 3b 09 2f 2a 20 6e 6f 20 63 61 63 68 69 ver->dentry_ttl,.0);./*.no.cachi
8060 6e 67 20 2a 2f 0a 0a 09 49 4e 49 54 5f 4c 49 53 54 5f 48 45 41 44 28 26 73 65 72 76 65 72 2d 3e ng.*/...INIT_LIST_HEAD(&server->
8080 74 78 2e 72 65 71 75 65 73 74 73 29 3b 0a 09 6d 75 74 65 78 5f 69 6e 69 74 28 26 73 65 72 76 65 tx.requests);..mutex_init(&serve
80a0 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 09 73 65 72 76 65 72 2d 3e 74 78 2e r->rcv.creq_mutex);..server->tx.
80c0 63 72 65 71 09 09 3d 20 4e 55 4c 4c 3b 0a 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 09 creq..=.NULL;..server->rcv.creq.
80e0 3d 20 4e 55 4c 4c 3b 0a 0a 09 69 6e 69 74 5f 74 69 6d 65 72 28 26 73 65 72 76 65 72 2d 3e 74 69 =.NULL;...init_timer(&server->ti
8100 6d 65 6f 75 74 5f 74 6d 29 3b 0a 23 75 6e 64 65 66 20 4e 43 50 5f 50 41 43 4b 45 54 5f 53 49 5a meout_tm);.#undef.NCP_PACKET_SIZ
8120 45 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 50 41 43 4b 45 54 5f 53 49 5a 45 20 31 33 31 30 37 32 E.#define.NCP_PACKET_SIZE.131072
8140 0a 09 65 72 72 6f 72 20 3d 20 2d 45 4e 4f 4d 45 4d 3b 0a 09 73 65 72 76 65 72 2d 3e 70 61 63 6b ..error.=.-ENOMEM;..server->pack
8160 65 74 5f 73 69 7a 65 20 3d 20 4e 43 50 5f 50 41 43 4b 45 54 5f 53 49 5a 45 3b 0a 09 73 65 72 76 et_size.=.NCP_PACKET_SIZE;..serv
8180 65 72 2d 3e 70 61 63 6b 65 74 20 3d 20 76 6d 61 6c 6c 6f 63 28 4e 43 50 5f 50 41 43 4b 45 54 5f er->packet.=.vmalloc(NCP_PACKET_
81a0 53 49 5a 45 29 3b 0a 09 69 66 20 28 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 20 3d 3d 20 4e 55 SIZE);..if.(server->packet.==.NU
81c0 4c 4c 29 0a 09 09 67 6f 74 6f 20 6f 75 74 5f 6e 6c 73 3b 0a 09 73 65 72 76 65 72 2d 3e 74 78 62 LL)...goto.out_nls;..server->txb
81e0 75 66 20 3d 20 76 6d 61 6c 6c 6f 63 28 4e 43 50 5f 50 41 43 4b 45 54 5f 53 49 5a 45 29 3b 0a 09 uf.=.vmalloc(NCP_PACKET_SIZE);..
8200 69 66 20 28 73 65 72 76 65 72 2d 3e 74 78 62 75 66 20 3d 3d 20 4e 55 4c 4c 29 0a 09 09 67 6f 74 if.(server->txbuf.==.NULL)...got
8220 6f 20 6f 75 74 5f 70 61 63 6b 65 74 3b 0a 09 73 65 72 76 65 72 2d 3e 72 78 62 75 66 20 3d 20 76 o.out_packet;..server->rxbuf.=.v
8240 6d 61 6c 6c 6f 63 28 4e 43 50 5f 50 41 43 4b 45 54 5f 53 49 5a 45 29 3b 0a 09 69 66 20 28 73 65 malloc(NCP_PACKET_SIZE);..if.(se
8260 72 76 65 72 2d 3e 72 78 62 75 66 20 3d 3d 20 4e 55 4c 4c 29 0a 09 09 67 6f 74 6f 20 6f 75 74 5f rver->rxbuf.==.NULL)...goto.out_
8280 74 78 62 75 66 3b 0a 0a 09 6c 6f 63 6b 5f 73 6f 63 6b 28 73 6f 63 6b 2d 3e 73 6b 29 3b 0a 09 73 txbuf;...lock_sock(sock->sk);..s
82a0 65 72 76 65 72 2d 3e 64 61 74 61 5f 72 65 61 64 79 09 3d 20 73 6f 63 6b 2d 3e 73 6b 2d 3e 73 6b erver->data_ready.=.sock->sk->sk
82c0 5f 64 61 74 61 5f 72 65 61 64 79 3b 0a 09 73 65 72 76 65 72 2d 3e 77 72 69 74 65 5f 73 70 61 63 _data_ready;..server->write_spac
82e0 65 09 3d 20 73 6f 63 6b 2d 3e 73 6b 2d 3e 73 6b 5f 77 72 69 74 65 5f 73 70 61 63 65 3b 0a 09 73 e.=.sock->sk->sk_write_space;..s
8300 65 72 76 65 72 2d 3e 65 72 72 6f 72 5f 72 65 70 6f 72 74 09 3d 20 73 6f 63 6b 2d 3e 73 6b 2d 3e erver->error_report.=.sock->sk->
8320 73 6b 5f 65 72 72 6f 72 5f 72 65 70 6f 72 74 3b 0a 09 73 6f 63 6b 2d 3e 73 6b 2d 3e 73 6b 5f 75 sk_error_report;..sock->sk->sk_u
8340 73 65 72 5f 64 61 74 61 09 3d 20 73 65 72 76 65 72 3b 0a 09 73 6f 63 6b 2d 3e 73 6b 2d 3e 73 6b ser_data.=.server;..sock->sk->sk
8360 5f 64 61 74 61 5f 72 65 61 64 79 09 20 20 3d 20 6e 63 70 5f 74 63 70 5f 64 61 74 61 5f 72 65 61 _data_ready...=.ncp_tcp_data_rea
8380 64 79 3b 0a 09 73 6f 63 6b 2d 3e 73 6b 2d 3e 73 6b 5f 65 72 72 6f 72 5f 72 65 70 6f 72 74 20 3d dy;..sock->sk->sk_error_report.=
83a0 20 6e 63 70 5f 74 63 70 5f 65 72 72 6f 72 5f 72 65 70 6f 72 74 3b 0a 09 69 66 20 28 73 6f 63 6b .ncp_tcp_error_report;..if.(sock
83c0 2d 3e 74 79 70 65 20 3d 3d 20 53 4f 43 4b 5f 53 54 52 45 41 4d 29 20 7b 0a 09 09 73 65 72 76 65 ->type.==.SOCK_STREAM).{...serve
83e0 72 2d 3e 72 63 76 2e 70 74 72 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 2a 29 26 73 65 r->rcv.ptr.=.(unsigned.char*)&se
8400 72 76 65 72 2d 3e 72 63 76 2e 62 75 66 3b 0a 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 6c 65 6e rver->rcv.buf;...server->rcv.len
8420 20 3d 20 31 30 3b 0a 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 73 74 61 74 65 20 3d 20 30 3b 0a .=.10;...server->rcv.state.=.0;.
8440 09 09 49 4e 49 54 5f 57 4f 52 4b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 74 71 2c 20 6e 63 70 ..INIT_WORK(&server->rcv.tq,.ncp
8460 5f 74 63 70 5f 72 63 76 5f 70 72 6f 63 29 3b 0a 09 09 49 4e 49 54 5f 57 4f 52 4b 28 26 73 65 72 _tcp_rcv_proc);...INIT_WORK(&ser
8480 76 65 72 2d 3e 74 78 2e 74 71 2c 20 6e 63 70 5f 74 63 70 5f 74 78 5f 70 72 6f 63 29 3b 0a 09 09 ver->tx.tq,.ncp_tcp_tx_proc);...
84a0 73 6f 63 6b 2d 3e 73 6b 2d 3e 73 6b 5f 77 72 69 74 65 5f 73 70 61 63 65 20 3d 20 6e 63 70 5f 74 sock->sk->sk_write_space.=.ncp_t
84c0 63 70 5f 77 72 69 74 65 5f 73 70 61 63 65 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 49 4e 49 54 cp_write_space;..}.else.{...INIT
84e0 5f 57 4f 52 4b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 74 71 2c 20 6e 63 70 64 67 72 61 6d 5f _WORK(&server->rcv.tq,.ncpdgram_
8500 72 63 76 5f 70 72 6f 63 29 3b 0a 09 09 49 4e 49 54 5f 57 4f 52 4b 28 26 73 65 72 76 65 72 2d 3e rcv_proc);...INIT_WORK(&server->
8520 74 69 6d 65 6f 75 74 5f 74 71 2c 20 6e 63 70 64 67 72 61 6d 5f 74 69 6d 65 6f 75 74 5f 70 72 6f timeout_tq,.ncpdgram_timeout_pro
8540 63 29 3b 0a 09 09 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 74 6d 2e 64 61 74 61 20 3d 20 c);...server->timeout_tm.data.=.
8560 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 73 65 72 76 65 72 3b 0a 09 09 73 65 72 76 65 72 2d (unsigned.long)server;...server-
8580 3e 74 69 6d 65 6f 75 74 5f 74 6d 2e 66 75 6e 63 74 69 6f 6e 20 3d 20 6e 63 70 64 67 72 61 6d 5f >timeout_tm.function.=.ncpdgram_
85a0 74 69 6d 65 6f 75 74 5f 63 61 6c 6c 3b 0a 09 7d 0a 09 72 65 6c 65 61 73 65 5f 73 6f 63 6b 28 73 timeout_call;..}..release_sock(s
85c0 6f 63 6b 2d 3e 73 6b 29 3b 0a 0a 09 6e 63 70 5f 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 ock->sk);...ncp_lock_server(serv
85e0 65 72 29 3b 0a 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 63 6f 6e 6e 65 63 74 28 73 65 72 76 65 72 er);..error.=.ncp_connect(server
8600 29 3b 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 );..ncp_unlock_server(server);..
8620 69 66 20 28 65 72 72 6f 72 20 3c 20 30 29 0a 09 09 67 6f 74 6f 20 6f 75 74 5f 72 78 62 75 66 3b if.(error.<.0)...goto.out_rxbuf;
8640 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 4e 43 50 5f 53 42 50 28 73 62 29 20 3d 20 25 70 5c 6e ..ncp_dbg(1,."NCP_SBP(sb).=.%p\n
8660 22 2c 20 4e 43 50 5f 53 42 50 28 73 62 29 29 3b 0a 0a 09 65 72 72 6f 72 20 3d 20 2d 45 4d 53 47 ",.NCP_SBP(sb));...error.=.-EMSG
8680 53 49 5a 45 3b 09 2f 2a 20 2d 45 52 45 4d 4f 54 45 53 49 44 45 49 4e 43 4f 4d 50 41 54 49 42 4c SIZE;./*.-EREMOTESIDEINCOMPATIBL
86a0 45 20 2a 2f 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 50 41 43 4b 45 54 5f E.*/.#ifdef.CONFIG_NCPFS_PACKET_
86c0 53 49 47 4e 49 4e 47 0a 09 69 66 20 28 6e 63 70 5f 6e 65 67 6f 74 69 61 74 65 5f 73 69 7a 65 5f SIGNING..if.(ncp_negotiate_size_
86e0 61 6e 64 5f 6f 70 74 69 6f 6e 73 28 73 65 72 76 65 72 2c 20 64 65 66 61 75 6c 74 5f 62 75 66 73 and_options(server,.default_bufs
8700 69 7a 65 2c 0a 09 09 4e 43 50 5f 44 45 46 41 55 4c 54 5f 4f 50 54 49 4f 4e 53 2c 20 26 28 73 65 ize,...NCP_DEFAULT_OPTIONS,.&(se
8720 72 76 65 72 2d 3e 62 75 66 66 65 72 5f 73 69 7a 65 29 2c 20 26 6f 70 74 69 6f 6e 73 29 20 3d 3d rver->buffer_size),.&options).==
8740 20 30 29 0a 09 7b 0a 09 09 69 66 20 28 6f 70 74 69 6f 6e 73 20 21 3d 20 4e 43 50 5f 44 45 46 41 .0)..{...if.(options.!=.NCP_DEFA
8760 55 4c 54 5f 4f 50 54 49 4f 4e 53 29 0a 09 09 7b 0a 09 09 09 69 66 20 28 6e 63 70 5f 6e 65 67 6f ULT_OPTIONS)...{....if.(ncp_nego
8780 74 69 61 74 65 5f 73 69 7a 65 5f 61 6e 64 5f 6f 70 74 69 6f 6e 73 28 73 65 72 76 65 72 2c 20 0a tiate_size_and_options(server,..
87a0 09 09 09 09 64 65 66 61 75 6c 74 5f 62 75 66 73 69 7a 65 2c 0a 09 09 09 09 6f 70 74 69 6f 6e 73 ....default_bufsize,.....options
87c0 20 26 20 32 2c 20 0a 09 09 09 09 26 28 73 65 72 76 65 72 2d 3e 62 75 66 66 65 72 5f 73 69 7a 65 .&.2,......&(server->buffer_size
87e0 29 2c 20 26 6f 70 74 69 6f 6e 73 29 20 21 3d 20 30 29 0a 09 09 09 09 0a 09 09 09 7b 0a 09 09 09 ),.&options).!=.0).........{....
8800 09 67 6f 74 6f 20 6f 75 74 5f 64 69 73 63 6f 6e 6e 65 63 74 3b 0a 09 09 09 7d 0a 09 09 7d 0a 09 .goto.out_disconnect;....}...}..
8820 09 6e 63 70 5f 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 69 66 20 28 .ncp_lock_server(server);...if.(
8840 6f 70 74 69 6f 6e 73 20 26 20 32 29 0a 09 09 09 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 77 61 6e options.&.2)....server->sign_wan
8860 74 65 64 20 3d 20 31 3b 0a 09 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 ted.=.1;...ncp_unlock_server(ser
8880 76 65 72 29 3b 0a 09 7d 0a 09 65 6c 73 65 20 0a 23 65 6e 64 69 66 09 2f 2a 20 43 4f 4e 46 49 47 ver);..}..else..#endif./*.CONFIG
88a0 5f 4e 43 50 46 53 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 20 2a 2f 0a 09 69 66 20 28 6e 63 _NCPFS_PACKET_SIGNING.*/..if.(nc
88c0 70 5f 6e 65 67 6f 74 69 61 74 65 5f 62 75 66 66 65 72 73 69 7a 65 28 73 65 72 76 65 72 2c 20 64 p_negotiate_buffersize(server,.d
88e0 65 66 61 75 6c 74 5f 62 75 66 73 69 7a 65 2c 0a 20 20 09 09 09 09 20 20 20 20 20 26 28 73 65 72 efault_bufsize,............&(ser
8900 76 65 72 2d 3e 62 75 66 66 65 72 5f 73 69 7a 65 29 29 20 21 3d 20 30 29 0a 09 09 67 6f 74 6f 20 ver->buffer_size)).!=.0)...goto.
8920 6f 75 74 5f 64 69 73 63 6f 6e 6e 65 63 74 3b 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 62 75 66 out_disconnect;..ncp_dbg(1,."buf
8940 73 69 7a 65 20 3d 20 25 64 5c 6e 22 2c 20 73 65 72 76 65 72 2d 3e 62 75 66 66 65 72 5f 73 69 7a size.=.%d\n",.server->buffer_siz
8960 65 29 3b 0a 0a 09 6d 65 6d 73 65 74 28 26 66 69 6e 66 6f 2c 20 30 2c 20 73 69 7a 65 6f 66 28 66 e);...memset(&finfo,.0,.sizeof(f
8980 69 6e 66 6f 29 29 3b 0a 09 66 69 6e 66 6f 2e 69 2e 61 74 74 72 69 62 75 74 65 73 09 3d 20 61 44 info));..finfo.i.attributes.=.aD
89a0 49 52 3b 0a 09 66 69 6e 66 6f 2e 69 2e 64 61 74 61 53 74 72 65 61 6d 53 69 7a 65 09 3d 20 30 3b IR;..finfo.i.dataStreamSize.=.0;
89c0 09 2f 2a 20 69 67 6e 6f 72 65 64 20 2a 2f 0a 09 66 69 6e 66 6f 2e 69 2e 64 69 72 45 6e 74 4e 75 ./*.ignored.*/..finfo.i.dirEntNu
89e0 6d 09 3d 20 30 3b 0a 09 66 69 6e 66 6f 2e 69 2e 44 6f 73 44 69 72 4e 75 6d 09 3d 20 30 3b 0a 23 m.=.0;..finfo.i.DosDirNum.=.0;.#
8a00 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 53 4d 41 4c 4c 44 4f 53 0a 09 66 69 6e ifdef.CONFIG_NCPFS_SMALLDOS..fin
8a20 66 6f 2e 69 2e 4e 53 43 72 65 61 74 6f 72 09 3d 20 4e 57 5f 4e 53 5f 44 4f 53 3b 0a 23 65 6e 64 fo.i.NSCreator.=.NW_NS_DOS;.#end
8a40 69 66 0a 09 66 69 6e 66 6f 2e 76 6f 6c 75 6d 65 09 09 3d 20 4e 43 50 5f 4e 55 4d 42 45 52 5f 4f if..finfo.volume..=.NCP_NUMBER_O
8a60 46 5f 56 4f 4c 55 4d 45 53 3b 0a 09 2f 2a 20 73 65 74 20 64 61 74 65 73 20 6f 66 20 6d 6f 75 6e F_VOLUMES;../*.set.dates.of.moun
8a80 74 70 6f 69 6e 74 20 74 6f 20 4a 61 6e 20 31 2c 20 31 39 38 36 3b 20 30 30 3a 30 30 20 2a 2f 0a tpoint.to.Jan.1,.1986;.00:00.*/.
8aa0 09 66 69 6e 66 6f 2e 69 2e 63 72 65 61 74 69 6f 6e 54 69 6d 65 09 3d 20 66 69 6e 66 6f 2e 69 2e .finfo.i.creationTime.=.finfo.i.
8ac0 6d 6f 64 69 66 79 54 69 6d 65 0a 09 09 09 09 3d 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 30 78 30 modifyTime.....=.cpu_to_le16(0x0
8ae0 30 30 30 29 3b 0a 09 66 69 6e 66 6f 2e 69 2e 63 72 65 61 74 69 6f 6e 44 61 74 65 09 3d 20 66 69 000);..finfo.i.creationDate.=.fi
8b00 6e 66 6f 2e 69 2e 6d 6f 64 69 66 79 44 61 74 65 0a 09 09 09 09 3d 20 66 69 6e 66 6f 2e 69 2e 6c nfo.i.modifyDate.....=.finfo.i.l
8b20 61 73 74 41 63 63 65 73 73 44 61 74 65 0a 09 09 09 09 3d 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 astAccessDate.....=.cpu_to_le16(
8b40 30 78 30 43 32 31 29 3b 0a 09 66 69 6e 66 6f 2e 69 2e 6e 61 6d 65 4c 65 6e 09 09 3d 20 30 3b 0a 0x0C21);..finfo.i.nameLen..=.0;.
8b60 09 66 69 6e 66 6f 2e 69 2e 65 6e 74 72 79 4e 61 6d 65 5b 30 5d 09 3d 20 27 5c 30 27 3b 0a 0a 09 .finfo.i.entryName[0].=.'\0';...
8b80 66 69 6e 66 6f 2e 6f 70 65 6e 65 64 09 09 3d 20 30 3b 0a 09 66 69 6e 66 6f 2e 69 6e 6f 09 09 3d finfo.opened..=.0;..finfo.ino..=
8ba0 20 32 3b 09 2f 2a 20 74 72 61 64 69 74 69 6f 6e 20 2a 2f 0a 0a 09 73 65 72 76 65 72 2d 3e 6e 61 .2;./*.tradition.*/...server->na
8bc0 6d 65 5f 73 70 61 63 65 5b 66 69 6e 66 6f 2e 76 6f 6c 75 6d 65 5d 20 3d 20 4e 57 5f 4e 53 5f 44 me_space[finfo.volume].=.NW_NS_D
8be0 4f 53 3b 0a 0a 09 65 72 72 6f 72 20 3d 20 2d 45 4e 4f 4d 45 4d 3b 0a 20 20 20 20 20 20 20 20 72 OS;...error.=.-ENOMEM;.........r
8c00 6f 6f 74 5f 69 6e 6f 64 65 20 3d 20 6e 63 70 5f 69 67 65 74 28 73 62 2c 20 26 66 69 6e 66 6f 29 oot_inode.=.ncp_iget(sb,.&finfo)
8c20 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 72 6f 6f 74 5f 69 6e 6f 64 65 29 0a 09 09 67 6f 74 ;.........if.(!root_inode)...got
8c40 6f 20 6f 75 74 5f 64 69 73 63 6f 6e 6e 65 63 74 3b 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 72 o.out_disconnect;..ncp_dbg(1,."r
8c60 6f 6f 74 20 76 6f 6c 3d 25 64 5c 6e 22 2c 20 4e 43 50 5f 46 49 4e 46 4f 28 72 6f 6f 74 5f 69 6e oot.vol=%d\n",.NCP_FINFO(root_in
8c80 6f 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 29 3b 0a 09 73 62 2d 3e 73 5f 72 6f 6f 74 20 3d 20 ode)->volNumber);..sb->s_root.=.
8ca0 64 5f 6d 61 6b 65 5f 72 6f 6f 74 28 72 6f 6f 74 5f 69 6e 6f 64 65 29 3b 0a 20 20 20 20 20 20 20 d_make_root(root_inode);........
8cc0 20 69 66 20 28 21 73 62 2d 3e 73 5f 72 6f 6f 74 29 0a 09 09 67 6f 74 6f 20 6f 75 74 5f 64 69 73 .if.(!sb->s_root)...goto.out_dis
8ce0 63 6f 6e 6e 65 63 74 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 0a 6f 75 74 5f 64 69 73 63 6f 6e 6e connect;..return.0;..out_disconn
8d00 65 63 74 3a 0a 09 6e 63 70 5f 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 ect:..ncp_lock_server(server);..
8d20 6e 63 70 5f 64 69 73 63 6f 6e 6e 65 63 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 75 6e 6c ncp_disconnect(server);..ncp_unl
8d40 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 6f 75 74 5f 72 78 62 75 66 3a 0a 09 ock_server(server);.out_rxbuf:..
8d60 6e 63 70 5f 73 74 6f 70 5f 74 61 73 6b 73 28 73 65 72 76 65 72 29 3b 0a 09 76 66 72 65 65 28 73 ncp_stop_tasks(server);..vfree(s
8d80 65 72 76 65 72 2d 3e 72 78 62 75 66 29 3b 0a 6f 75 74 5f 74 78 62 75 66 3a 0a 09 76 66 72 65 65 erver->rxbuf);.out_txbuf:..vfree
8da0 28 73 65 72 76 65 72 2d 3e 74 78 62 75 66 29 3b 0a 6f 75 74 5f 70 61 63 6b 65 74 3a 0a 09 76 66 (server->txbuf);.out_packet:..vf
8dc0 72 65 65 28 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 29 3b 0a 6f 75 74 5f 6e 6c 73 3a 0a 23 69 ree(server->packet);.out_nls:.#i
8de0 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 4c 53 0a 09 75 6e 6c 6f 61 64 5f 6e 6c fdef.CONFIG_NCPFS_NLS..unload_nl
8e00 73 28 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 69 6f 29 3b 0a 09 75 6e 6c 6f 61 64 5f 6e 6c 73 28 73 s(server->nls_io);..unload_nls(s
8e20 65 72 76 65 72 2d 3e 6e 6c 73 5f 76 6f 6c 29 3b 0a 23 65 6e 64 69 66 0a 09 6d 75 74 65 78 5f 64 erver->nls_vol);.#endif..mutex_d
8e40 65 73 74 72 6f 79 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b estroy(&server->rcv.creq_mutex);
8e60 0a 09 6d 75 74 65 78 5f 64 65 73 74 72 6f 79 28 26 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 ..mutex_destroy(&server->root_se
8e80 74 75 70 5f 6c 6f 63 6b 29 3b 0a 09 6d 75 74 65 78 5f 64 65 73 74 72 6f 79 28 26 73 65 72 76 65 tup_lock);..mutex_destroy(&serve
8ea0 72 2d 3e 6d 75 74 65 78 29 3b 0a 6f 75 74 5f 66 70 75 74 32 3a 0a 09 69 66 20 28 73 65 72 76 65 r->mutex);.out_fput2:..if.(serve
8ec0 72 2d 3e 69 6e 66 6f 5f 73 6f 63 6b 29 0a 09 09 73 6f 63 6b 66 64 5f 70 75 74 28 73 65 72 76 65 r->info_sock)...sockfd_put(serve
8ee0 72 2d 3e 69 6e 66 6f 5f 73 6f 63 6b 29 3b 0a 6f 75 74 5f 62 64 69 3a 0a 09 62 64 69 5f 64 65 73 r->info_sock);.out_bdi:..bdi_des
8f00 74 72 6f 79 28 26 73 65 72 76 65 72 2d 3e 62 64 69 29 3b 0a 6f 75 74 5f 66 70 75 74 3a 0a 09 73 troy(&server->bdi);.out_fput:..s
8f20 6f 63 6b 66 64 5f 70 75 74 28 73 6f 63 6b 29 3b 0a 6f 75 74 3a 0a 09 70 75 74 5f 70 69 64 28 64 ockfd_put(sock);.out:..put_pid(d
8f40 61 74 61 2e 77 64 6f 67 5f 70 69 64 29 3b 0a 09 73 62 2d 3e 73 5f 66 73 5f 69 6e 66 6f 20 3d 20 ata.wdog_pid);..sb->s_fs_info.=.
8f60 4e 55 4c 4c 3b 0a 09 6b 66 72 65 65 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 72 6e 20 65 72 NULL;..kfree(server);..return.er
8f80 72 6f 72 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 64 65 6c 61 79 65 64 5f 66 72 65 65 ror;.}..static.void.delayed_free
8fa0 28 73 74 72 75 63 74 20 72 63 75 5f 68 65 61 64 20 2a 70 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e (struct.rcu_head.*p).{..struct.n
8fc0 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 20 63 6f 6e 74 61 69 6e 65 72 5f 6f 66 cp_server.*server.=.container_of
8fe0 28 70 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2c 20 72 63 75 29 3b 0a 23 69 66 (p,.struct.ncp_server,.rcu);.#if
9000 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 4c 53 0a 09 2f 2a 20 75 6e 6c 6f 61 64 20 def.CONFIG_NCPFS_NLS../*.unload.
9020 74 68 65 20 4e 4c 53 20 63 68 61 72 73 65 74 73 20 2a 2f 0a 09 75 6e 6c 6f 61 64 5f 6e 6c 73 28 the.NLS.charsets.*/..unload_nls(
9040 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 76 6f 6c 29 3b 0a 09 75 6e 6c 6f 61 64 5f 6e 6c 73 28 73 65 server->nls_vol);..unload_nls(se
9060 72 76 65 72 2d 3e 6e 6c 73 5f 69 6f 29 3b 0a 23 65 6e 64 69 66 20 2f 2a 20 43 4f 4e 46 49 47 5f rver->nls_io);.#endif./*.CONFIG_
9080 4e 43 50 46 53 5f 4e 4c 53 20 2a 2f 0a 09 6b 66 72 65 65 28 73 65 72 76 65 72 29 3b 0a 7d 0a 0a NCPFS_NLS.*/..kfree(server);.}..
90a0 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 70 75 74 5f 73 75 70 65 72 28 73 74 72 75 63 74 static.void.ncp_put_super(struct
90c0 20 73 75 70 65 72 5f 62 6c 6f 63 6b 20 2a 73 62 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f .super_block.*sb).{..struct.ncp_
90e0 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 42 50 28 73 62 29 3b 0a 0a 09 server.*server.=.NCP_SBP(sb);...
9100 6e 63 70 5f 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 64 69 ncp_lock_server(server);..ncp_di
9120 73 63 6f 6e 6e 65 63 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 sconnect(server);..ncp_unlock_se
9140 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 0a 09 6e 63 70 5f 73 74 6f 70 5f 74 61 73 6b 73 28 73 rver(server);...ncp_stop_tasks(s
9160 65 72 76 65 72 29 3b 0a 0a 09 6d 75 74 65 78 5f 64 65 73 74 72 6f 79 28 26 73 65 72 76 65 72 2d erver);...mutex_destroy(&server-
9180 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 09 6d 75 74 65 78 5f 64 65 73 74 72 6f 79 >rcv.creq_mutex);..mutex_destroy
91a0 28 26 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 5f 6c 6f 63 6b 29 3b 0a 09 6d 75 74 (&server->root_setup_lock);..mut
91c0 65 78 5f 64 65 73 74 72 6f 79 28 26 73 65 72 76 65 72 2d 3e 6d 75 74 65 78 29 3b 0a 0a 09 69 66 ex_destroy(&server->mutex);...if
91e0 20 28 73 65 72 76 65 72 2d 3e 69 6e 66 6f 5f 73 6f 63 6b 29 0a 09 09 73 6f 63 6b 66 64 5f 70 75 .(server->info_sock)...sockfd_pu
9200 74 28 73 65 72 76 65 72 2d 3e 69 6e 66 6f 5f 73 6f 63 6b 29 3b 0a 09 73 6f 63 6b 66 64 5f 70 75 t(server->info_sock);..sockfd_pu
9220 74 28 73 65 72 76 65 72 2d 3e 6e 63 70 5f 73 6f 63 6b 29 3b 0a 09 6b 69 6c 6c 5f 70 69 64 28 73 t(server->ncp_sock);..kill_pid(s
9240 65 72 76 65 72 2d 3e 6d 2e 77 64 6f 67 5f 70 69 64 2c 20 53 49 47 54 45 52 4d 2c 20 31 29 3b 0a erver->m.wdog_pid,.SIGTERM,.1);.
9260 09 70 75 74 5f 70 69 64 28 73 65 72 76 65 72 2d 3e 6d 2e 77 64 6f 67 5f 70 69 64 29 3b 0a 0a 09 .put_pid(server->m.wdog_pid);...
9280 62 64 69 5f 64 65 73 74 72 6f 79 28 26 73 65 72 76 65 72 2d 3e 62 64 69 29 3b 0a 09 6b 66 72 65 bdi_destroy(&server->bdi);..kfre
92a0 65 28 73 65 72 76 65 72 2d 3e 70 72 69 76 2e 64 61 74 61 29 3b 0a 09 6b 66 72 65 65 28 73 65 72 e(server->priv.data);..kfree(ser
92c0 76 65 72 2d 3e 61 75 74 68 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 29 3b 0a 09 76 66 72 65 65 28 73 ver->auth.object_name);..vfree(s
92e0 65 72 76 65 72 2d 3e 72 78 62 75 66 29 3b 0a 09 76 66 72 65 65 28 73 65 72 76 65 72 2d 3e 74 78 erver->rxbuf);..vfree(server->tx
9300 62 75 66 29 3b 0a 09 76 66 72 65 65 28 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 29 3b 0a 09 63 buf);..vfree(server->packet);..c
9320 61 6c 6c 5f 72 63 75 28 26 73 65 72 76 65 72 2d 3e 72 63 75 2c 20 64 65 6c 61 79 65 64 5f 66 72 all_rcu(&server->rcu,.delayed_fr
9340 65 65 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 73 74 61 74 66 73 28 73 74 ee);.}..static.int.ncp_statfs(st
9360 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 2c 20 73 74 72 75 63 74 20 6b 73 74 61 ruct.dentry.*dentry,.struct.ksta
9380 74 66 73 20 2a 62 75 66 29 0a 7b 0a 09 73 74 72 75 63 74 20 64 65 6e 74 72 79 2a 20 64 3b 0a 09 tfs.*buf).{..struct.dentry*.d;..
93a0 73 74 72 75 63 74 20 69 6e 6f 64 65 2a 20 69 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 69 6e 6f struct.inode*.i;..struct.ncp_ino
93c0 64 65 5f 69 6e 66 6f 2a 20 6e 69 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2a de_info*.ni;..struct.ncp_server*
93e0 20 73 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 76 6f 6c 75 6d 65 5f 69 6e 66 6f 20 76 69 3b 0a .s;..struct.ncp_volume_info.vi;.
9400 09 73 74 72 75 63 74 20 73 75 70 65 72 5f 62 6c 6f 63 6b 20 2a 73 62 20 3d 20 64 65 6e 74 72 79 .struct.super_block.*sb.=.dentry
9420 2d 3e 64 5f 73 62 3b 0a 09 69 6e 74 20 65 72 72 3b 0a 09 5f 5f 75 38 20 64 68 3b 0a 09 0a 09 64 ->d_sb;..int.err;..__u8.dh;....d
9440 20 3d 20 73 62 2d 3e 73 5f 72 6f 6f 74 3b 0a 09 69 66 20 28 21 64 29 20 7b 0a 09 09 67 6f 74 6f .=.sb->s_root;..if.(!d).{...goto
9460 20 64 66 6c 74 3b 0a 09 7d 0a 09 69 20 3d 20 64 5f 69 6e 6f 64 65 28 64 29 3b 0a 09 69 66 20 28 .dflt;..}..i.=.d_inode(d);..if.(
9480 21 69 29 20 7b 0a 09 09 67 6f 74 6f 20 64 66 6c 74 3b 0a 09 7d 0a 09 6e 69 20 3d 20 4e 43 50 5f !i).{...goto.dflt;..}..ni.=.NCP_
94a0 46 49 4e 46 4f 28 69 29 3b 0a 09 69 66 20 28 21 6e 69 29 20 7b 0a 09 09 67 6f 74 6f 20 64 66 6c FINFO(i);..if.(!ni).{...goto.dfl
94c0 74 3b 0a 09 7d 0a 09 73 20 3d 20 4e 43 50 5f 53 42 50 28 73 62 29 3b 0a 09 69 66 20 28 21 73 29 t;..}..s.=.NCP_SBP(sb);..if.(!s)
94e0 20 7b 0a 09 09 67 6f 74 6f 20 64 66 6c 74 3b 0a 09 7d 0a 09 69 66 20 28 21 73 2d 3e 6d 2e 6d 6f .{...goto.dflt;..}..if.(!s->m.mo
9500 75 6e 74 65 64 5f 76 6f 6c 5b 30 5d 29 20 7b 0a 09 09 67 6f 74 6f 20 64 66 6c 74 3b 0a 09 7d 0a unted_vol[0]).{...goto.dflt;..}.
9520 0a 09 65 72 72 20 3d 20 6e 63 70 5f 64 69 72 68 61 6e 64 6c 65 5f 61 6c 6c 6f 63 28 73 2c 20 6e ..err.=.ncp_dirhandle_alloc(s,.n
9540 69 2d 3e 76 6f 6c 4e 75 6d 62 65 72 2c 20 6e 69 2d 3e 44 6f 73 44 69 72 4e 75 6d 2c 20 26 64 68 i->volNumber,.ni->DosDirNum,.&dh
9560 29 3b 0a 09 69 66 20 28 65 72 72 29 20 7b 0a 09 09 67 6f 74 6f 20 64 66 6c 74 3b 0a 09 7d 0a 09 );..if.(err).{...goto.dflt;..}..
9580 65 72 72 20 3d 20 6e 63 70 5f 67 65 74 5f 64 69 72 65 63 74 6f 72 79 5f 69 6e 66 6f 28 73 2c 20 err.=.ncp_get_directory_info(s,.
95a0 64 68 2c 20 26 76 69 29 3b 0a 09 6e 63 70 5f 64 69 72 68 61 6e 64 6c 65 5f 66 72 65 65 28 73 2c dh,.&vi);..ncp_dirhandle_free(s,
95c0 20 64 68 29 3b 0a 09 69 66 20 28 65 72 72 29 20 7b 0a 09 09 67 6f 74 6f 20 64 66 6c 74 3b 0a 09 .dh);..if.(err).{...goto.dflt;..
95e0 7d 0a 09 62 75 66 2d 3e 66 5f 74 79 70 65 20 3d 20 4e 43 50 5f 53 55 50 45 52 5f 4d 41 47 49 43 }..buf->f_type.=.NCP_SUPER_MAGIC
9600 3b 0a 09 62 75 66 2d 3e 66 5f 62 73 69 7a 65 20 3d 20 76 69 2e 73 65 63 74 6f 72 73 5f 70 65 72 ;..buf->f_bsize.=.vi.sectors_per
9620 5f 62 6c 6f 63 6b 20 2a 20 35 31 32 3b 0a 09 62 75 66 2d 3e 66 5f 62 6c 6f 63 6b 73 20 3d 20 76 _block.*.512;..buf->f_blocks.=.v
9640 69 2e 74 6f 74 61 6c 5f 62 6c 6f 63 6b 73 3b 0a 09 62 75 66 2d 3e 66 5f 62 66 72 65 65 20 3d 20 i.total_blocks;..buf->f_bfree.=.
9660 76 69 2e 66 72 65 65 5f 62 6c 6f 63 6b 73 3b 0a 09 62 75 66 2d 3e 66 5f 62 61 76 61 69 6c 20 3d vi.free_blocks;..buf->f_bavail.=
9680 20 76 69 2e 66 72 65 65 5f 62 6c 6f 63 6b 73 3b 0a 09 62 75 66 2d 3e 66 5f 66 69 6c 65 73 20 3d .vi.free_blocks;..buf->f_files.=
96a0 20 76 69 2e 74 6f 74 61 6c 5f 64 69 72 5f 65 6e 74 72 69 65 73 3b 0a 09 62 75 66 2d 3e 66 5f 66 .vi.total_dir_entries;..buf->f_f
96c0 66 72 65 65 20 3d 20 76 69 2e 61 76 61 69 6c 61 62 6c 65 5f 64 69 72 5f 65 6e 74 72 69 65 73 3b free.=.vi.available_dir_entries;
96e0 0a 09 62 75 66 2d 3e 66 5f 6e 61 6d 65 6c 65 6e 20 3d 20 31 32 3b 0a 09 72 65 74 75 72 6e 20 30 ..buf->f_namelen.=.12;..return.0
9700 3b 0a 0a 09 2f 2a 20 57 65 20 63 61 6e 6e 6f 74 20 73 61 79 20 68 6f 77 20 6d 75 63 68 20 64 69 ;.../*.We.cannot.say.how.much.di
9720 73 6b 20 73 70 61 63 65 20 69 73 20 6c 65 66 74 20 6f 6e 20 61 20 6d 6f 75 6e 74 65 64 0a 09 20 sk.space.is.left.on.a.mounted...
9740 20 20 4e 65 74 57 61 72 65 20 53 65 72 76 65 72 2c 20 62 65 63 61 75 73 65 20 66 72 65 65 20 73 ..NetWare.Server,.because.free.s
9760 70 61 63 65 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 6f 76 65 72 0a 09 20 20 20 76 6f 6c pace.is.distributed.over.....vol
9780 75 6d 65 73 2c 20 61 6e 64 20 74 68 65 20 63 75 72 72 65 6e 74 20 75 73 65 72 20 6d 69 67 68 74 umes,.and.the.current.user.might
97a0 20 68 61 76 65 20 64 69 73 6b 20 71 75 6f 74 61 73 2e 20 53 6f 0a 09 20 20 20 66 72 65 65 20 73 .have.disk.quotas..So.....free.s
97c0 70 61 63 65 20 69 73 20 6e 6f 74 20 74 68 61 74 20 73 69 6d 70 6c 65 20 74 6f 20 64 65 74 65 72 pace.is.not.that.simple.to.deter
97e0 6d 69 6e 65 2e 20 4f 75 72 20 64 65 63 69 73 69 6f 6e 0a 09 20 20 20 68 65 72 65 20 69 73 20 74 mine..Our.decision.....here.is.t
9800 6f 20 65 72 72 20 63 6f 6e 73 65 72 76 61 74 69 76 65 6c 79 2e 20 2a 2f 0a 0a 64 66 6c 74 3a 3b o.err.conservatively..*/..dflt:;
9820 0a 09 62 75 66 2d 3e 66 5f 74 79 70 65 20 3d 20 4e 43 50 5f 53 55 50 45 52 5f 4d 41 47 49 43 3b ..buf->f_type.=.NCP_SUPER_MAGIC;
9840 0a 09 62 75 66 2d 3e 66 5f 62 73 69 7a 65 20 3d 20 4e 43 50 5f 42 4c 4f 43 4b 5f 53 49 5a 45 3b ..buf->f_bsize.=.NCP_BLOCK_SIZE;
9860 0a 09 62 75 66 2d 3e 66 5f 62 6c 6f 63 6b 73 20 3d 20 30 3b 0a 09 62 75 66 2d 3e 66 5f 62 66 72 ..buf->f_blocks.=.0;..buf->f_bfr
9880 65 65 20 3d 20 30 3b 0a 09 62 75 66 2d 3e 66 5f 62 61 76 61 69 6c 20 3d 20 30 3b 0a 09 62 75 66 ee.=.0;..buf->f_bavail.=.0;..buf
98a0 2d 3e 66 5f 6e 61 6d 65 6c 65 6e 20 3d 20 31 32 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a ->f_namelen.=.12;..return.0;.}..
98c0 69 6e 74 20 6e 63 70 5f 6e 6f 74 69 66 79 5f 63 68 61 6e 67 65 28 73 74 72 75 63 74 20 64 65 6e int.ncp_notify_change(struct.den
98e0 74 72 79 20 2a 64 65 6e 74 72 79 2c 20 73 74 72 75 63 74 20 69 61 74 74 72 20 2a 61 74 74 72 29 try.*dentry,.struct.iattr.*attr)
9900 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 20 3d 20 64 5f 69 6e 6f 64 .{..struct.inode.*inode.=.d_inod
9920 65 28 64 65 6e 74 72 79 29 3b 0a 09 69 6e 74 20 72 65 73 75 6c 74 20 3d 20 30 3b 0a 09 5f 5f 6c e(dentry);..int.result.=.0;..__l
9940 65 33 32 20 69 6e 66 6f 5f 6d 61 73 6b 3b 0a 09 73 74 72 75 63 74 20 6e 77 5f 6d 6f 64 69 66 79 e32.info_mask;..struct.nw_modify
9960 5f 64 6f 73 5f 69 6e 66 6f 20 69 6e 66 6f 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 _dos_info.info;..struct.ncp_serv
9980 65 72 20 2a 73 65 72 76 65 72 3b 0a 0a 09 72 65 73 75 6c 74 20 3d 20 2d 45 49 4f 3b 0a 0a 09 73 er.*server;...result.=.-EIO;...s
99a0 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 3b 0a 09 69 66 20 28 erver.=.NCP_SERVER(inode);..if.(
99c0 21 73 65 72 76 65 72 29 09 2f 2a 20 48 6f 77 20 74 68 69 73 20 63 6f 75 6c 64 20 68 61 70 70 65 !server)./*.How.this.could.happe
99e0 6e 3f 20 2a 2f 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 72 65 73 75 6c 74 20 3d 20 2d 45 50 n?.*/...goto.out;...result.=.-EP
9a00 45 52 4d 3b 0a 09 69 66 20 28 49 53 5f 44 45 41 44 44 49 52 28 64 5f 69 6e 6f 64 65 28 64 65 6e ERM;..if.(IS_DEADDIR(d_inode(den
9a20 74 72 79 29 29 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 2f 2a 20 61 67 65 69 6e 67 20 74 try)))...goto.out;.../*.ageing.t
9a40 68 65 20 64 65 6e 74 72 79 20 74 6f 20 66 6f 72 63 65 20 76 61 6c 69 64 61 74 69 6f 6e 20 2a 2f he.dentry.to.force.validation.*/
9a60 0a 09 6e 63 70 5f 61 67 65 5f 64 65 6e 74 72 79 28 73 65 72 76 65 72 2c 20 64 65 6e 74 72 79 29 ..ncp_age_dentry(server,.dentry)
9a80 3b 0a 0a 09 72 65 73 75 6c 74 20 3d 20 73 65 74 61 74 74 72 5f 70 72 65 70 61 72 65 28 64 65 6e ;...result.=.setattr_prepare(den
9aa0 74 72 79 2c 20 61 74 74 72 29 3b 0a 09 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 0a 09 09 67 try,.attr);..if.(result.<.0)...g
9ac0 6f 74 6f 20 6f 75 74 3b 0a 0a 09 72 65 73 75 6c 74 20 3d 20 2d 45 50 45 52 4d 3b 0a 09 69 66 20 oto.out;...result.=.-EPERM;..if.
9ae0 28 28 61 74 74 72 2d 3e 69 61 5f 76 61 6c 69 64 20 26 20 41 54 54 52 5f 55 49 44 29 20 26 26 20 ((attr->ia_valid.&.ATTR_UID).&&.
9b00 21 75 69 64 5f 65 71 28 61 74 74 72 2d 3e 69 61 5f 75 69 64 2c 20 73 65 72 76 65 72 2d 3e 6d 2e !uid_eq(attr->ia_uid,.server->m.
9b20 75 69 64 29 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 69 66 20 28 28 61 74 74 72 2d 3e 69 uid))...goto.out;...if.((attr->i
9b40 61 5f 76 61 6c 69 64 20 26 20 41 54 54 52 5f 47 49 44 29 20 26 26 20 21 67 69 64 5f 65 71 28 61 a_valid.&.ATTR_GID).&&.!gid_eq(a
9b60 74 74 72 2d 3e 69 61 5f 67 69 64 2c 20 73 65 72 76 65 72 2d 3e 6d 2e 67 69 64 29 29 0a 09 09 67 ttr->ia_gid,.server->m.gid))...g
9b80 6f 74 6f 20 6f 75 74 3b 0a 0a 09 69 66 20 28 28 28 61 74 74 72 2d 3e 69 61 5f 76 61 6c 69 64 20 oto.out;...if.(((attr->ia_valid.
9ba0 26 20 41 54 54 52 5f 4d 4f 44 45 29 20 26 26 0a 09 20 20 20 20 20 28 61 74 74 72 2d 3e 69 61 5f &.ATTR_MODE).&&.......(attr->ia_
9bc0 6d 6f 64 65 20 26 0a 09 20 20 20 20 20 20 7e 28 53 5f 49 46 52 45 47 20 7c 20 53 5f 49 46 44 49 mode.&........~(S_IFREG.|.S_IFDI
9be0 52 20 7c 20 53 5f 49 52 57 58 55 47 4f 29 29 29 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 R.|.S_IRWXUGO))))...goto.out;...
9c00 69 6e 66 6f 5f 6d 61 73 6b 20 3d 20 30 3b 0a 09 6d 65 6d 73 65 74 28 26 69 6e 66 6f 2c 20 30 2c info_mask.=.0;..memset(&info,.0,
9c20 20 73 69 7a 65 6f 66 28 69 6e 66 6f 29 29 3b 0a 0a 23 69 66 20 31 20 0a 20 20 20 20 20 20 20 20 .sizeof(info));..#if.1..........
9c40 69 66 20 28 28 61 74 74 72 2d 3e 69 61 5f 76 61 6c 69 64 20 26 20 41 54 54 52 5f 4d 4f 44 45 29 if.((attr->ia_valid.&.ATTR_MODE)
9c60 20 21 3d 20 30 29 0a 20 20 20 20 20 20 20 20 7b 0a 09 09 75 6d 6f 64 65 5f 74 20 6e 65 77 6d 6f .!=.0).........{...umode_t.newmo
9c80 64 65 20 3d 20 61 74 74 72 2d 3e 69 61 5f 6d 6f 64 65 3b 0a 0a 09 09 69 6e 66 6f 5f 6d 61 73 6b de.=.attr->ia_mode;....info_mask
9ca0 20 7c 3d 20 44 4d 5f 41 54 54 52 49 42 55 54 45 53 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 .|=.DM_ATTRIBUTES;..............
9cc0 20 20 20 20 69 66 20 28 53 5f 49 53 44 49 52 28 69 6e 6f 64 65 2d 3e 69 5f 6d 6f 64 65 29 29 20 ....if.(S_ISDIR(inode->i_mode)).
9ce0 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 09 6e 65 77 6d 6f 64 65 20 26 3d 20 73 65 {..................newmode.&=.se
9d00 72 76 65 72 2d 3e 6d 2e 64 69 72 5f 6d 6f 64 65 3b 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 23 69 66 rver->m.dir_mode;...}.else.{.#if
9d20 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 45 58 54 52 41 53 09 09 09 0a 09 09 09 69 66 def.CONFIG_NCPFS_EXTRAS.......if
9d40 20 28 73 65 72 76 65 72 2d 3e 6d 2e 66 6c 61 67 73 20 26 20 4e 43 50 5f 4d 4f 55 4e 54 5f 45 58 .(server->m.flags.&.NCP_MOUNT_EX
9d60 54 52 41 53 29 20 7b 0a 09 09 09 09 2f 2a 20 61 6e 79 20 6e 6f 6e 2d 64 65 66 61 75 6c 74 20 65 TRAS).{...../*.any.non-default.e
9d80 78 65 63 75 74 65 20 62 69 74 20 73 65 74 20 2a 2f 0a 09 09 09 09 69 66 20 28 6e 65 77 6d 6f 64 xecute.bit.set.*/.....if.(newmod
9da0 65 20 26 20 7e 73 65 72 76 65 72 2d 3e 6d 2e 66 69 6c 65 5f 6d 6f 64 65 20 26 20 53 5f 49 58 55 e.&.~server->m.file_mode.&.S_IXU
9dc0 47 4f 29 0a 09 09 09 09 09 69 6e 66 6f 2e 61 74 74 72 69 62 75 74 65 73 20 7c 3d 20 61 53 48 41 GO)......info.attributes.|=.aSHA
9de0 52 45 44 20 7c 20 61 53 59 53 54 45 4d 3b 0a 09 09 09 09 2f 2a 20 72 65 61 64 20 66 6f 72 20 67 RED.|.aSYSTEM;...../*.read.for.g
9e00 72 6f 75 70 2f 77 6f 72 6c 64 20 61 6e 64 20 6e 6f 74 20 69 6e 20 64 65 66 61 75 6c 74 20 66 69 roup/world.and.not.in.default.fi
9e20 6c 65 5f 6d 6f 64 65 20 2a 2f 0a 09 09 09 09 65 6c 73 65 20 69 66 20 28 6e 65 77 6d 6f 64 65 20 le_mode.*/.....else.if.(newmode.
9e40 26 20 7e 73 65 72 76 65 72 2d 3e 6d 2e 66 69 6c 65 5f 6d 6f 64 65 20 26 20 53 5f 49 52 55 47 4f &.~server->m.file_mode.&.S_IRUGO
9e60 29 0a 09 09 09 09 09 69 6e 66 6f 2e 61 74 74 72 69 62 75 74 65 73 20 7c 3d 20 61 53 48 41 52 45 )......info.attributes.|=.aSHARE
9e80 44 3b 0a 09 09 09 7d 20 65 6c 73 65 0a 23 65 6e 64 69 66 0a 09 09 09 09 6e 65 77 6d 6f 64 65 20 D;....}.else.#endif.....newmode.
9ea0 26 3d 20 73 65 72 76 65 72 2d 3e 6d 2e 66 69 6c 65 5f 6d 6f 64 65 3b 09 09 09 0a 20 20 20 20 20 &=.server->m.file_mode;.........
9ec0 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 ...........}.................if.
9ee0 28 6e 65 77 6d 6f 64 65 20 26 20 53 5f 49 57 55 47 4f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 (newmode.&.S_IWUGO).............
9f00 20 20 20 20 09 69 6e 66 6f 2e 61 74 74 72 69 62 75 74 65 73 20 26 3d 20 7e 28 61 52 4f 4e 4c 59 .....info.attributes.&=.~(aRONLY
9f20 7c 61 52 45 4e 41 4d 45 49 4e 48 49 42 49 54 7c 61 44 45 4c 45 54 45 49 4e 48 49 42 49 54 29 3b |aRENAMEINHIBIT|aDELETEINHIBIT);
9f40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0a 09 09 09 69 6e 66 6f 2e 61 74 .................else....info.at
9f60 74 72 69 62 75 74 65 73 20 7c 3d 20 20 28 61 52 4f 4e 4c 59 7c 61 52 45 4e 41 4d 45 49 4e 48 49 tributes.|=..(aRONLY|aRENAMEINHI
9f80 42 49 54 7c 61 44 45 4c 45 54 45 49 4e 48 49 42 49 54 29 3b 0a 0a 23 69 66 64 65 66 20 43 4f 4e BIT|aDELETEINHIBIT);..#ifdef.CON
9fa0 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 0a 09 09 69 66 20 28 6e 63 70 5f 69 73 5f 6e 66 FIG_NCPFS_NFS_NS...if.(ncp_is_nf
9fc0 73 5f 65 78 74 72 61 73 28 73 65 72 76 65 72 2c 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 s_extras(server,.NCP_FINFO(inode
9fe0 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 29 29 20 7b 0a 09 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 )->volNumber)).{....result.=.ncp
a000 5f 6d 6f 64 69 66 79 5f 6e 66 73 5f 69 6e 66 6f 28 73 65 72 76 65 72 2c 0a 09 09 09 09 09 09 20 _modify_nfs_info(server,........
a020 20 20 20 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 2c ....NCP_FINFO(inode)->volNumber,
a040 0a 09 09 09 09 09 09 20 20 20 20 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 64 69 ............NCP_FINFO(inode)->di
a060 72 45 6e 74 4e 75 6d 2c 0a 09 09 09 09 09 09 20 20 20 20 20 61 74 74 72 2d 3e 69 61 5f 6d 6f 64 rEntNum,............attr->ia_mod
a080 65 2c 20 30 29 3b 0a 09 09 09 69 66 20 28 72 65 73 75 6c 74 20 21 3d 20 30 29 0a 09 09 09 09 67 e,.0);....if.(result.!=.0).....g
a0a0 6f 74 6f 20 6f 75 74 3b 0a 09 09 09 69 6e 66 6f 2e 61 74 74 72 69 62 75 74 65 73 20 26 3d 20 7e oto.out;....info.attributes.&=.~
a0c0 28 61 53 48 41 52 45 44 20 7c 20 61 53 59 53 54 45 4d 29 3b 0a 09 09 09 7b 0a 09 09 09 09 2f 2a (aSHARED.|.aSYSTEM);....{...../*
a0e0 20 6d 61 72 6b 20 70 61 72 74 69 61 6c 20 73 75 63 63 65 73 73 20 2a 2f 0a 09 09 09 09 73 74 72 .mark.partial.success.*/.....str
a100 75 63 74 20 69 61 74 74 72 20 74 6d 70 61 74 74 72 3b 0a 09 09 09 09 0a 09 09 09 09 74 6d 70 61 uct.iattr.tmpattr;..........tmpa
a120 74 74 72 2e 69 61 5f 76 61 6c 69 64 20 3d 20 41 54 54 52 5f 4d 4f 44 45 3b 0a 09 09 09 09 74 6d ttr.ia_valid.=.ATTR_MODE;.....tm
a140 70 61 74 74 72 2e 69 61 5f 6d 6f 64 65 20 3d 20 61 74 74 72 2d 3e 69 61 5f 6d 6f 64 65 3b 0a 0a pattr.ia_mode.=.attr->ia_mode;..
a160 09 09 09 09 73 65 74 61 74 74 72 5f 63 6f 70 79 28 69 6e 6f 64 65 2c 20 26 74 6d 70 61 74 74 72 ....setattr_copy(inode,.&tmpattr
a180 29 3b 0a 09 09 09 09 6d 61 72 6b 5f 69 6e 6f 64 65 5f 64 69 72 74 79 28 69 6e 6f 64 65 29 3b 0a );.....mark_inode_dirty(inode);.
a1a0 09 09 09 7d 0a 09 09 7d 0a 23 65 6e 64 69 66 0a 20 20 20 20 20 20 20 20 7d 0a 23 65 6e 64 69 66 ...}...}.#endif.........}.#endif
a1c0 0a 0a 09 2f 2a 20 44 6f 20 53 49 5a 45 20 62 65 66 6f 72 65 20 61 74 74 72 69 62 75 74 65 73 2c .../*.Do.SIZE.before.attributes,
a1e0 20 6f 74 68 65 72 77 69 73 65 20 6d 74 69 6d 65 20 74 6f 67 65 74 68 65 72 20 77 69 74 68 20 73 .otherwise.mtime.together.with.s
a200 69 7a 65 20 64 6f 65 73 20 6e 6f 74 20 77 6f 72 6b 2e 2e 2e 0a 09 20 2a 2f 0a 09 69 66 20 28 28 ize.does.not.work......*/..if.((
a220 61 74 74 72 2d 3e 69 61 5f 76 61 6c 69 64 20 26 20 41 54 54 52 5f 53 49 5a 45 29 20 21 3d 20 30 attr->ia_valid.&.ATTR_SIZE).!=.0
a240 29 20 7b 0a 09 09 69 6e 74 20 77 72 69 74 74 65 6e 3b 0a 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c ).{...int.written;....ncp_dbg(1,
a260 20 22 74 72 79 69 6e 67 20 74 6f 20 63 68 61 6e 67 65 20 73 69 7a 65 20 74 6f 20 25 6c 6c 75 5c ."trying.to.change.size.to.%llu\
a280 6e 22 2c 20 61 74 74 72 2d 3e 69 61 5f 73 69 7a 65 29 3b 0a 0a 09 09 69 66 20 28 28 72 65 73 75 n",.attr->ia_size);....if.((resu
a2a0 6c 74 20 3d 20 6e 63 70 5f 6d 61 6b 65 5f 6f 70 65 6e 28 69 6e 6f 64 65 2c 20 4f 5f 57 52 4f 4e lt.=.ncp_make_open(inode,.O_WRON
a2c0 4c 59 29 29 20 3c 20 30 29 20 7b 0a 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 41 43 43 45 53 3b LY)).<.0).{....result.=.-EACCES;
a2e0 0a 09 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 09 7d 0a 09 09 6e 63 70 5f 77 72 69 74 65 5f 6b 65 ....goto.out;...}...ncp_write_ke
a300 72 6e 65 6c 28 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2c 20 4e 43 50 5f 46 49 4e 46 rnel(NCP_SERVER(inode),.NCP_FINF
a320 4f 28 69 6e 6f 64 65 29 2d 3e 66 69 6c 65 5f 68 61 6e 64 6c 65 2c 0a 09 09 09 20 20 61 74 74 72 O(inode)->file_handle,......attr
a340 2d 3e 69 61 5f 73 69 7a 65 2c 20 30 2c 20 22 22 2c 20 26 77 72 69 74 74 65 6e 29 3b 0a 0a 09 09 ->ia_size,.0,."",.&written);....
a360 2f 2a 20 41 63 63 6f 72 64 69 6e 67 20 74 6f 20 6e 64 69 72 2c 20 74 68 65 20 63 68 61 6e 67 65 /*.According.to.ndir,.the.change
a380 73 20 6f 6e 6c 79 20 74 61 6b 65 20 65 66 66 65 63 74 20 61 66 74 65 72 0a 09 09 20 20 20 63 6c s.only.take.effect.after......cl
a3a0 6f 73 69 6e 67 20 74 68 65 20 66 69 6c 65 20 2a 2f 0a 09 09 6e 63 70 5f 69 6e 6f 64 65 5f 63 6c osing.the.file.*/...ncp_inode_cl
a3c0 6f 73 65 28 69 6e 6f 64 65 29 3b 0a 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 6d 61 6b 65 5f ose(inode);...result.=.ncp_make_
a3e0 63 6c 6f 73 65 64 28 69 6e 6f 64 65 29 3b 0a 09 09 69 66 20 28 72 65 73 75 6c 74 29 0a 09 09 09 closed(inode);...if.(result)....
a400 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 09 69 66 20 28 61 74 74 72 2d 3e 69 61 5f 73 69 7a 65 20 21 goto.out;....if.(attr->ia_size.!
a420 3d 20 69 5f 73 69 7a 65 5f 72 65 61 64 28 69 6e 6f 64 65 29 29 20 7b 0a 09 09 09 74 72 75 6e 63 =.i_size_read(inode)).{....trunc
a440 61 74 65 5f 73 65 74 73 69 7a 65 28 69 6e 6f 64 65 2c 20 61 74 74 72 2d 3e 69 61 5f 73 69 7a 65 ate_setsize(inode,.attr->ia_size
a460 29 3b 0a 09 09 09 6d 61 72 6b 5f 69 6e 6f 64 65 5f 64 69 72 74 79 28 69 6e 6f 64 65 29 3b 0a 09 );....mark_inode_dirty(inode);..
a480 09 7d 0a 09 7d 0a 09 69 66 20 28 28 61 74 74 72 2d 3e 69 61 5f 76 61 6c 69 64 20 26 20 41 54 54 .}..}..if.((attr->ia_valid.&.ATT
a4a0 52 5f 43 54 49 4d 45 29 20 21 3d 20 30 29 20 7b 0a 09 09 69 6e 66 6f 5f 6d 61 73 6b 20 7c 3d 20 R_CTIME).!=.0).{...info_mask.|=.
a4c0 28 44 4d 5f 43 52 45 41 54 45 5f 54 49 4d 45 20 7c 20 44 4d 5f 43 52 45 41 54 45 5f 44 41 54 45 (DM_CREATE_TIME.|.DM_CREATE_DATE
a4e0 29 3b 0a 09 09 6e 63 70 5f 64 61 74 65 5f 75 6e 69 78 32 64 6f 73 28 61 74 74 72 2d 3e 69 61 5f );...ncp_date_unix2dos(attr->ia_
a500 63 74 69 6d 65 2e 74 76 5f 73 65 63 2c 0a 09 09 09 20 20 20 20 20 26 69 6e 66 6f 2e 63 72 65 61 ctime.tv_sec,.........&info.crea
a520 74 69 6f 6e 54 69 6d 65 2c 20 26 69 6e 66 6f 2e 63 72 65 61 74 69 6f 6e 44 61 74 65 29 3b 0a 09 tionTime,.&info.creationDate);..
a540 7d 0a 09 69 66 20 28 28 61 74 74 72 2d 3e 69 61 5f 76 61 6c 69 64 20 26 20 41 54 54 52 5f 4d 54 }..if.((attr->ia_valid.&.ATTR_MT
a560 49 4d 45 29 20 21 3d 20 30 29 20 7b 0a 09 09 69 6e 66 6f 5f 6d 61 73 6b 20 7c 3d 20 28 44 4d 5f IME).!=.0).{...info_mask.|=.(DM_
a580 4d 4f 44 49 46 59 5f 54 49 4d 45 20 7c 20 44 4d 5f 4d 4f 44 49 46 59 5f 44 41 54 45 29 3b 0a 09 MODIFY_TIME.|.DM_MODIFY_DATE);..
a5a0 09 6e 63 70 5f 64 61 74 65 5f 75 6e 69 78 32 64 6f 73 28 61 74 74 72 2d 3e 69 61 5f 6d 74 69 6d .ncp_date_unix2dos(attr->ia_mtim
a5c0 65 2e 74 76 5f 73 65 63 2c 0a 09 09 09 09 20 20 26 69 6e 66 6f 2e 6d 6f 64 69 66 79 54 69 6d 65 e.tv_sec,.......&info.modifyTime
a5e0 2c 20 26 69 6e 66 6f 2e 6d 6f 64 69 66 79 44 61 74 65 29 3b 0a 09 7d 0a 09 69 66 20 28 28 61 74 ,.&info.modifyDate);..}..if.((at
a600 74 72 2d 3e 69 61 5f 76 61 6c 69 64 20 26 20 41 54 54 52 5f 41 54 49 4d 45 29 20 21 3d 20 30 29 tr->ia_valid.&.ATTR_ATIME).!=.0)
a620 20 7b 0a 09 09 5f 5f 6c 65 31 36 20 64 75 6d 6d 79 3b 0a 09 09 69 6e 66 6f 5f 6d 61 73 6b 20 7c .{...__le16.dummy;...info_mask.|
a640 3d 20 28 44 4d 5f 4c 41 53 54 5f 41 43 43 45 53 53 5f 44 41 54 45 29 3b 0a 09 09 6e 63 70 5f 64 =.(DM_LAST_ACCESS_DATE);...ncp_d
a660 61 74 65 5f 75 6e 69 78 32 64 6f 73 28 61 74 74 72 2d 3e 69 61 5f 61 74 69 6d 65 2e 74 76 5f 73 ate_unix2dos(attr->ia_atime.tv_s
a680 65 63 2c 0a 09 09 09 09 20 20 26 64 75 6d 6d 79 2c 20 26 69 6e 66 6f 2e 6c 61 73 74 41 63 63 65 ec,.......&dummy,.&info.lastAcce
a6a0 73 73 44 61 74 65 29 3b 0a 09 7d 0a 09 69 66 20 28 69 6e 66 6f 5f 6d 61 73 6b 20 21 3d 20 30 29 ssDate);..}..if.(info_mask.!=.0)
a6c0 20 7b 0a 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 6d 6f 64 69 66 79 5f 66 69 6c 65 5f 6f 72 .{...result.=.ncp_modify_file_or
a6e0 5f 73 75 62 64 69 72 5f 64 6f 73 5f 69 6e 66 6f 28 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 _subdir_dos_info(NCP_SERVER(inod
a700 65 29 2c 0a 09 09 09 09 20 20 20 20 20 20 69 6e 6f 64 65 2c 20 69 6e 66 6f 5f 6d 61 73 6b 2c 20 e),...........inode,.info_mask,.
a720 26 69 6e 66 6f 29 3b 0a 09 09 69 66 20 28 72 65 73 75 6c 74 20 21 3d 20 30 29 20 7b 0a 09 09 09 &info);...if.(result.!=.0).{....
a740 69 66 20 28 69 6e 66 6f 5f 6d 61 73 6b 20 3d 3d 20 28 44 4d 5f 43 52 45 41 54 45 5f 54 49 4d 45 if.(info_mask.==.(DM_CREATE_TIME
a760 20 7c 20 44 4d 5f 43 52 45 41 54 45 5f 44 41 54 45 29 29 20 7b 0a 09 09 09 09 2f 2a 20 4e 65 74 .|.DM_CREATE_DATE)).{...../*.Net
a780 57 61 72 65 20 73 65 65 6d 73 20 6e 6f 74 20 74 6f 20 61 6c 6c 6f 77 20 74 68 69 73 2e 20 49 0a Ware.seems.not.to.allow.this..I.
a7a0 09 09 09 09 20 20 20 64 6f 20 6e 6f 74 20 6b 6e 6f 77 20 77 68 79 2e 20 53 6f 2c 20 6a 75 73 74 .......do.not.know.why..So,.just
a7c0 20 74 65 6c 6c 20 74 68 65 0a 09 09 09 09 20 20 20 75 73 65 72 20 65 76 65 72 79 74 68 69 6e 67 .tell.the........user.everything
a7e0 20 77 65 6e 74 20 66 69 6e 65 2e 20 54 68 69 73 20 69 73 0a 09 09 09 09 20 20 20 61 20 74 65 72 .went.fine..This.is........a.ter
a800 72 69 62 6c 65 20 68 61 63 6b 2c 20 62 75 74 20 49 20 64 6f 20 6e 6f 74 20 6b 6e 6f 77 0a 09 09 rible.hack,.but.I.do.not.know...
a820 09 09 20 20 20 68 6f 77 20 74 6f 20 64 6f 20 74 68 69 73 20 63 6f 72 72 65 63 74 6c 79 2e 20 2a .....how.to.do.this.correctly..*
a840 2f 0a 09 09 09 09 72 65 73 75 6c 74 20 3d 20 30 3b 0a 09 09 09 7d 20 65 6c 73 65 0a 09 09 09 09 /.....result.=.0;....}.else.....
a860 67 6f 74 6f 20 6f 75 74 3b 0a 09 09 7d 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 goto.out;...}.#ifdef.CONFIG_NCPF
a880 53 5f 53 54 52 4f 4e 47 09 09 0a 09 09 69 66 20 28 28 21 72 65 73 75 6c 74 29 20 26 26 20 28 69 S_STRONG.....if.((!result).&&.(i
a8a0 6e 66 6f 5f 6d 61 73 6b 20 26 20 44 4d 5f 41 54 54 52 49 42 55 54 45 53 29 29 0a 09 09 09 4e 43 nfo_mask.&.DM_ATTRIBUTES))....NC
a8c0 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6e 77 61 74 74 72 20 3d 20 69 6e 66 6f 2e 61 74 P_FINFO(inode)->nwattr.=.info.at
a8e0 74 72 69 62 75 74 65 73 3b 0a 23 65 6e 64 69 66 0a 09 7d 0a 09 69 66 20 28 72 65 73 75 6c 74 29 tributes;.#endif..}..if.(result)
a900 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 73 65 74 61 74 74 72 5f 63 6f 70 79 28 69 6e 6f 64 ...goto.out;...setattr_copy(inod
a920 65 2c 20 61 74 74 72 29 3b 0a 09 6d 61 72 6b 5f 69 6e 6f 64 65 5f 64 69 72 74 79 28 69 6e 6f 64 e,.attr);..mark_inode_dirty(inod
a940 65 29 3b 0a 0a 6f 75 74 3a 0a 09 69 66 20 28 72 65 73 75 6c 74 20 3e 20 30 29 0a 09 09 72 65 73 e);..out:..if.(result.>.0)...res
a960 75 6c 74 20 3d 20 2d 45 41 43 43 45 53 3b 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d ult.=.-EACCES;..return.result;.}
a980 0a 0a 73 74 61 74 69 63 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 6e 63 70 5f 6d 6f 75 6e ..static.struct.dentry.*ncp_moun
a9a0 74 28 73 74 72 75 63 74 20 66 69 6c 65 5f 73 79 73 74 65 6d 5f 74 79 70 65 20 2a 66 73 5f 74 79 t(struct.file_system_type.*fs_ty
a9c0 70 65 2c 0a 09 69 6e 74 20 66 6c 61 67 73 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 64 65 76 5f pe,..int.flags,.const.char.*dev_
a9e0 6e 61 6d 65 2c 20 76 6f 69 64 20 2a 64 61 74 61 29 0a 7b 0a 09 72 65 74 75 72 6e 20 6d 6f 75 6e name,.void.*data).{..return.moun
aa00 74 5f 6e 6f 64 65 76 28 66 73 5f 74 79 70 65 2c 20 66 6c 61 67 73 2c 20 64 61 74 61 2c 20 6e 63 t_nodev(fs_type,.flags,.data,.nc
aa20 70 5f 66 69 6c 6c 5f 73 75 70 65 72 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 73 74 72 75 63 74 20 p_fill_super);.}..static.struct.
aa40 66 69 6c 65 5f 73 79 73 74 65 6d 5f 74 79 70 65 20 6e 63 70 5f 66 73 5f 74 79 70 65 20 3d 20 7b file_system_type.ncp_fs_type.=.{
aa60 0a 09 2e 6f 77 6e 65 72 09 09 3d 20 54 48 49 53 5f 4d 4f 44 55 4c 45 2c 0a 09 2e 6e 61 6d 65 09 ...owner..=.THIS_MODULE,...name.
aa80 09 3d 20 22 6e 63 70 66 73 22 2c 0a 09 2e 6d 6f 75 6e 74 09 09 3d 20 6e 63 70 5f 6d 6f 75 6e 74 .=."ncpfs",...mount..=.ncp_mount
aaa0 2c 0a 09 2e 6b 69 6c 6c 5f 73 62 09 3d 20 6b 69 6c 6c 5f 61 6e 6f 6e 5f 73 75 70 65 72 2c 0a 09 ,...kill_sb.=.kill_anon_super,..
aac0 2e 66 73 5f 66 6c 61 67 73 09 3d 20 46 53 5f 42 49 4e 41 52 59 5f 4d 4f 55 4e 54 44 41 54 41 2c .fs_flags.=.FS_BINARY_MOUNTDATA,
aae0 0a 7d 3b 0a 4d 4f 44 55 4c 45 5f 41 4c 49 41 53 5f 46 53 28 22 6e 63 70 66 73 22 29 3b 0a 0a 73 .};.MODULE_ALIAS_FS("ncpfs");..s
ab00 74 61 74 69 63 20 69 6e 74 20 5f 5f 69 6e 69 74 20 69 6e 69 74 5f 6e 63 70 5f 66 73 28 76 6f 69 tatic.int.__init.init_ncp_fs(voi
ab20 64 29 0a 7b 0a 09 69 6e 74 20 65 72 72 3b 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 63 61 6c 6c d).{..int.err;..ncp_dbg(1,."call
ab40 65 64 5c 6e 22 29 3b 0a 0a 09 65 72 72 20 3d 20 69 6e 69 74 5f 69 6e 6f 64 65 63 61 63 68 65 28 ed\n");...err.=.init_inodecache(
ab60 29 3b 0a 09 69 66 20 28 65 72 72 29 0a 09 09 67 6f 74 6f 20 6f 75 74 31 3b 0a 09 65 72 72 20 3d );..if.(err)...goto.out1;..err.=
ab80 20 72 65 67 69 73 74 65 72 5f 66 69 6c 65 73 79 73 74 65 6d 28 26 6e 63 70 5f 66 73 5f 74 79 70 .register_filesystem(&ncp_fs_typ
aba0 65 29 3b 0a 09 69 66 20 28 65 72 72 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 72 65 74 75 72 e);..if.(err)...goto.out;..retur
abc0 6e 20 30 3b 0a 6f 75 74 3a 0a 09 64 65 73 74 72 6f 79 5f 69 6e 6f 64 65 63 61 63 68 65 28 29 3b n.0;.out:..destroy_inodecache();
abe0 0a 6f 75 74 31 3a 0a 09 72 65 74 75 72 6e 20 65 72 72 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f .out1:..return.err;.}..static.vo
ac00 69 64 20 5f 5f 65 78 69 74 20 65 78 69 74 5f 6e 63 70 5f 66 73 28 76 6f 69 64 29 0a 7b 0a 09 6e id.__exit.exit_ncp_fs(void).{..n
ac20 63 70 5f 64 62 67 28 31 2c 20 22 63 61 6c 6c 65 64 5c 6e 22 29 3b 0a 09 75 6e 72 65 67 69 73 74 cp_dbg(1,."called\n");..unregist
ac40 65 72 5f 66 69 6c 65 73 79 73 74 65 6d 28 26 6e 63 70 5f 66 73 5f 74 79 70 65 29 3b 0a 09 64 65 er_filesystem(&ncp_fs_type);..de
ac60 73 74 72 6f 79 5f 69 6e 6f 64 65 63 61 63 68 65 28 29 3b 0a 7d 0a 0a 6d 6f 64 75 6c 65 5f 69 6e stroy_inodecache();.}..module_in
ac80 69 74 28 69 6e 69 74 5f 6e 63 70 5f 66 73 29 0a 6d 6f 64 75 6c 65 5f 65 78 69 74 28 65 78 69 74 it(init_ncp_fs).module_exit(exit
aca0 5f 6e 63 70 5f 66 73 29 0a 4d 4f 44 55 4c 45 5f 4c 49 43 45 4e 53 45 28 22 47 50 4c 22 29 3b 0a _ncp_fs).MODULE_LICENSE("GPL");.
acc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ace0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ad00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ad20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ad40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ad60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ad80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ada0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
adc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ade0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ae00 6e 63 70 66 73 2f 69 6f 63 74 6c 2e 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ncpfs/ioctl.c...................
ae20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ae40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ae60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 ....0000644.0001750.0001750.0000
ae80 30 30 35 35 33 30 30 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 32 34 34 37 00 20 30 00 00 00 0055300.13023323142.012447..0...
aea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
af00 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...kubax..................
af20 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........kubax..................
af40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
af60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
af80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
afa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
afc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
afe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b000 2f 2a 0a 20 2a 20 20 69 6f 63 74 6c 2e 63 0a 20 2a 0a 20 2a 20 20 43 6f 70 79 72 69 67 68 74 20 /*..*..ioctl.c..*..*..Copyright.
b020 28 43 29 20 31 39 39 35 2c 20 31 39 39 36 20 62 79 20 56 6f 6c 6b 65 72 20 4c 65 6e 64 65 63 6b (C).1995,.1996.by.Volker.Lendeck
b040 65 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 37 20 50 65 74 65 72 20 57 61 6c 74 65 6e e..*..Modified.1997.Peter.Walten
b060 62 65 72 67 2c 20 42 69 6c 6c 20 48 61 77 65 73 2c 20 44 61 76 69 64 20 57 6f 6f 64 68 6f 75 73 berg,.Bill.Hawes,.David.Woodhous
b080 65 20 66 6f 72 20 32 2e 31 20 64 63 61 63 68 65 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 e.for.2.1.dcache..*..Modified.19
b0a0 39 38 2c 20 31 39 39 39 20 57 6f 6c 66 72 61 6d 20 50 69 65 6e 6b 6f 73 73 20 66 6f 72 20 4e 4c 98,.1999.Wolfram.Pienkoss.for.NL
b0c0 53 0a 20 2a 0a 20 2a 2f 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 63 61 70 61 62 69 S..*..*/..#include.<linux/capabi
b0e0 6c 69 74 79 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 63 6f 6d 70 61 74 2e 68 lity.h>.#include.<linux/compat.h
b100 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 65 72 72 6e 6f 2e 68 3e 0a 23 69 6e 63 6c >.#include.<linux/errno.h>.#incl
b120 75 64 65 20 3c 6c 69 6e 75 78 2f 66 73 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 ude.<linux/fs.h>.#include.<linux
b140 2f 69 6f 63 74 6c 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 74 69 6d 65 2e 68 /ioctl.h>.#include.<linux/time.h
b160 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6d 6d 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 >.#include.<linux/mm.h>.#include
b180 20 3c 6c 69 6e 75 78 2f 6d 6f 75 6e 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 .<linux/mount.h>.#include.<linux
b1a0 2f 73 6c 61 62 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 68 69 67 68 75 69 64 /slab.h>.#include.<linux/highuid
b1c0 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 76 6d 61 6c 6c 6f 63 2e 68 3e 0a 23 .h>.#include.<linux/vmalloc.h>.#
b1e0 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 63 68 65 64 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 include.<linux/sched.h>..#includ
b200 65 20 3c 61 73 6d 2f 75 61 63 63 65 73 73 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 22 6e 63 70 e.<asm/uaccess.h>..#include."ncp
b220 5f 66 73 2e 68 22 0a 0a 2f 2a 20 6d 61 78 69 6d 75 6d 20 6c 69 6d 69 74 20 66 6f 72 20 6e 63 70 _fs.h"../*.maximum.limit.for.ncp
b240 5f 6f 62 6a 65 63 74 6e 61 6d 65 5f 69 6f 63 74 6c 20 2a 2f 0a 23 64 65 66 69 6e 65 20 4e 43 50 _objectname_ioctl.*/.#define.NCP
b260 5f 4f 42 4a 45 43 54 5f 4e 41 4d 45 5f 4d 41 58 5f 4c 45 4e 09 34 30 39 36 0a 2f 2a 20 6d 61 78 _OBJECT_NAME_MAX_LEN.4096./*.max
b280 69 6d 75 6d 20 6c 69 6d 69 74 20 66 6f 72 20 6e 63 70 5f 70 72 69 76 61 74 65 64 61 74 61 5f 69 imum.limit.for.ncp_privatedata_i
b2a0 6f 63 74 6c 20 2a 2f 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 50 52 49 56 41 54 45 5f 44 41 54 41 octl.*/.#define.NCP_PRIVATE_DATA
b2c0 5f 4d 41 58 5f 4c 45 4e 20 38 31 39 32 0a 2f 2a 20 6d 61 78 69 6d 75 6d 20 6e 65 67 6f 74 69 61 _MAX_LEN.8192./*.maximum.negotia
b2e0 62 6c 65 20 70 61 63 6b 65 74 20 73 69 7a 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 50 ble.packet.size.*/.#define.NCP_P
b300 41 43 4b 45 54 5f 53 49 5a 45 5f 49 4e 54 45 52 4e 41 4c 20 36 35 35 33 36 0a 0a 73 74 61 74 69 ACKET_SIZE_INTERNAL.65536..stati
b320 63 20 69 6e 74 0a 6e 63 70 5f 67 65 74 5f 66 73 5f 69 6e 66 6f 28 73 74 72 75 63 74 20 6e 63 70 c.int.ncp_get_fs_info(struct.ncp
b340 5f 73 65 72 76 65 72 20 2a 20 73 65 72 76 65 72 2c 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a _server.*.server,.struct.inode.*
b360 69 6e 6f 64 65 2c 0a 09 09 73 74 72 75 63 74 20 6e 63 70 5f 66 73 5f 69 6e 66 6f 20 5f 5f 75 73 inode,...struct.ncp_fs_info.__us
b380 65 72 20 2a 61 72 67 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 66 73 5f 69 6e 66 6f 20 69 er.*arg).{..struct.ncp_fs_info.i
b3a0 6e 66 6f 3b 0a 0a 09 69 66 20 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 69 6e 66 6f 2c nfo;...if.(copy_from_user(&info,
b3c0 20 61 72 67 2c 20 73 69 7a 65 6f 66 28 69 6e 66 6f 29 29 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 .arg,.sizeof(info)))...return.-E
b3e0 46 41 55 4c 54 3b 0a 0a 09 69 66 20 28 69 6e 66 6f 2e 76 65 72 73 69 6f 6e 20 21 3d 20 4e 43 50 FAULT;...if.(info.version.!=.NCP
b400 5f 47 45 54 5f 46 53 5f 49 4e 46 4f 5f 56 45 52 53 49 4f 4e 29 20 7b 0a 09 09 6e 63 70 5f 64 62 _GET_FS_INFO_VERSION).{...ncp_db
b420 67 28 31 2c 20 22 69 6e 66 6f 2e 76 65 72 73 69 6f 6e 20 69 6e 76 61 6c 69 64 3a 20 25 64 5c 6e g(1,."info.version.invalid:.%d\n
b440 22 2c 20 69 6e 66 6f 2e 76 65 72 73 69 6f 6e 29 3b 0a 09 09 72 65 74 75 72 6e 20 2d 45 49 4e 56 ",.info.version);...return.-EINV
b460 41 4c 3b 0a 09 7d 0a 09 2f 2a 20 54 4f 44 4f 3a 20 69 6e 66 6f 2e 61 64 64 72 20 3d 20 73 65 72 AL;..}../*.TODO:.info.addr.=.ser
b480 76 65 72 2d 3e 6d 2e 73 65 72 76 5f 61 64 64 72 3b 20 2a 2f 0a 09 53 45 54 5f 55 49 44 28 69 6e ver->m.serv_addr;.*/..SET_UID(in
b4a0 66 6f 2e 6d 6f 75 6e 74 65 64 5f 75 69 64 2c 20 66 72 6f 6d 5f 6b 75 69 64 5f 6d 75 6e 67 65 64 fo.mounted_uid,.from_kuid_munged
b4c0 28 63 75 72 72 65 6e 74 5f 75 73 65 72 5f 6e 73 28 29 2c 20 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f (current_user_ns(),.server->m.mo
b4e0 75 6e 74 65 64 5f 75 69 64 29 29 3b 0a 09 69 6e 66 6f 2e 63 6f 6e 6e 65 63 74 69 6f 6e 09 09 3d unted_uid));..info.connection..=
b500 20 73 65 72 76 65 72 2d 3e 63 6f 6e 6e 65 63 74 69 6f 6e 3b 0a 09 69 6e 66 6f 2e 62 75 66 66 65 .server->connection;..info.buffe
b520 72 5f 73 69 7a 65 09 3d 20 73 65 72 76 65 72 2d 3e 62 75 66 66 65 72 5f 73 69 7a 65 3b 0a 09 69 r_size.=.server->buffer_size;..i
b540 6e 66 6f 2e 76 6f 6c 75 6d 65 5f 6e 75 6d 62 65 72 09 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e nfo.volume_number.=.NCP_FINFO(in
b560 6f 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 69 6e 66 6f 2e 64 69 72 65 63 74 6f 72 79 ode)->volNumber;..info.directory
b580 5f 69 64 09 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 44 6f 73 44 69 72 4e 75 _id.=.NCP_FINFO(inode)->DosDirNu
b5a0 6d 3b 0a 0a 09 69 66 20 28 63 6f 70 79 5f 74 6f 5f 75 73 65 72 28 61 72 67 2c 20 26 69 6e 66 6f m;...if.(copy_to_user(arg,.&info
b5c0 2c 20 73 69 7a 65 6f 66 28 69 6e 66 6f 29 29 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c ,.sizeof(info)))...return.-EFAUL
b5e0 54 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f T;..return.0;.}..static.int.ncp_
b600 67 65 74 5f 66 73 5f 69 6e 66 6f 5f 76 32 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 get_fs_info_v2(struct.ncp_server
b620 20 2a 20 73 65 72 76 65 72 2c 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 2c 0a .*.server,.struct.inode.*inode,.
b640 09 09 20 20 20 73 74 72 75 63 74 20 6e 63 70 5f 66 73 5f 69 6e 66 6f 5f 76 32 20 5f 5f 75 73 65 .....struct.ncp_fs_info_v2.__use
b660 72 20 2a 20 61 72 67 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 66 73 5f 69 6e 66 6f 5f 76 r.*.arg).{..struct.ncp_fs_info_v
b680 32 20 69 6e 66 6f 32 3b 0a 0a 09 69 66 20 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 69 2.info2;...if.(copy_from_user(&i
b6a0 6e 66 6f 32 2c 20 61 72 67 2c 20 73 69 7a 65 6f 66 28 69 6e 66 6f 32 29 29 29 0a 09 09 72 65 74 nfo2,.arg,.sizeof(info2)))...ret
b6c0 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 0a 09 69 66 20 28 69 6e 66 6f 32 2e 76 65 72 73 69 6f 6e urn.-EFAULT;...if.(info2.version
b6e0 20 21 3d 20 4e 43 50 5f 47 45 54 5f 46 53 5f 49 4e 46 4f 5f 56 45 52 53 49 4f 4e 5f 56 32 29 20 .!=.NCP_GET_FS_INFO_VERSION_V2).
b700 7b 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 69 6e 66 6f 2e 76 65 72 73 69 6f 6e 20 69 6e 76 {...ncp_dbg(1,."info.version.inv
b720 61 6c 69 64 3a 20 25 64 5c 6e 22 2c 20 69 6e 66 6f 32 2e 76 65 72 73 69 6f 6e 29 3b 0a 09 09 72 alid:.%d\n",.info2.version);...r
b740 65 74 75 72 6e 20 2d 45 49 4e 56 41 4c 3b 0a 09 7d 0a 09 69 6e 66 6f 32 2e 6d 6f 75 6e 74 65 64 eturn.-EINVAL;..}..info2.mounted
b760 5f 75 69 64 20 20 20 3d 20 66 72 6f 6d 5f 6b 75 69 64 5f 6d 75 6e 67 65 64 28 63 75 72 72 65 6e _uid...=.from_kuid_munged(curren
b780 74 5f 75 73 65 72 5f 6e 73 28 29 2c 20 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 75 t_user_ns(),.server->m.mounted_u
b7a0 69 64 29 3b 0a 09 69 6e 66 6f 32 2e 63 6f 6e 6e 65 63 74 69 6f 6e 20 20 20 20 3d 20 73 65 72 76 id);..info2.connection....=.serv
b7c0 65 72 2d 3e 63 6f 6e 6e 65 63 74 69 6f 6e 3b 0a 09 69 6e 66 6f 32 2e 62 75 66 66 65 72 5f 73 69 er->connection;..info2.buffer_si
b7e0 7a 65 20 20 20 3d 20 73 65 72 76 65 72 2d 3e 62 75 66 66 65 72 5f 73 69 7a 65 3b 0a 09 69 6e 66 ze...=.server->buffer_size;..inf
b800 6f 32 2e 76 6f 6c 75 6d 65 5f 6e 75 6d 62 65 72 20 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f o2.volume_number.=.NCP_FINFO(ino
b820 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 69 6e 66 6f 32 2e 64 69 72 65 63 74 6f 72 79 de)->volNumber;..info2.directory
b840 5f 69 64 20 20 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 44 6f 73 44 69 72 4e _id..=.NCP_FINFO(inode)->DosDirN
b860 75 6d 3b 0a 09 69 6e 66 6f 32 2e 64 75 6d 6d 79 31 20 3d 20 69 6e 66 6f 32 2e 64 75 6d 6d 79 32 um;..info2.dummy1.=.info2.dummy2
b880 20 3d 20 69 6e 66 6f 32 2e 64 75 6d 6d 79 33 20 3d 20 30 3b 0a 0a 09 69 66 20 28 63 6f 70 79 5f .=.info2.dummy3.=.0;...if.(copy_
b8a0 74 6f 5f 75 73 65 72 28 61 72 67 2c 20 26 69 6e 66 6f 32 2c 20 73 69 7a 65 6f 66 28 69 6e 66 6f to_user(arg,.&info2,.sizeof(info
b8c0 32 29 29 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 09 72 65 74 75 72 6e 20 30 2)))...return.-EFAULT;..return.0
b8e0 3b 0a 7d 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 41 54 0a 73 74 72 75 63 74 ;.}..#ifdef.CONFIG_COMPAT.struct
b900 20 63 6f 6d 70 61 74 5f 6e 63 70 5f 6f 62 6a 65 63 74 6e 61 6d 65 5f 69 6f 63 74 6c 0a 7b 0a 09 .compat_ncp_objectname_ioctl.{..
b920 73 33 32 09 09 61 75 74 68 5f 74 79 70 65 3b 0a 09 75 33 32 09 09 6f 62 6a 65 63 74 5f 6e 61 6d s32..auth_type;..u32..object_nam
b940 65 5f 6c 65 6e 3b 0a 09 63 6f 6d 70 61 74 5f 63 61 64 64 72 5f 74 09 6f 62 6a 65 63 74 5f 6e 61 e_len;..compat_caddr_t.object_na
b960 6d 65 3b 09 2f 2a 20 61 20 75 73 65 72 73 70 61 63 65 20 64 61 74 61 2c 20 69 6e 20 6d 6f 73 74 me;./*.a.userspace.data,.in.most
b980 20 63 61 73 65 73 20 75 73 65 72 20 6e 61 6d 65 20 2a 2f 0a 7d 3b 0a 0a 73 74 72 75 63 74 20 63 .cases.user.name.*/.};..struct.c
b9a0 6f 6d 70 61 74 5f 6e 63 70 5f 66 73 5f 69 6e 66 6f 5f 76 32 20 7b 0a 09 73 33 32 20 76 65 72 73 ompat_ncp_fs_info_v2.{..s32.vers
b9c0 69 6f 6e 3b 0a 09 75 33 32 20 6d 6f 75 6e 74 65 64 5f 75 69 64 3b 0a 09 75 33 32 20 63 6f 6e 6e ion;..u32.mounted_uid;..u32.conn
b9e0 65 63 74 69 6f 6e 3b 0a 09 75 33 32 20 62 75 66 66 65 72 5f 73 69 7a 65 3b 0a 0a 09 75 33 32 20 ection;..u32.buffer_size;...u32.
ba00 76 6f 6c 75 6d 65 5f 6e 75 6d 62 65 72 3b 0a 09 75 33 32 20 64 69 72 65 63 74 6f 72 79 5f 69 64 volume_number;..u32.directory_id
ba20 3b 0a 0a 09 75 33 32 20 64 75 6d 6d 79 31 3b 0a 09 75 33 32 20 64 75 6d 6d 79 32 3b 0a 09 75 33 ;...u32.dummy1;..u32.dummy2;..u3
ba40 32 20 64 75 6d 6d 79 33 3b 0a 7d 3b 0a 0a 73 74 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f 2.dummy3;.};..struct.compat_ncp_
ba60 69 6f 63 74 6c 5f 72 65 71 75 65 73 74 20 7b 0a 09 75 33 32 20 66 75 6e 63 74 69 6f 6e 3b 0a 09 ioctl_request.{..u32.function;..
ba80 75 33 32 20 73 69 7a 65 3b 0a 09 63 6f 6d 70 61 74 5f 63 61 64 64 72 5f 74 20 64 61 74 61 3b 0a u32.size;..compat_caddr_t.data;.
baa0 7d 3b 0a 0a 73 74 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f 70 72 69 76 61 74 65 64 61 74 };..struct.compat_ncp_privatedat
bac0 61 5f 69 6f 63 74 6c 0a 7b 0a 09 75 33 32 09 09 6c 65 6e 3b 0a 09 63 6f 6d 70 61 74 5f 63 61 64 a_ioctl.{..u32..len;..compat_cad
bae0 64 72 5f 74 09 64 61 74 61 3b 09 09 2f 2a 20 7e 31 30 30 30 20 66 6f 72 20 4e 44 53 20 2a 2f 0a dr_t.data;../*.~1000.for.NDS.*/.
bb00 7d 3b 0a 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 5f 46 53 5f 49 4e 46 4f 5f };..#define.NCP_IOC_GET_FS_INFO_
bb20 56 32 5f 33 32 09 5f 49 4f 57 52 28 27 6e 27 2c 20 34 2c 20 73 74 72 75 63 74 20 63 6f 6d 70 61 V2_32._IOWR('n',.4,.struct.compa
bb40 74 5f 6e 63 70 5f 66 73 5f 69 6e 66 6f 5f 76 32 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 49 4f t_ncp_fs_info_v2).#define.NCP_IO
bb60 43 5f 4e 43 50 52 45 51 55 45 53 54 5f 33 32 09 09 5f 49 4f 52 28 27 6e 27 2c 20 31 2c 20 73 74 C_NCPREQUEST_32.._IOR('n',.1,.st
bb80 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f 69 6f 63 74 6c 5f 72 65 71 75 65 73 74 29 0a 23 ruct.compat_ncp_ioctl_request).#
bba0 64 65 66 69 6e 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 4f 42 4a 45 43 54 4e 41 4d 45 5f 33 32 09 define.NCP_IOC_GETOBJECTNAME_32.
bbc0 5f 49 4f 57 52 28 27 6e 27 2c 20 39 2c 20 73 74 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f _IOWR('n',.9,.struct.compat_ncp_
bbe0 6f 62 6a 65 63 74 6e 61 6d 65 5f 69 6f 63 74 6c 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 49 4f objectname_ioctl).#define.NCP_IO
bc00 43 5f 53 45 54 4f 42 4a 45 43 54 4e 41 4d 45 5f 33 32 09 5f 49 4f 52 28 27 6e 27 2c 20 39 2c 20 C_SETOBJECTNAME_32._IOR('n',.9,.
bc20 73 74 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f 6f 62 6a 65 63 74 6e 61 6d 65 5f 69 6f 63 struct.compat_ncp_objectname_ioc
bc40 74 6c 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 50 52 49 56 41 54 45 44 41 tl).#define.NCP_IOC_GETPRIVATEDA
bc60 54 41 5f 33 32 09 5f 49 4f 57 52 28 27 6e 27 2c 20 31 30 2c 20 73 74 72 75 63 74 20 63 6f 6d 70 TA_32._IOWR('n',.10,.struct.comp
bc80 61 74 5f 6e 63 70 5f 70 72 69 76 61 74 65 64 61 74 61 5f 69 6f 63 74 6c 29 0a 23 64 65 66 69 6e at_ncp_privatedata_ioctl).#defin
bca0 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 50 52 49 56 41 54 45 44 41 54 41 5f 33 32 09 5f 49 4f 52 e.NCP_IOC_SETPRIVATEDATA_32._IOR
bcc0 28 27 6e 27 2c 20 31 30 2c 20 73 74 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f 70 72 69 76 ('n',.10,.struct.compat_ncp_priv
bce0 61 74 65 64 61 74 61 5f 69 6f 63 74 6c 29 0a 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 67 atedata_ioctl)..static.int.ncp_g
bd00 65 74 5f 63 6f 6d 70 61 74 5f 66 73 5f 69 6e 66 6f 5f 76 32 28 73 74 72 75 63 74 20 6e 63 70 5f et_compat_fs_info_v2(struct.ncp_
bd20 73 65 72 76 65 72 20 2a 20 73 65 72 76 65 72 2c 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 server.*.server,.struct.inode.*i
bd40 6e 6f 64 65 2c 0a 09 09 20 20 20 73 74 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f 66 73 5f node,......struct.compat_ncp_fs_
bd60 69 6e 66 6f 5f 76 32 20 5f 5f 75 73 65 72 20 2a 20 61 72 67 29 0a 7b 0a 09 73 74 72 75 63 74 20 info_v2.__user.*.arg).{..struct.
bd80 63 6f 6d 70 61 74 5f 6e 63 70 5f 66 73 5f 69 6e 66 6f 5f 76 32 20 69 6e 66 6f 32 3b 0a 0a 09 69 compat_ncp_fs_info_v2.info2;...i
bda0 66 20 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 69 6e 66 6f 32 2c 20 61 72 67 2c 20 73 f.(copy_from_user(&info2,.arg,.s
bdc0 69 7a 65 6f 66 28 69 6e 66 6f 32 29 29 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b izeof(info2)))...return.-EFAULT;
bde0 0a 0a 09 69 66 20 28 69 6e 66 6f 32 2e 76 65 72 73 69 6f 6e 20 21 3d 20 4e 43 50 5f 47 45 54 5f ...if.(info2.version.!=.NCP_GET_
be00 46 53 5f 49 4e 46 4f 5f 56 45 52 53 49 4f 4e 5f 56 32 29 20 7b 0a 09 09 6e 63 70 5f 64 62 67 28 FS_INFO_VERSION_V2).{...ncp_dbg(
be20 31 2c 20 22 69 6e 66 6f 2e 76 65 72 73 69 6f 6e 20 69 6e 76 61 6c 69 64 3a 20 25 64 5c 6e 22 2c 1,."info.version.invalid:.%d\n",
be40 20 69 6e 66 6f 32 2e 76 65 72 73 69 6f 6e 29 3b 0a 09 09 72 65 74 75 72 6e 20 2d 45 49 4e 56 41 .info2.version);...return.-EINVA
be60 4c 3b 0a 09 7d 0a 09 69 6e 66 6f 32 2e 6d 6f 75 6e 74 65 64 5f 75 69 64 20 20 20 3d 20 66 72 6f L;..}..info2.mounted_uid...=.fro
be80 6d 5f 6b 75 69 64 5f 6d 75 6e 67 65 64 28 63 75 72 72 65 6e 74 5f 75 73 65 72 5f 6e 73 28 29 2c m_kuid_munged(current_user_ns(),
bea0 20 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 75 69 64 29 3b 0a 09 69 6e 66 6f 32 2e .server->m.mounted_uid);..info2.
bec0 63 6f 6e 6e 65 63 74 69 6f 6e 20 20 20 20 3d 20 73 65 72 76 65 72 2d 3e 63 6f 6e 6e 65 63 74 69 connection....=.server->connecti
bee0 6f 6e 3b 0a 09 69 6e 66 6f 32 2e 62 75 66 66 65 72 5f 73 69 7a 65 20 20 20 3d 20 73 65 72 76 65 on;..info2.buffer_size...=.serve
bf00 72 2d 3e 62 75 66 66 65 72 5f 73 69 7a 65 3b 0a 09 69 6e 66 6f 32 2e 76 6f 6c 75 6d 65 5f 6e 75 r->buffer_size;..info2.volume_nu
bf20 6d 62 65 72 20 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 mber.=.NCP_FINFO(inode)->volNumb
bf40 65 72 3b 0a 09 69 6e 66 6f 32 2e 64 69 72 65 63 74 6f 72 79 5f 69 64 20 20 3d 20 4e 43 50 5f 46 er;..info2.directory_id..=.NCP_F
bf60 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 44 6f 73 44 69 72 4e 75 6d 3b 0a 09 69 6e 66 6f 32 2e 64 INFO(inode)->DosDirNum;..info2.d
bf80 75 6d 6d 79 31 20 3d 20 69 6e 66 6f 32 2e 64 75 6d 6d 79 32 20 3d 20 69 6e 66 6f 32 2e 64 75 6d ummy1.=.info2.dummy2.=.info2.dum
bfa0 6d 79 33 20 3d 20 30 3b 0a 0a 09 69 66 20 28 63 6f 70 79 5f 74 6f 5f 75 73 65 72 28 61 72 67 2c my3.=.0;...if.(copy_to_user(arg,
bfc0 20 26 69 6e 66 6f 32 2c 20 73 69 7a 65 6f 66 28 69 6e 66 6f 32 29 29 29 0a 09 09 72 65 74 75 72 .&info2,.sizeof(info2)))...retur
bfe0 6e 20 2d 45 46 41 55 4c 54 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 23 65 6e 64 69 66 0a 0a n.-EFAULT;..return.0;.}.#endif..
c000 23 64 65 66 69 6e 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 4d 4f 55 4e 54 55 49 44 31 36 09 09 5f #define.NCP_IOC_GETMOUNTUID16.._
c020 49 4f 57 28 27 6e 27 2c 20 32 2c 20 75 31 36 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 49 4f 43 IOW('n',.2,.u16).#define.NCP_IOC
c040 5f 47 45 54 4d 4f 55 4e 54 55 49 44 33 32 09 09 5f 49 4f 57 28 27 6e 27 2c 20 32 2c 20 75 33 32 _GETMOUNTUID32.._IOW('n',.2,.u32
c060 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 4d 4f 55 4e 54 55 49 44 36 34 09 ).#define.NCP_IOC_GETMOUNTUID64.
c080 09 5f 49 4f 57 28 27 6e 27 2c 20 32 2c 20 75 36 34 29 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 ._IOW('n',.2,.u64)..#ifdef.CONFI
c0a0 47 5f 4e 43 50 46 53 5f 4e 4c 53 0a 2f 2a 20 48 65 72 65 20 77 65 20 61 72 65 20 73 65 6c 65 63 G_NCPFS_NLS./*.Here.we.are.selec
c0c0 74 20 74 68 65 20 69 6f 63 68 61 72 73 65 74 20 61 6e 64 20 74 68 65 20 63 6f 64 65 70 61 67 65 t.the.iocharset.and.the.codepage
c0e0 20 66 6f 72 20 4e 4c 53 2e 0a 20 2a 20 54 68 61 6e 6b 73 20 50 65 74 72 20 56 61 6e 64 72 6f 76 .for.NLS...*.Thanks.Petr.Vandrov
c100 65 63 20 66 6f 72 20 69 64 65 61 20 61 6e 64 20 6d 61 6e 79 20 68 69 6e 74 73 2e 0a 20 2a 2f 0a ec.for.idea.and.many.hints...*/.
c120 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 73 65 74 5f 63 68 61 72 73 65 74 73 28 73 74 72 75 static.int.ncp_set_charsets(stru
c140 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2a 20 73 65 72 76 65 72 2c 20 73 74 72 75 63 74 20 6e 63 ct.ncp_server*.server,.struct.nc
c160 70 5f 6e 6c 73 5f 69 6f 63 74 6c 20 5f 5f 75 73 65 72 20 2a 61 72 67 29 0a 7b 0a 09 73 74 72 75 p_nls_ioctl.__user.*arg).{..stru
c180 63 74 20 6e 63 70 5f 6e 6c 73 5f 69 6f 63 74 6c 20 75 73 65 72 3b 0a 09 73 74 72 75 63 74 20 6e ct.ncp_nls_ioctl.user;..struct.n
c1a0 6c 73 5f 74 61 62 6c 65 20 2a 63 6f 64 65 70 61 67 65 3b 0a 09 73 74 72 75 63 74 20 6e 6c 73 5f ls_table.*codepage;..struct.nls_
c1c0 74 61 62 6c 65 20 2a 69 6f 63 68 61 72 73 65 74 3b 0a 09 73 74 72 75 63 74 20 6e 6c 73 5f 74 61 table.*iocharset;..struct.nls_ta
c1e0 62 6c 65 20 2a 6f 6c 64 73 65 74 5f 69 6f 3b 0a 09 73 74 72 75 63 74 20 6e 6c 73 5f 74 61 62 6c ble.*oldset_io;..struct.nls_tabl
c200 65 20 2a 6f 6c 64 73 65 74 5f 63 70 3b 0a 09 69 6e 74 20 75 74 66 38 3b 0a 09 69 6e 74 20 65 72 e.*oldset_cp;..int.utf8;..int.er
c220 72 3b 0a 0a 09 69 66 20 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 75 73 65 72 2c 20 61 r;...if.(copy_from_user(&user,.a
c240 72 67 2c 20 73 69 7a 65 6f 66 28 75 73 65 72 29 29 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 46 41 rg,.sizeof(user)))...return.-EFA
c260 55 4c 54 3b 0a 0a 09 63 6f 64 65 70 61 67 65 20 3d 20 4e 55 4c 4c 3b 0a 09 75 73 65 72 2e 63 6f ULT;...codepage.=.NULL;..user.co
c280 64 65 70 61 67 65 5b 4e 43 50 5f 49 4f 43 53 4e 41 4d 45 5f 4c 45 4e 5d 20 3d 20 30 3b 0a 09 69 depage[NCP_IOCSNAME_LEN].=.0;..i
c2a0 66 20 28 21 75 73 65 72 2e 63 6f 64 65 70 61 67 65 5b 30 5d 20 7c 7c 20 21 73 74 72 63 6d 70 28 f.(!user.codepage[0].||.!strcmp(
c2c0 75 73 65 72 2e 63 6f 64 65 70 61 67 65 2c 20 22 64 65 66 61 75 6c 74 22 29 29 0a 09 09 63 6f 64 user.codepage,."default"))...cod
c2e0 65 70 61 67 65 20 3d 20 6c 6f 61 64 5f 6e 6c 73 5f 64 65 66 61 75 6c 74 28 29 3b 0a 09 65 6c 73 epage.=.load_nls_default();..els
c300 65 20 7b 0a 09 09 63 6f 64 65 70 61 67 65 20 3d 20 6c 6f 61 64 5f 6e 6c 73 28 75 73 65 72 2e 63 e.{...codepage.=.load_nls(user.c
c320 6f 64 65 70 61 67 65 29 3b 0a 09 09 69 66 20 28 21 63 6f 64 65 70 61 67 65 29 20 7b 0a 09 09 09 odepage);...if.(!codepage).{....
c340 72 65 74 75 72 6e 20 2d 45 42 41 44 52 51 43 3b 0a 09 09 7d 0a 09 7d 0a 0a 09 69 6f 63 68 61 72 return.-EBADRQC;...}..}...iochar
c360 73 65 74 20 3d 20 4e 55 4c 4c 3b 0a 09 75 73 65 72 2e 69 6f 63 68 61 72 73 65 74 5b 4e 43 50 5f set.=.NULL;..user.iocharset[NCP_
c380 49 4f 43 53 4e 41 4d 45 5f 4c 45 4e 5d 20 3d 20 30 3b 0a 09 69 66 20 28 21 75 73 65 72 2e 69 6f IOCSNAME_LEN].=.0;..if.(!user.io
c3a0 63 68 61 72 73 65 74 5b 30 5d 20 7c 7c 20 21 73 74 72 63 6d 70 28 75 73 65 72 2e 69 6f 63 68 61 charset[0].||.!strcmp(user.iocha
c3c0 72 73 65 74 2c 20 22 64 65 66 61 75 6c 74 22 29 29 20 7b 0a 09 09 69 6f 63 68 61 72 73 65 74 20 rset,."default")).{...iocharset.
c3e0 3d 20 6c 6f 61 64 5f 6e 6c 73 5f 64 65 66 61 75 6c 74 28 29 3b 0a 09 09 75 74 66 38 20 3d 20 30 =.load_nls_default();...utf8.=.0
c400 3b 0a 09 7d 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63 6d 70 28 75 73 65 72 2e 69 6f 63 68 61 ;..}.else.if.(!strcmp(user.iocha
c420 72 73 65 74 2c 20 22 75 74 66 38 22 29 29 20 7b 0a 09 09 69 6f 63 68 61 72 73 65 74 20 3d 20 6c rset,."utf8")).{...iocharset.=.l
c440 6f 61 64 5f 6e 6c 73 5f 64 65 66 61 75 6c 74 28 29 3b 0a 09 09 75 74 66 38 20 3d 20 31 3b 0a 09 oad_nls_default();...utf8.=.1;..
c460 7d 20 65 6c 73 65 20 7b 0a 09 09 69 6f 63 68 61 72 73 65 74 20 3d 20 6c 6f 61 64 5f 6e 6c 73 28 }.else.{...iocharset.=.load_nls(
c480 75 73 65 72 2e 69 6f 63 68 61 72 73 65 74 29 3b 0a 09 09 69 66 20 28 21 69 6f 63 68 61 72 73 65 user.iocharset);...if.(!iocharse
c4a0 74 29 20 7b 0a 09 09 09 75 6e 6c 6f 61 64 5f 6e 6c 73 28 63 6f 64 65 70 61 67 65 29 3b 0a 09 09 t).{....unload_nls(codepage);...
c4c0 09 72 65 74 75 72 6e 20 2d 45 42 41 44 52 51 43 3b 0a 09 09 7d 0a 09 09 75 74 66 38 20 3d 20 30 .return.-EBADRQC;...}...utf8.=.0
c4e0 3b 0a 09 7d 0a 0a 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f ;..}...mutex_lock(&server->root_
c500 73 65 74 75 70 5f 6c 6f 63 6b 29 3b 0a 09 69 66 20 28 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 setup_lock);..if.(server->root_s
c520 65 74 75 70 65 64 29 20 7b 0a 09 09 6f 6c 64 73 65 74 5f 63 70 20 3d 20 63 6f 64 65 70 61 67 65 etuped).{...oldset_cp.=.codepage
c540 3b 0a 09 09 6f 6c 64 73 65 74 5f 69 6f 20 3d 20 69 6f 63 68 61 72 73 65 74 3b 0a 09 09 65 72 72 ;...oldset_io.=.iocharset;...err
c560 20 3d 20 2d 45 42 55 53 59 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 69 66 20 28 75 74 66 38 29 .=.-EBUSY;..}.else.{...if.(utf8)
c580 0a 09 09 09 4e 43 50 5f 53 45 54 5f 46 4c 41 47 28 73 65 72 76 65 72 2c 20 4e 43 50 5f 46 4c 41 ....NCP_SET_FLAG(server,.NCP_FLA
c5a0 47 5f 55 54 46 38 29 3b 0a 09 09 65 6c 73 65 0a 09 09 09 4e 43 50 5f 43 4c 52 5f 46 4c 41 47 28 G_UTF8);...else....NCP_CLR_FLAG(
c5c0 73 65 72 76 65 72 2c 20 4e 43 50 5f 46 4c 41 47 5f 55 54 46 38 29 3b 0a 09 09 6f 6c 64 73 65 74 server,.NCP_FLAG_UTF8);...oldset
c5e0 5f 63 70 20 3d 20 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 76 6f 6c 3b 0a 09 09 73 65 72 76 65 72 2d _cp.=.server->nls_vol;...server-
c600 3e 6e 6c 73 5f 76 6f 6c 20 3d 20 63 6f 64 65 70 61 67 65 3b 0a 09 09 6f 6c 64 73 65 74 5f 69 6f >nls_vol.=.codepage;...oldset_io
c620 20 3d 20 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 69 6f 3b 0a 09 09 73 65 72 76 65 72 2d 3e 6e 6c 73 .=.server->nls_io;...server->nls
c640 5f 69 6f 20 3d 20 69 6f 63 68 61 72 73 65 74 3b 0a 09 09 65 72 72 20 3d 20 30 3b 0a 09 7d 0a 09 _io.=.iocharset;...err.=.0;..}..
c660 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 mutex_unlock(&server->root_setup
c680 5f 6c 6f 63 6b 29 3b 0a 09 75 6e 6c 6f 61 64 5f 6e 6c 73 28 6f 6c 64 73 65 74 5f 63 70 29 3b 0a _lock);..unload_nls(oldset_cp);.
c6a0 09 75 6e 6c 6f 61 64 5f 6e 6c 73 28 6f 6c 64 73 65 74 5f 69 6f 29 3b 0a 0a 09 72 65 74 75 72 6e .unload_nls(oldset_io);...return
c6c0 20 65 72 72 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 67 65 74 5f 63 68 61 72 .err;.}..static.int.ncp_get_char
c6e0 73 65 74 73 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2a 20 73 65 72 76 65 72 2c 20 sets(struct.ncp_server*.server,.
c700 73 74 72 75 63 74 20 6e 63 70 5f 6e 6c 73 5f 69 6f 63 74 6c 20 5f 5f 75 73 65 72 20 2a 61 72 67 struct.ncp_nls_ioctl.__user.*arg
c720 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 6e 6c 73 5f 69 6f 63 74 6c 20 75 73 65 72 3b 0a ).{..struct.ncp_nls_ioctl.user;.
c740 09 69 6e 74 20 6c 65 6e 3b 0a 0a 09 6d 65 6d 73 65 74 28 26 75 73 65 72 2c 20 30 2c 20 73 69 7a .int.len;...memset(&user,.0,.siz
c760 65 6f 66 28 75 73 65 72 29 29 3b 0a 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d eof(user));..mutex_lock(&server-
c780 3e 72 6f 6f 74 5f 73 65 74 75 70 5f 6c 6f 63 6b 29 3b 0a 09 69 66 20 28 73 65 72 76 65 72 2d 3e >root_setup_lock);..if.(server->
c7a0 6e 6c 73 5f 76 6f 6c 20 26 26 20 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 76 6f 6c 2d 3e 63 68 61 72 nls_vol.&&.server->nls_vol->char
c7c0 73 65 74 29 20 7b 0a 09 09 6c 65 6e 20 3d 20 73 74 72 6c 65 6e 28 73 65 72 76 65 72 2d 3e 6e 6c set).{...len.=.strlen(server->nl
c7e0 73 5f 76 6f 6c 2d 3e 63 68 61 72 73 65 74 29 3b 0a 09 09 69 66 20 28 6c 65 6e 20 3e 20 4e 43 50 s_vol->charset);...if.(len.>.NCP
c800 5f 49 4f 43 53 4e 41 4d 45 5f 4c 45 4e 29 0a 09 09 09 6c 65 6e 20 3d 20 4e 43 50 5f 49 4f 43 53 _IOCSNAME_LEN)....len.=.NCP_IOCS
c820 4e 41 4d 45 5f 4c 45 4e 3b 0a 09 09 73 74 72 6e 63 70 79 28 75 73 65 72 2e 63 6f 64 65 70 61 67 NAME_LEN;...strncpy(user.codepag
c840 65 2c 20 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 76 6f 6c 2d 3e 63 68 61 72 73 65 74 2c 20 6c 65 6e e,.server->nls_vol->charset,.len
c860 29 3b 0a 09 09 75 73 65 72 2e 63 6f 64 65 70 61 67 65 5b 6c 65 6e 5d 20 3d 20 30 3b 0a 09 7d 0a );...user.codepage[len].=.0;..}.
c880 0a 09 69 66 20 28 4e 43 50 5f 49 53 5f 46 4c 41 47 28 73 65 72 76 65 72 2c 20 4e 43 50 5f 46 4c ..if.(NCP_IS_FLAG(server,.NCP_FL
c8a0 41 47 5f 55 54 46 38 29 29 0a 09 09 73 74 72 63 70 79 28 75 73 65 72 2e 69 6f 63 68 61 72 73 65 AG_UTF8))...strcpy(user.iocharse
c8c0 74 2c 20 22 75 74 66 38 22 29 3b 0a 09 65 6c 73 65 20 69 66 20 28 73 65 72 76 65 72 2d 3e 6e 6c t,."utf8");..else.if.(server->nl
c8e0 73 5f 69 6f 20 26 26 20 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 69 6f 2d 3e 63 68 61 72 73 65 74 29 s_io.&&.server->nls_io->charset)
c900 20 7b 0a 09 09 6c 65 6e 20 3d 20 73 74 72 6c 65 6e 28 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 69 6f .{...len.=.strlen(server->nls_io
c920 2d 3e 63 68 61 72 73 65 74 29 3b 0a 09 09 69 66 20 28 6c 65 6e 20 3e 20 4e 43 50 5f 49 4f 43 53 ->charset);...if.(len.>.NCP_IOCS
c940 4e 41 4d 45 5f 4c 45 4e 29 0a 09 09 09 6c 65 6e 20 3d 20 4e 43 50 5f 49 4f 43 53 4e 41 4d 45 5f NAME_LEN)....len.=.NCP_IOCSNAME_
c960 4c 45 4e 3b 0a 09 09 73 74 72 6e 63 70 79 28 75 73 65 72 2e 69 6f 63 68 61 72 73 65 74 2c 09 73 LEN;...strncpy(user.iocharset,.s
c980 65 72 76 65 72 2d 3e 6e 6c 73 5f 69 6f 2d 3e 63 68 61 72 73 65 74 2c 20 6c 65 6e 29 3b 0a 09 09 erver->nls_io->charset,.len);...
c9a0 75 73 65 72 2e 69 6f 63 68 61 72 73 65 74 5b 6c 65 6e 5d 20 3d 20 30 3b 0a 09 7d 0a 09 6d 75 74 user.iocharset[len].=.0;..}..mut
c9c0 65 78 5f 75 6e 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 5f 6c 6f ex_unlock(&server->root_setup_lo
c9e0 63 6b 29 3b 0a 0a 09 69 66 20 28 63 6f 70 79 5f 74 6f 5f 75 73 65 72 28 61 72 67 2c 20 26 75 73 ck);...if.(copy_to_user(arg,.&us
ca00 65 72 2c 20 73 69 7a 65 6f 66 28 75 73 65 72 29 29 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 46 41 er,.sizeof(user)))...return.-EFA
ca20 55 4c 54 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 23 65 6e 64 69 66 20 2f 2a 20 43 4f 4e 46 ULT;..return.0;.}.#endif./*.CONF
ca40 49 47 5f 4e 43 50 46 53 5f 4e 4c 53 20 2a 2f 0a 0a 73 74 61 74 69 63 20 6c 6f 6e 67 20 5f 5f 6e IG_NCPFS_NLS.*/..static.long.__n
ca60 63 70 5f 69 6f 63 74 6c 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 2c 20 75 6e cp_ioctl(struct.inode.*inode,.un
ca80 73 69 67 6e 65 64 20 69 6e 74 20 63 6d 64 2c 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 61 72 signed.int.cmd,.unsigned.long.ar
caa0 67 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 g).{..struct.ncp_server.*server.
cac0 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 3b 0a 09 69 6e 74 20 72 65 73 75 6c 74 =.NCP_SERVER(inode);..int.result
cae0 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 69 6f 63 74 6c 5f 72 65 71 75 65 73 74 20 72 65 71 75 ;..struct.ncp_ioctl_request.requ
cb00 65 73 74 3b 0a 09 63 68 61 72 2a 20 62 6f 75 6e 63 65 62 75 66 66 65 72 3b 0a 09 76 6f 69 64 20 est;..char*.bouncebuffer;..void.
cb20 5f 5f 75 73 65 72 20 2a 61 72 67 70 20 3d 20 28 76 6f 69 64 20 5f 5f 75 73 65 72 20 2a 29 61 72 __user.*argp.=.(void.__user.*)ar
cb40 67 3b 0a 0a 09 73 77 69 74 63 68 20 28 63 6d 64 29 20 7b 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 g;...switch.(cmd).{.#ifdef.CONFI
cb60 47 5f 43 4f 4d 50 41 54 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 4e 43 50 52 45 51 55 45 53 G_COMPAT..case.NCP_IOC_NCPREQUES
cb80 54 5f 33 32 3a 0a 23 65 6e 64 69 66 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 4e 43 50 52 45 T_32:.#endif..case.NCP_IOC_NCPRE
cba0 51 55 45 53 54 3a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 41 54 0a 09 09 69 66 QUEST:.#ifdef.CONFIG_COMPAT...if
cbc0 20 28 63 6d 64 20 3d 3d 20 4e 43 50 5f 49 4f 43 5f 4e 43 50 52 45 51 55 45 53 54 5f 33 32 29 20 .(cmd.==.NCP_IOC_NCPREQUEST_32).
cbe0 7b 0a 09 09 09 73 74 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f 69 6f 63 74 6c 5f 72 65 71 {....struct.compat_ncp_ioctl_req
cc00 75 65 73 74 20 72 65 71 75 65 73 74 33 32 3b 0a 09 09 09 69 66 20 28 63 6f 70 79 5f 66 72 6f 6d uest.request32;....if.(copy_from
cc20 5f 75 73 65 72 28 26 72 65 71 75 65 73 74 33 32 2c 20 61 72 67 70 2c 20 73 69 7a 65 6f 66 28 72 _user(&request32,.argp,.sizeof(r
cc40 65 71 75 65 73 74 33 32 29 29 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a equest32))).....return.-EFAULT;.
cc60 09 09 09 72 65 71 75 65 73 74 2e 66 75 6e 63 74 69 6f 6e 20 3d 20 72 65 71 75 65 73 74 33 32 2e ...request.function.=.request32.
cc80 66 75 6e 63 74 69 6f 6e 3b 0a 09 09 09 72 65 71 75 65 73 74 2e 73 69 7a 65 20 3d 20 72 65 71 75 function;....request.size.=.requ
cca0 65 73 74 33 32 2e 73 69 7a 65 3b 0a 09 09 09 72 65 71 75 65 73 74 2e 64 61 74 61 20 3d 20 63 6f est32.size;....request.data.=.co
ccc0 6d 70 61 74 5f 70 74 72 28 72 65 71 75 65 73 74 33 32 2e 64 61 74 61 29 3b 0a 09 09 7d 20 65 6c mpat_ptr(request32.data);...}.el
cce0 73 65 0a 23 65 6e 64 69 66 0a 09 09 69 66 20 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 se.#endif...if.(copy_from_user(&
cd00 72 65 71 75 65 73 74 2c 20 61 72 67 70 2c 20 73 69 7a 65 6f 66 28 72 65 71 75 65 73 74 29 29 29 request,.argp,.sizeof(request)))
cd20 0a 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 0a 09 09 69 66 20 28 28 72 65 71 75 ....return.-EFAULT;....if.((requ
cd40 65 73 74 2e 66 75 6e 63 74 69 6f 6e 20 3e 20 32 35 35 29 0a 09 09 20 20 20 20 7c 7c 20 28 72 65 est.function.>.255).......||.(re
cd60 71 75 65 73 74 2e 73 69 7a 65 20 3e 0a 09 09 20 20 4e 43 50 5f 50 41 43 4b 45 54 5f 53 49 5a 45 quest.size.>.....NCP_PACKET_SIZE
cd80 20 2d 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 68 65 61 .-.sizeof(struct.ncp_request_hea
cda0 64 65 72 29 29 29 20 7b 0a 09 09 09 72 65 74 75 72 6e 20 2d 45 49 4e 56 41 4c 3b 0a 09 09 7d 0a der))).{....return.-EINVAL;...}.
cdc0 09 09 62 6f 75 6e 63 65 62 75 66 66 65 72 20 3d 20 76 6d 61 6c 6c 6f 63 28 4e 43 50 5f 50 41 43 ..bouncebuffer.=.vmalloc(NCP_PAC
cde0 4b 45 54 5f 53 49 5a 45 5f 49 4e 54 45 52 4e 41 4c 29 3b 0a 09 09 69 66 20 28 21 62 6f 75 6e 63 KET_SIZE_INTERNAL);...if.(!bounc
ce00 65 62 75 66 66 65 72 29 0a 09 09 09 72 65 74 75 72 6e 20 2d 45 4e 4f 4d 45 4d 3b 0a 09 09 69 66 ebuffer)....return.-ENOMEM;...if
ce20 20 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 62 6f 75 6e 63 65 62 75 66 66 65 72 2c 20 72 .(copy_from_user(bouncebuffer,.r
ce40 65 71 75 65 73 74 2e 64 61 74 61 2c 20 72 65 71 75 65 73 74 2e 73 69 7a 65 29 29 20 7b 0a 09 09 equest.data,.request.size)).{...
ce60 09 76 66 72 65 65 28 62 6f 75 6e 63 65 62 75 66 66 65 72 29 3b 0a 09 09 09 72 65 74 75 72 6e 20 .vfree(bouncebuffer);....return.
ce80 2d 45 46 41 55 4c 54 3b 0a 09 09 7d 0a 09 09 6e 63 70 5f 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 -EFAULT;...}...ncp_lock_server(s
cea0 65 72 76 65 72 29 3b 0a 0a 09 09 2f 2a 20 46 49 58 4d 45 3a 20 57 65 20 68 61 63 6b 20 61 72 6f erver);..../*.FIXME:.We.hack.aro
cec0 75 6e 64 20 69 6e 20 74 68 65 20 73 65 72 76 65 72 27 73 20 73 74 72 75 63 74 75 72 65 73 0a 09 und.in.the.server's.structures..
cee0 09 20 20 20 68 65 72 65 20 74 6f 20 62 65 20 61 62 6c 65 20 74 6f 20 75 73 65 20 6e 63 70 5f 72 ....here.to.be.able.to.use.ncp_r
cf00 65 71 75 65 73 74 20 2a 2f 0a 0a 09 09 73 65 72 76 65 72 2d 3e 68 61 73 5f 73 75 62 66 75 6e 63 equest.*/....server->has_subfunc
cf20 74 69 6f 6e 20 3d 20 30 3b 0a 09 09 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a 65 tion.=.0;...server->current_size
cf40 20 3d 20 72 65 71 75 65 73 74 2e 73 69 7a 65 3b 0a 09 09 6d 65 6d 63 70 79 28 73 65 72 76 65 72 .=.request.size;...memcpy(server
cf60 2d 3e 70 61 63 6b 65 74 2c 20 62 6f 75 6e 63 65 62 75 66 66 65 72 2c 20 72 65 71 75 65 73 74 2e ->packet,.bouncebuffer,.request.
cf80 73 69 7a 65 29 3b 0a 0a 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 32 28 size);....result.=.ncp_request2(
cfa0 73 65 72 76 65 72 2c 20 72 65 71 75 65 73 74 2e 66 75 6e 63 74 69 6f 6e 2c 0a 09 09 09 62 6f 75 server,.request.function,....bou
cfc0 6e 63 65 62 75 66 66 65 72 2c 20 4e 43 50 5f 50 41 43 4b 45 54 5f 53 49 5a 45 5f 49 4e 54 45 52 ncebuffer,.NCP_PACKET_SIZE_INTER
cfe0 4e 41 4c 29 3b 0a 09 09 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 0a 09 09 09 72 65 73 75 6c NAL);...if.(result.<.0)....resul
d000 74 20 3d 20 2d 45 49 4f 3b 0a 09 09 65 6c 73 65 0a 09 09 09 72 65 73 75 6c 74 20 3d 20 73 65 72 t.=.-EIO;...else....result.=.ser
d020 76 65 72 2d 3e 72 65 70 6c 79 5f 73 69 7a 65 3b 0a 09 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 ver->reply_size;...ncp_unlock_se
d040 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 63 6f 70 79 rver(server);...ncp_dbg(1,."copy
d060 20 25 64 20 62 79 74 65 73 5c 6e 22 2c 20 72 65 73 75 6c 74 29 3b 0a 09 09 69 66 20 28 72 65 73 .%d.bytes\n",.result);...if.(res
d080 75 6c 74 20 3e 3d 20 30 29 0a 09 09 09 69 66 20 28 63 6f 70 79 5f 74 6f 5f 75 73 65 72 28 72 65 ult.>=.0)....if.(copy_to_user(re
d0a0 71 75 65 73 74 2e 64 61 74 61 2c 20 62 6f 75 6e 63 65 62 75 66 66 65 72 2c 20 72 65 73 75 6c 74 quest.data,.bouncebuffer,.result
d0c0 29 29 0a 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 46 41 55 4c 54 3b 0a 09 09 76 66 72 65 65 )).....result.=.-EFAULT;...vfree
d0e0 28 62 6f 75 6e 63 65 62 75 66 66 65 72 29 3b 0a 09 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b (bouncebuffer);...return.result;
d100 0a 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 43 4f 4e 4e 5f 4c 4f 47 47 45 44 5f 49 4e 3a 0a ...case.NCP_IOC_CONN_LOGGED_IN:.
d120 0a 09 09 69 66 20 28 21 28 73 65 72 76 65 72 2d 3e 6d 2e 69 6e 74 5f 66 6c 61 67 73 20 26 20 4e ...if.(!(server->m.int_flags.&.N
d140 43 50 5f 49 4d 4f 55 4e 54 5f 4c 4f 47 47 45 44 49 4e 5f 50 4f 53 53 49 42 4c 45 29 29 0a 09 09 CP_IMOUNT_LOGGEDIN_POSSIBLE))...
d160 09 72 65 74 75 72 6e 20 2d 45 49 4e 56 41 4c 3b 0a 09 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 73 .return.-EINVAL;...mutex_lock(&s
d180 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 5f 6c 6f 63 6b 29 3b 0a 09 09 69 66 20 28 73 erver->root_setup_lock);...if.(s
d1a0 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 65 64 29 0a 09 09 09 72 65 73 75 6c 74 20 3d erver->root_setuped)....result.=
d1c0 20 2d 45 42 55 53 59 3b 0a 09 09 65 6c 73 65 20 7b 0a 09 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 .-EBUSY;...else.{....result.=.nc
d1e0 70 5f 63 6f 6e 6e 5f 6c 6f 67 67 65 64 5f 69 6e 28 69 6e 6f 64 65 2d 3e 69 5f 73 62 29 3b 0a 09 p_conn_logged_in(inode->i_sb);..
d200 09 09 69 66 20 28 72 65 73 75 6c 74 20 3d 3d 20 30 29 0a 09 09 09 09 73 65 72 76 65 72 2d 3e 72 ..if.(result.==.0).....server->r
d220 6f 6f 74 5f 73 65 74 75 70 65 64 20 3d 20 31 3b 0a 09 09 7d 0a 09 09 6d 75 74 65 78 5f 75 6e 6c oot_setuped.=.1;...}...mutex_unl
d240 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 5f 6c 6f 63 6b 29 3b 0a 09 ock(&server->root_setup_lock);..
d260 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 .return.result;...case.NCP_IOC_G
d280 45 54 5f 46 53 5f 49 4e 46 4f 3a 0a 09 09 72 65 74 75 72 6e 20 6e 63 70 5f 67 65 74 5f 66 73 5f ET_FS_INFO:...return.ncp_get_fs_
d2a0 69 6e 66 6f 28 73 65 72 76 65 72 2c 20 69 6e 6f 64 65 2c 20 61 72 67 70 29 3b 0a 0a 09 63 61 73 info(server,.inode,.argp);...cas
d2c0 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 5f 46 53 5f 49 4e 46 4f 5f 56 32 3a 0a 09 09 72 65 74 75 e.NCP_IOC_GET_FS_INFO_V2:...retu
d2e0 72 6e 20 6e 63 70 5f 67 65 74 5f 66 73 5f 69 6e 66 6f 5f 76 32 28 73 65 72 76 65 72 2c 20 69 6e rn.ncp_get_fs_info_v2(server,.in
d300 6f 64 65 2c 20 61 72 67 70 29 3b 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 41 ode,.argp);..#ifdef.CONFIG_COMPA
d320 54 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 5f 46 53 5f 49 4e 46 4f 5f 56 32 5f 33 T..case.NCP_IOC_GET_FS_INFO_V2_3
d340 32 3a 0a 09 09 72 65 74 75 72 6e 20 6e 63 70 5f 67 65 74 5f 63 6f 6d 70 61 74 5f 66 73 5f 69 6e 2:...return.ncp_get_compat_fs_in
d360 66 6f 5f 76 32 28 73 65 72 76 65 72 2c 20 69 6e 6f 64 65 2c 20 61 72 67 70 29 3b 0a 23 65 6e 64 fo_v2(server,.inode,.argp);.#end
d380 69 66 0a 09 2f 2a 20 77 65 20 68 61 76 65 20 74 6f 6f 20 6d 61 6e 79 20 63 6f 6d 62 69 6e 61 74 if../*.we.have.too.many.combinat
d3a0 69 6f 6e 73 20 6f 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 41 54 2c 0a 09 20 2a 20 43 4f 4e 46 49 ions.of.CONFIG_COMPAT,...*.CONFI
d3c0 47 5f 36 34 42 49 54 20 61 6e 64 20 43 4f 4e 46 49 47 5f 55 49 44 31 36 2c 20 73 6f 20 6a 75 73 G_64BIT.and.CONFIG_UID16,.so.jus
d3e0 74 20 68 61 6e 64 6c 65 0a 09 20 2a 20 61 6e 79 20 6f 66 20 74 68 65 20 70 6f 73 73 69 62 6c 65 t.handle...*.any.of.the.possible
d400 20 69 6f 63 74 6c 73 20 2a 2f 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 4d 4f 55 4e .ioctls.*/..case.NCP_IOC_GETMOUN
d420 54 55 49 44 31 36 3a 0a 09 09 7b 0a 09 09 09 75 31 36 20 75 69 64 3b 0a 0a 09 09 09 53 45 54 5f TUID16:...{....u16.uid;.....SET_
d440 55 49 44 28 75 69 64 2c 20 66 72 6f 6d 5f 6b 75 69 64 5f 6d 75 6e 67 65 64 28 63 75 72 72 65 6e UID(uid,.from_kuid_munged(curren
d460 74 5f 75 73 65 72 5f 6e 73 28 29 2c 20 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 75 t_user_ns(),.server->m.mounted_u
d480 69 64 29 29 3b 0a 09 09 09 69 66 20 28 70 75 74 5f 75 73 65 72 28 75 69 64 2c 20 28 75 31 36 20 id));....if.(put_user(uid,.(u16.
d4a0 5f 5f 75 73 65 72 20 2a 29 61 72 67 70 29 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 __user.*)argp)).....return.-EFAU
d4c0 4c 54 3b 0a 09 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 09 7d 0a 09 63 61 73 65 20 4e 43 50 5f 49 LT;....return.0;...}..case.NCP_I
d4e0 4f 43 5f 47 45 54 4d 4f 55 4e 54 55 49 44 33 32 3a 0a 09 7b 0a 09 09 75 69 64 5f 74 20 75 69 64 OC_GETMOUNTUID32:..{...uid_t.uid
d500 20 3d 20 66 72 6f 6d 5f 6b 75 69 64 5f 6d 75 6e 67 65 64 28 63 75 72 72 65 6e 74 5f 75 73 65 72 .=.from_kuid_munged(current_user
d520 5f 6e 73 28 29 2c 20 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 75 69 64 29 3b 0a 09 _ns(),.server->m.mounted_uid);..
d540 09 69 66 20 28 70 75 74 5f 75 73 65 72 28 75 69 64 2c 20 28 75 33 32 20 5f 5f 75 73 65 72 20 2a .if.(put_user(uid,.(u32.__user.*
d560 29 61 72 67 70 29 29 0a 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 09 09 72 65 74 )argp))....return.-EFAULT;...ret
d580 75 72 6e 20 30 3b 0a 09 7d 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 4d 4f 55 4e 54 urn.0;..}..case.NCP_IOC_GETMOUNT
d5a0 55 49 44 36 34 3a 0a 09 7b 0a 09 09 75 69 64 5f 74 20 75 69 64 20 3d 20 66 72 6f 6d 5f 6b 75 69 UID64:..{...uid_t.uid.=.from_kui
d5c0 64 5f 6d 75 6e 67 65 64 28 63 75 72 72 65 6e 74 5f 75 73 65 72 5f 6e 73 28 29 2c 20 73 65 72 76 d_munged(current_user_ns(),.serv
d5e0 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 75 69 64 29 3b 0a 09 09 69 66 20 28 70 75 74 5f 75 73 er->m.mounted_uid);...if.(put_us
d600 65 72 28 75 69 64 2c 20 28 75 36 34 20 5f 5f 75 73 65 72 20 2a 29 61 72 67 70 29 29 0a 09 09 09 er(uid,.(u64.__user.*)argp))....
d620 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 7d 0a 09 return.-EFAULT;...return.0;..}..
d640 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 52 4f 4f 54 3a 0a 09 09 7b 0a 09 09 09 73 74 72 case.NCP_IOC_GETROOT:...{....str
d660 75 63 74 20 6e 63 70 5f 73 65 74 72 6f 6f 74 5f 69 6f 63 74 6c 20 73 72 3b 0a 0a 09 09 09 72 65 uct.ncp_setroot_ioctl.sr;.....re
d680 73 75 6c 74 20 3d 20 2d 45 41 43 43 45 53 3b 0a 09 09 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 73 sult.=.-EACCES;....mutex_lock(&s
d6a0 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 5f 6c 6f 63 6b 29 3b 0a 09 09 09 69 66 20 28 erver->root_setup_lock);....if.(
d6c0 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 76 6f 6c 5b 30 5d 29 20 7b 0a 09 09 09 09 server->m.mounted_vol[0]).{.....
d6e0 73 74 72 75 63 74 20 64 65 6e 74 72 79 2a 20 64 65 6e 74 72 79 20 3d 20 69 6e 6f 64 65 2d 3e 69 struct.dentry*.dentry.=.inode->i
d700 5f 73 62 2d 3e 73 5f 72 6f 6f 74 3b 0a 0a 09 09 09 09 69 66 20 28 64 65 6e 74 72 79 29 20 7b 0a _sb->s_root;......if.(dentry).{.
d720 09 09 09 09 09 73 74 72 75 63 74 20 69 6e 6f 64 65 2a 20 73 5f 69 6e 6f 64 65 20 3d 20 64 5f 69 .....struct.inode*.s_inode.=.d_i
d740 6e 6f 64 65 28 64 65 6e 74 72 79 29 3b 0a 0a 09 09 09 09 09 69 66 20 28 73 5f 69 6e 6f 64 65 29 node(dentry);.......if.(s_inode)
d760 20 7b 0a 09 09 09 09 09 09 73 72 2e 76 6f 6c 4e 75 6d 62 65 72 20 3d 20 4e 43 50 5f 46 49 4e 46 .{.......sr.volNumber.=.NCP_FINF
d780 4f 28 73 5f 69 6e 6f 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 09 09 09 09 09 73 72 2e O(s_inode)->volNumber;.......sr.
d7a0 64 69 72 45 6e 74 4e 75 6d 20 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 73 5f 69 6e 6f 64 65 29 2d 3e dirEntNum.=.NCP_FINFO(s_inode)->
d7c0 64 69 72 45 6e 74 4e 75 6d 3b 0a 09 09 09 09 09 09 73 72 2e 6e 61 6d 65 73 70 61 63 65 20 3d 20 dirEntNum;.......sr.namespace.=.
d7e0 73 65 72 76 65 72 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 5b 73 72 2e 76 6f 6c 4e 75 6d 62 65 72 5d server->name_space[sr.volNumber]
d800 3b 0a 09 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 30 3b 0a 09 09 09 09 09 7d 20 65 6c 73 65 0a ;.......result.=.0;......}.else.
d820 09 09 09 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 64 5f 69 6e 6f 64 65 28 73 5f 72 6f 6f 74 ......ncp_dbg(1,."d_inode(s_root
d840 29 3d 3d 4e 55 4c 4c 5c 6e 22 29 3b 0a 09 09 09 09 7d 20 65 6c 73 65 0a 09 09 09 09 09 6e 63 70 )==NULL\n");.....}.else......ncp
d860 5f 64 62 67 28 31 2c 20 22 73 5f 72 6f 6f 74 3d 3d 4e 55 4c 4c 5c 6e 22 29 3b 0a 09 09 09 7d 20 _dbg(1,."s_root==NULL\n");....}.
d880 65 6c 73 65 20 7b 0a 09 09 09 09 73 72 2e 76 6f 6c 4e 75 6d 62 65 72 20 3d 20 2d 31 3b 0a 09 09 else.{.....sr.volNumber.=.-1;...
d8a0 09 09 73 72 2e 6e 61 6d 65 73 70 61 63 65 20 3d 20 30 3b 0a 09 09 09 09 73 72 2e 64 69 72 45 6e ..sr.namespace.=.0;.....sr.dirEn
d8c0 74 4e 75 6d 20 3d 20 30 3b 0a 09 09 09 09 72 65 73 75 6c 74 20 3d 20 30 3b 0a 09 09 09 7d 0a 09 tNum.=.0;.....result.=.0;....}..
d8e0 09 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 ..mutex_unlock(&server->root_set
d900 75 70 5f 6c 6f 63 6b 29 3b 0a 09 09 09 69 66 20 28 21 72 65 73 75 6c 74 20 26 26 20 63 6f 70 79 up_lock);....if.(!result.&&.copy
d920 5f 74 6f 5f 75 73 65 72 28 61 72 67 70 2c 20 26 73 72 2c 20 73 69 7a 65 6f 66 28 73 72 29 29 29 _to_user(argp,.&sr,.sizeof(sr)))
d940 0a 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 46 41 55 4c 54 3b 0a 09 09 09 72 65 74 75 72 6e .....result.=.-EFAULT;....return
d960 20 72 65 73 75 6c 74 3b 0a 09 09 7d 0a 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 52 .result;...}...case.NCP_IOC_SETR
d980 4f 4f 54 3a 0a 09 09 7b 0a 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 74 72 6f 6f 74 5f 69 OOT:...{....struct.ncp_setroot_i
d9a0 6f 63 74 6c 20 73 72 3b 0a 09 09 09 5f 5f 75 33 32 20 76 6e 75 6d 3b 0a 09 09 09 5f 5f 6c 65 33 octl.sr;....__u32.vnum;....__le3
d9c0 32 20 64 65 3b 0a 09 09 09 5f 5f 6c 65 33 32 20 64 6f 73 64 65 3b 0a 09 09 09 73 74 72 75 63 74 2.de;....__le32.dosde;....struct
d9e0 20 64 65 6e 74 72 79 2a 20 64 65 6e 74 72 79 3b 0a 0a 09 09 09 69 66 20 28 63 6f 70 79 5f 66 72 .dentry*.dentry;.....if.(copy_fr
da00 6f 6d 5f 75 73 65 72 28 26 73 72 2c 20 61 72 67 70 2c 20 73 69 7a 65 6f 66 28 73 72 29 29 29 0a om_user(&sr,.argp,.sizeof(sr))).
da20 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 09 09 09 6d 75 74 65 78 5f 6c 6f 63 ....return.-EFAULT;....mutex_loc
da40 6b 28 26 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 5f 6c 6f 63 6b 29 3b 0a 09 09 09 k(&server->root_setup_lock);....
da60 69 66 20 28 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 65 64 29 0a 09 09 09 09 72 65 if.(server->root_setuped).....re
da80 73 75 6c 74 20 3d 20 2d 45 42 55 53 59 3b 0a 09 09 09 65 6c 73 65 20 7b 0a 09 09 09 09 69 66 20 sult.=.-EBUSY;....else.{.....if.
daa0 28 73 72 2e 76 6f 6c 4e 75 6d 62 65 72 20 3c 20 30 29 20 7b 0a 09 09 09 09 09 73 65 72 76 65 72 (sr.volNumber.<.0).{......server
dac0 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 76 6f 6c 5b 30 5d 20 3d 20 30 3b 0a 09 09 09 09 09 76 6e 75 ->m.mounted_vol[0].=.0;......vnu
dae0 6d 20 3d 20 4e 43 50 5f 4e 55 4d 42 45 52 5f 4f 46 5f 56 4f 4c 55 4d 45 53 3b 0a 09 09 09 09 09 m.=.NCP_NUMBER_OF_VOLUMES;......
db00 64 65 20 3d 20 30 3b 0a 09 09 09 09 09 64 6f 73 64 65 20 3d 20 30 3b 0a 09 09 09 09 09 72 65 73 de.=.0;......dosde.=.0;......res
db20 75 6c 74 20 3d 20 30 3b 0a 09 09 09 09 7d 20 65 6c 73 65 20 69 66 20 28 73 72 2e 76 6f 6c 4e 75 ult.=.0;.....}.else.if.(sr.volNu
db40 6d 62 65 72 20 3e 3d 20 4e 43 50 5f 4e 55 4d 42 45 52 5f 4f 46 5f 56 4f 4c 55 4d 45 53 29 20 7b mber.>=.NCP_NUMBER_OF_VOLUMES).{
db60 0a 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 49 4e 56 41 4c 3b 0a 09 09 09 09 7d 20 65 6c ......result.=.-EINVAL;.....}.el
db80 73 65 20 69 66 20 28 6e 63 70 5f 6d 6f 75 6e 74 5f 73 75 62 64 69 72 28 73 65 72 76 65 72 2c 20 se.if.(ncp_mount_subdir(server,.
dba0 73 72 2e 76 6f 6c 4e 75 6d 62 65 72 2c 0a 09 09 09 09 09 09 09 73 72 2e 6e 61 6d 65 73 70 61 63 sr.volNumber,........sr.namespac
dbc0 65 2c 20 73 72 2e 64 69 72 45 6e 74 4e 75 6d 2c 0a 09 09 09 09 09 09 09 26 76 6e 75 6d 2c 20 26 e,.sr.dirEntNum,........&vnum,.&
dbe0 64 65 2c 20 26 64 6f 73 64 65 29 29 20 7b 0a 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 4e de,.&dosde)).{......result.=.-EN
dc00 4f 45 4e 54 3b 0a 09 09 09 09 7d 20 65 6c 73 65 0a 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 30 OENT;.....}.else......result.=.0
dc20 3b 0a 0a 09 09 09 09 69 66 20 28 72 65 73 75 6c 74 20 3d 3d 20 30 29 20 7b 0a 09 09 09 09 09 64 ;......if.(result.==.0).{......d
dc40 65 6e 74 72 79 20 3d 20 69 6e 6f 64 65 2d 3e 69 5f 73 62 2d 3e 73 5f 72 6f 6f 74 3b 0a 09 09 09 entry.=.inode->i_sb->s_root;....
dc60 09 09 69 66 20 28 64 65 6e 74 72 79 29 20 7b 0a 09 09 09 09 09 09 73 74 72 75 63 74 20 69 6e 6f ..if.(dentry).{.......struct.ino
dc80 64 65 2a 20 73 5f 69 6e 6f 64 65 20 3d 20 64 5f 69 6e 6f 64 65 28 64 65 6e 74 72 79 29 3b 0a 0a de*.s_inode.=.d_inode(dentry);..
dca0 09 09 09 09 09 09 69 66 20 28 73 5f 69 6e 6f 64 65 29 20 7b 0a 09 09 09 09 09 09 09 4e 43 50 5f ......if.(s_inode).{........NCP_
dcc0 46 49 4e 46 4f 28 73 5f 69 6e 6f 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 20 3d 20 76 6e 75 6d FINFO(s_inode)->volNumber.=.vnum
dce0 3b 0a 09 09 09 09 09 09 09 4e 43 50 5f 46 49 4e 46 4f 28 73 5f 69 6e 6f 64 65 29 2d 3e 64 69 72 ;........NCP_FINFO(s_inode)->dir
dd00 45 6e 74 4e 75 6d 20 3d 20 64 65 3b 0a 09 09 09 09 09 09 09 4e 43 50 5f 46 49 4e 46 4f 28 73 5f EntNum.=.de;........NCP_FINFO(s_
dd20 69 6e 6f 64 65 29 2d 3e 44 6f 73 44 69 72 4e 75 6d 20 3d 20 64 6f 73 64 65 3b 0a 09 09 09 09 09 inode)->DosDirNum.=.dosde;......
dd40 09 09 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 65 64 20 3d 20 31 3b 0a 09 09 09 09 ..server->root_setuped.=.1;.....
dd60 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 09 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 64 5f ..}.else.{........ncp_dbg(1,."d_
dd80 69 6e 6f 64 65 28 73 5f 72 6f 6f 74 29 3d 3d 4e 55 4c 4c 5c 6e 22 29 3b 0a 09 09 09 09 09 09 09 inode(s_root)==NULL\n");........
dda0 72 65 73 75 6c 74 20 3d 20 2d 45 49 4f 3b 0a 09 09 09 09 09 09 7d 0a 09 09 09 09 09 7d 20 65 6c result.=.-EIO;.......}......}.el
ddc0 73 65 20 7b 0a 09 09 09 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 73 5f 72 6f 6f 74 3d 3d 4e se.{.......ncp_dbg(1,."s_root==N
dde0 55 4c 4c 5c 6e 22 29 3b 0a 09 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 49 4f 3b 0a 09 09 ULL\n");.......result.=.-EIO;...
de00 09 09 09 7d 0a 09 09 09 09 7d 0a 09 09 09 7d 0a 09 09 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 ...}.....}....}....mutex_unlock(
de20 26 73 65 72 76 65 72 2d 3e 72 6f 6f 74 5f 73 65 74 75 70 5f 6c 6f 63 6b 29 3b 0a 0a 09 09 09 72 &server->root_setup_lock);.....r
de40 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 09 09 7d 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 eturn.result;...}..#ifdef.CONFIG
de60 5f 4e 43 50 46 53 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 0a 09 63 61 73 65 20 4e 43 50 5f _NCPFS_PACKET_SIGNING..case.NCP_
de80 49 4f 43 5f 53 49 47 4e 5f 49 4e 49 54 3a 0a 09 09 7b 0a 09 09 09 73 74 72 75 63 74 20 6e 63 70 IOC_SIGN_INIT:...{....struct.ncp
dea0 5f 73 69 67 6e 5f 69 6e 69 74 20 73 69 67 6e 3b 0a 0a 09 09 09 69 66 20 28 61 72 67 70 29 0a 09 _sign_init.sign;.....if.(argp)..
dec0 09 09 09 69 66 20 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 73 69 67 6e 2c 20 61 72 67 ...if.(copy_from_user(&sign,.arg
dee0 70 2c 20 73 69 7a 65 6f 66 28 73 69 67 6e 29 29 29 0a 09 09 09 09 09 72 65 74 75 72 6e 20 2d 45 p,.sizeof(sign)))......return.-E
df00 46 41 55 4c 54 3b 0a 09 09 09 6e 63 70 5f 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 FAULT;....ncp_lock_server(server
df20 29 3b 0a 09 09 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 );....mutex_lock(&server->rcv.cr
df40 65 71 5f 6d 75 74 65 78 29 3b 0a 09 09 09 69 66 20 28 61 72 67 70 29 20 7b 0a 09 09 09 09 69 66 eq_mutex);....if.(argp).{.....if
df60 20 28 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 77 61 6e 74 65 64 29 20 7b 0a 09 09 09 09 09 6d 65 .(server->sign_wanted).{......me
df80 6d 63 70 79 28 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 72 6f 6f 74 2c 73 69 67 6e 2e 73 69 67 6e mcpy(server->sign_root,sign.sign
dfa0 5f 72 6f 6f 74 2c 38 29 3b 0a 09 09 09 09 09 6d 65 6d 63 70 79 28 73 65 72 76 65 72 2d 3e 73 69 _root,8);......memcpy(server->si
dfc0 67 6e 5f 6c 61 73 74 2c 73 69 67 6e 2e 73 69 67 6e 5f 6c 61 73 74 2c 31 36 29 3b 0a 09 09 09 09 gn_last,sign.sign_last,16);.....
dfe0 09 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 61 63 74 69 76 65 20 3d 20 31 3b 0a 09 09 09 09 7d 0a .server->sign_active.=.1;.....}.
e000 09 09 09 09 2f 2a 20 69 67 6e 6f 72 65 20 77 68 65 6e 20 73 69 67 6e 61 74 75 72 65 73 20 6e 6f ..../*.ignore.when.signatures.no
e020 74 20 77 61 6e 74 65 64 20 2a 2f 0a 09 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 09 73 65 72 76 t.wanted.*/....}.else.{.....serv
e040 65 72 2d 3e 73 69 67 6e 5f 61 63 74 69 76 65 20 3d 20 30 3b 0a 09 09 09 7d 0a 09 09 09 6d 75 74 er->sign_active.=.0;....}....mut
e060 65 78 5f 75 6e 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 ex_unlock(&server->rcv.creq_mute
e080 78 29 3b 0a 09 09 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 x);....ncp_unlock_server(server)
e0a0 3b 0a 09 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 09 7d 0a 0a 20 20 20 20 20 20 20 20 63 61 73 65 ;....return.0;...}..........case
e0c0 20 4e 43 50 5f 49 4f 43 5f 53 49 47 4e 5f 57 41 4e 54 45 44 3a 0a 09 09 7b 0a 09 09 09 69 6e 74 .NCP_IOC_SIGN_WANTED:...{....int
e0e0 20 73 74 61 74 65 3b 0a 0a 09 09 09 6e 63 70 5f 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 .state;.....ncp_lock_server(serv
e100 65 72 29 3b 0a 09 09 09 73 74 61 74 65 20 3d 20 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 77 61 6e er);....state.=.server->sign_wan
e120 74 65 64 3b 0a 09 09 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 ted;....ncp_unlock_server(server
e140 29 3b 0a 09 09 09 69 66 20 28 70 75 74 5f 75 73 65 72 28 73 74 61 74 65 2c 20 28 69 6e 74 20 5f );....if.(put_user(state,.(int._
e160 5f 75 73 65 72 20 2a 29 61 72 67 70 29 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c _user.*)argp)).....return.-EFAUL
e180 54 3b 0a 09 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 09 7d 0a 0a 09 63 61 73 65 20 4e 43 50 5f 49 T;....return.0;...}...case.NCP_I
e1a0 4f 43 5f 53 45 54 5f 53 49 47 4e 5f 57 41 4e 54 45 44 3a 0a 09 09 7b 0a 09 09 09 69 6e 74 20 6e OC_SET_SIGN_WANTED:...{....int.n
e1c0 65 77 73 74 61 74 65 3b 0a 0a 09 09 09 2f 2a 20 67 65 74 20 6f 6e 6c 79 20 6c 6f 77 20 38 20 62 ewstate;...../*.get.only.low.8.b
e1e0 69 74 73 2e 2e 2e 20 2a 2f 0a 09 09 09 69 66 20 28 67 65 74 5f 75 73 65 72 28 6e 65 77 73 74 61 its....*/....if.(get_user(newsta
e200 74 65 2c 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 5f 5f 75 73 65 72 20 2a 29 61 72 67 70 te,.(unsigned.char.__user.*)argp
e220 29 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 09 09 09 72 65 73 75 6c 74 )).....return.-EFAULT;....result
e240 20 3d 20 30 3b 0a 09 09 09 6e 63 70 5f 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 .=.0;....ncp_lock_server(server)
e260 3b 0a 09 09 09 69 66 20 28 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 61 63 74 69 76 65 29 20 7b 0a ;....if.(server->sign_active).{.
e280 09 09 09 09 2f 2a 20 63 61 6e 6e 6f 74 20 74 75 72 6e 20 73 69 67 6e 61 74 75 72 65 73 20 4f 46 ..../*.cannot.turn.signatures.OF
e2a0 46 20 77 68 65 6e 20 61 63 74 69 76 65 20 2a 2f 0a 09 09 09 09 69 66 20 28 21 6e 65 77 73 74 61 F.when.active.*/.....if.(!newsta
e2c0 74 65 29 0a 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 49 4e 56 41 4c 3b 0a 09 09 09 7d 20 te)......result.=.-EINVAL;....}.
e2e0 65 6c 73 65 20 7b 0a 09 09 09 09 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 77 61 6e 74 65 64 20 3d else.{.....server->sign_wanted.=
e300 20 6e 65 77 73 74 61 74 65 20 21 3d 20 30 3b 0a 09 09 09 7d 0a 09 09 09 6e 63 70 5f 75 6e 6c 6f .newstate.!=.0;....}....ncp_unlo
e320 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 09 72 65 74 75 72 6e 20 72 65 73 ck_server(server);....return.res
e340 75 6c 74 3b 0a 09 09 7d 0a 0a 23 65 6e 64 69 66 20 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 ult;...}..#endif./*.CONFIG_NCPFS
e360 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 20 2a 2f 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 _PACKET_SIGNING.*/..#ifdef.CONFI
e380 47 5f 4e 43 50 46 53 5f 49 4f 43 54 4c 5f 4c 4f 43 4b 49 4e 47 0a 09 63 61 73 65 20 4e 43 50 5f G_NCPFS_IOCTL_LOCKING..case.NCP_
e3a0 49 4f 43 5f 4c 4f 43 4b 55 4e 4c 4f 43 4b 3a 0a 09 09 7b 0a 09 09 09 73 74 72 75 63 74 20 6e 63 IOC_LOCKUNLOCK:...{....struct.nc
e3c0 70 5f 6c 6f 63 6b 5f 69 6f 63 74 6c 09 20 72 71 64 61 74 61 3b 0a 0a 09 09 09 69 66 20 28 63 6f p_lock_ioctl..rqdata;.....if.(co
e3e0 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 72 71 64 61 74 61 2c 20 61 72 67 70 2c 20 73 69 7a 65 py_from_user(&rqdata,.argp,.size
e400 6f 66 28 72 71 64 61 74 61 29 29 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b of(rqdata))).....return.-EFAULT;
e420 0a 09 09 09 69 66 20 28 72 71 64 61 74 61 2e 6f 72 69 67 69 6e 20 21 3d 20 30 29 0a 09 09 09 09 ....if.(rqdata.origin.!=.0).....
e440 72 65 74 75 72 6e 20 2d 45 49 4e 56 41 4c 3b 0a 09 09 09 2f 2a 20 63 68 65 63 6b 20 66 6f 72 20 return.-EINVAL;..../*.check.for.
e460 63 6d 64 20 2a 2f 0a 09 09 09 73 77 69 74 63 68 20 28 72 71 64 61 74 61 2e 63 6d 64 29 20 7b 0a cmd.*/....switch.(rqdata.cmd).{.
e480 09 09 09 09 63 61 73 65 20 4e 43 50 5f 4c 4f 43 4b 5f 45 58 3a 0a 09 09 09 09 63 61 73 65 20 4e ....case.NCP_LOCK_EX:.....case.N
e4a0 43 50 5f 4c 4f 43 4b 5f 53 48 3a 0a 09 09 09 09 09 09 69 66 20 28 72 71 64 61 74 61 2e 74 69 6d CP_LOCK_SH:.......if.(rqdata.tim
e4c0 65 6f 75 74 20 3c 20 30 29 0a 09 09 09 09 09 09 09 72 65 74 75 72 6e 20 2d 45 49 4e 56 41 4c 3b eout.<.0)........return.-EINVAL;
e4e0 0a 09 09 09 09 09 09 69 66 20 28 72 71 64 61 74 61 2e 74 69 6d 65 6f 75 74 20 3d 3d 20 30 29 0a .......if.(rqdata.timeout.==.0).
e500 09 09 09 09 09 09 09 72 71 64 61 74 61 2e 74 69 6d 65 6f 75 74 20 3d 20 4e 43 50 5f 4c 4f 43 4b .......rqdata.timeout.=.NCP_LOCK
e520 5f 44 45 46 41 55 4c 54 5f 54 49 4d 45 4f 55 54 3b 0a 09 09 09 09 09 09 65 6c 73 65 20 69 66 20 _DEFAULT_TIMEOUT;.......else.if.
e540 28 72 71 64 61 74 61 2e 74 69 6d 65 6f 75 74 20 3e 20 4e 43 50 5f 4c 4f 43 4b 5f 4d 41 58 5f 54 (rqdata.timeout.>.NCP_LOCK_MAX_T
e560 49 4d 45 4f 55 54 29 0a 09 09 09 09 09 09 09 72 71 64 61 74 61 2e 74 69 6d 65 6f 75 74 20 3d 20 IMEOUT)........rqdata.timeout.=.
e580 4e 43 50 5f 4c 4f 43 4b 5f 4d 41 58 5f 54 49 4d 45 4f 55 54 3b 0a 09 09 09 09 09 09 62 72 65 61 NCP_LOCK_MAX_TIMEOUT;.......brea
e5a0 6b 3b 0a 09 09 09 09 63 61 73 65 20 4e 43 50 5f 4c 4f 43 4b 5f 4c 4f 47 3a 0a 09 09 09 09 09 09 k;.....case.NCP_LOCK_LOG:.......
e5c0 72 71 64 61 74 61 2e 74 69 6d 65 6f 75 74 20 3d 20 4e 43 50 5f 4c 4f 43 4b 5f 44 45 46 41 55 4c rqdata.timeout.=.NCP_LOCK_DEFAUL
e5e0 54 5f 54 49 4d 45 4f 55 54 3b 09 2f 2a 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 2a 2f 0a 09 T_TIMEOUT;./*.has.no.effect.*/..
e600 09 09 09 63 61 73 65 20 4e 43 50 5f 4c 4f 43 4b 5f 43 4c 45 41 52 3a 0a 09 09 09 09 09 09 62 72 ...case.NCP_LOCK_CLEAR:.......br
e620 65 61 6b 3b 0a 09 09 09 09 64 65 66 61 75 6c 74 3a 0a 09 09 09 09 09 09 72 65 74 75 72 6e 20 2d eak;.....default:.......return.-
e640 45 49 4e 56 41 4c 3b 0a 09 09 09 7d 0a 09 09 09 2f 2a 20 6c 6f 63 6b 69 6e 67 20 6e 65 65 64 73 EINVAL;....}..../*.locking.needs
e660 20 62 6f 74 68 20 72 65 61 64 20 61 6e 64 20 77 72 69 74 65 20 61 63 63 65 73 73 20 2a 2f 0a 09 .both.read.and.write.access.*/..
e680 09 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 6d 61 6b 65 5f 6f 70 65 6e 28 69 6e ..if.((result.=.ncp_make_open(in
e6a0 6f 64 65 2c 20 4f 5f 52 44 57 52 29 29 20 21 3d 20 30 29 0a 09 09 09 7b 0a 09 09 09 09 72 65 74 ode,.O_RDWR)).!=.0)....{.....ret
e6c0 75 72 6e 20 72 65 73 75 6c 74 3b 0a 09 09 09 7d 0a 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 49 urn.result;....}....result.=.-EI
e6e0 53 44 49 52 3b 0a 09 09 09 69 66 20 28 21 53 5f 49 53 52 45 47 28 69 6e 6f 64 65 2d 3e 69 5f 6d SDIR;....if.(!S_ISREG(inode->i_m
e700 6f 64 65 29 29 0a 09 09 09 09 67 6f 74 6f 20 6f 75 74 72 65 6c 3b 0a 09 09 09 69 66 20 28 72 71 ode)).....goto.outrel;....if.(rq
e720 64 61 74 61 2e 63 6d 64 20 3d 3d 20 4e 43 50 5f 4c 4f 43 4b 5f 43 4c 45 41 52 29 0a 09 09 09 7b data.cmd.==.NCP_LOCK_CLEAR)....{
e740 0a 09 09 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 43 6c 65 61 72 50 68 79 73 69 63 61 6c 52 .....result.=.ncp_ClearPhysicalR
e760 65 63 6f 72 64 28 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2c 0a 09 09 09 09 09 09 09 ecord(NCP_SERVER(inode),........
e780 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 66 69 6c 65 5f 68 61 6e 64 6c 65 2c 0a 09 NCP_FINFO(inode)->file_handle,..
e7a0 09 09 09 09 09 09 72 71 64 61 74 61 2e 6f 66 66 73 65 74 2c 0a 09 09 09 09 09 09 09 72 71 64 61 ......rqdata.offset,........rqda
e7c0 74 61 2e 6c 65 6e 67 74 68 29 3b 0a 09 09 09 09 69 66 20 28 72 65 73 75 6c 74 20 3e 20 30 29 20 ta.length);.....if.(result.>.0).
e7e0 72 65 73 75 6c 74 20 3d 20 30 3b 09 2f 2a 20 6e 6f 20 73 75 63 68 20 6c 6f 63 6b 20 2a 2f 0a 09 result.=.0;./*.no.such.lock.*/..
e800 09 09 7d 0a 09 09 09 65 6c 73 65 0a 09 09 09 7b 0a 09 09 09 09 69 6e 74 20 6c 6f 63 6b 63 6d 64 ..}....else....{.....int.lockcmd
e820 3b 0a 0a 09 09 09 09 73 77 69 74 63 68 20 28 72 71 64 61 74 61 2e 63 6d 64 29 0a 09 09 09 09 7b ;......switch.(rqdata.cmd).....{
e840 0a 09 09 09 09 09 63 61 73 65 20 4e 43 50 5f 4c 4f 43 4b 5f 45 58 3a 20 20 6c 6f 63 6b 63 6d 64 ......case.NCP_LOCK_EX:..lockcmd
e860 3d 31 3b 20 62 72 65 61 6b 3b 0a 09 09 09 09 09 63 61 73 65 20 4e 43 50 5f 4c 4f 43 4b 5f 53 48 =1;.break;......case.NCP_LOCK_SH
e880 3a 20 20 6c 6f 63 6b 63 6d 64 3d 33 3b 20 62 72 65 61 6b 3b 0a 09 09 09 09 09 64 65 66 61 75 6c :..lockcmd=3;.break;......defaul
e8a0 74 3a 09 20 20 20 6c 6f 63 6b 63 6d 64 3d 30 3b 20 62 72 65 61 6b 3b 0a 09 09 09 09 7d 0a 09 09 t:....lockcmd=0;.break;.....}...
e8c0 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 4c 6f 67 50 68 79 73 69 63 61 6c 52 65 63 6f 72 64 ..result.=.ncp_LogPhysicalRecord
e8e0 28 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2c 0a 09 09 09 09 09 09 09 4e 43 50 5f 46 (NCP_SERVER(inode),........NCP_F
e900 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 66 69 6c 65 5f 68 61 6e 64 6c 65 2c 0a 09 09 09 09 09 09 INFO(inode)->file_handle,.......
e920 09 6c 6f 63 6b 63 6d 64 2c 0a 09 09 09 09 09 09 09 72 71 64 61 74 61 2e 6f 66 66 73 65 74 2c 0a .lockcmd,........rqdata.offset,.
e940 09 09 09 09 09 09 09 72 71 64 61 74 61 2e 6c 65 6e 67 74 68 2c 0a 09 09 09 09 09 09 09 72 71 64 .......rqdata.length,........rqd
e960 61 74 61 2e 74 69 6d 65 6f 75 74 29 3b 0a 09 09 09 09 69 66 20 28 72 65 73 75 6c 74 20 3e 20 30 ata.timeout);.....if.(result.>.0
e980 29 20 72 65 73 75 6c 74 20 3d 20 2d 45 41 47 41 49 4e 3b 0a 09 09 09 7d 0a 6f 75 74 72 65 6c 3a ).result.=.-EAGAIN;....}.outrel:
e9a0 0a 09 09 09 6e 63 70 5f 69 6e 6f 64 65 5f 63 6c 6f 73 65 28 69 6e 6f 64 65 29 3b 0a 09 09 09 72 ....ncp_inode_close(inode);....r
e9c0 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 09 09 7d 0a 23 65 6e 64 69 66 09 2f 2a 20 43 4f 4e 46 eturn.result;...}.#endif./*.CONF
e9e0 49 47 5f 4e 43 50 46 53 5f 49 4f 43 54 4c 5f 4c 4f 43 4b 49 4e 47 20 2a 2f 0a 0a 23 69 66 64 65 IG_NCPFS_IOCTL_LOCKING.*/..#ifde
ea00 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 41 54 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 f.CONFIG_COMPAT..case.NCP_IOC_GE
ea20 54 4f 42 4a 45 43 54 4e 41 4d 45 5f 33 32 3a 0a 09 09 7b 0a 09 09 09 73 74 72 75 63 74 20 63 6f TOBJECTNAME_32:...{....struct.co
ea40 6d 70 61 74 5f 6e 63 70 5f 6f 62 6a 65 63 74 6e 61 6d 65 5f 69 6f 63 74 6c 20 75 73 65 72 3b 0a mpat_ncp_objectname_ioctl.user;.
ea60 09 09 09 73 69 7a 65 5f 74 20 6f 75 74 6c 3b 0a 0a 09 09 09 69 66 20 28 63 6f 70 79 5f 66 72 6f ...size_t.outl;.....if.(copy_fro
ea80 6d 5f 75 73 65 72 28 26 75 73 65 72 2c 20 61 72 67 70 2c 20 73 69 7a 65 6f 66 28 75 73 65 72 29 m_user(&user,.argp,.sizeof(user)
eaa0 29 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 09 09 09 64 6f 77 6e 5f 72 )).....return.-EFAULT;....down_r
eac0 65 61 64 28 26 73 65 72 76 65 72 2d 3e 61 75 74 68 5f 72 77 73 65 6d 29 3b 0a 09 09 09 75 73 65 ead(&server->auth_rwsem);....use
eae0 72 2e 61 75 74 68 5f 74 79 70 65 20 3d 20 73 65 72 76 65 72 2d 3e 61 75 74 68 2e 61 75 74 68 5f r.auth_type.=.server->auth.auth_
eb00 74 79 70 65 3b 0a 09 09 09 6f 75 74 6c 20 3d 20 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 type;....outl.=.user.object_name
eb20 5f 6c 65 6e 3b 0a 09 09 09 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 20 3d 20 _len;....user.object_name_len.=.
eb40 73 65 72 76 65 72 2d 3e 61 75 74 68 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 3b 0a 09 09 server->auth.object_name_len;...
eb60 09 69 66 20 28 6f 75 74 6c 20 3e 20 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e .if.(outl.>.user.object_name_len
eb80 29 0a 09 09 09 09 6f 75 74 6c 20 3d 20 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 ).....outl.=.user.object_name_le
eba0 6e 3b 0a 09 09 09 72 65 73 75 6c 74 20 3d 20 30 3b 0a 09 09 09 69 66 20 28 6f 75 74 6c 29 20 7b n;....result.=.0;....if.(outl).{
ebc0 0a 09 09 09 09 69 66 20 28 63 6f 70 79 5f 74 6f 5f 75 73 65 72 28 63 6f 6d 70 61 74 5f 70 74 72 .....if.(copy_to_user(compat_ptr
ebe0 28 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 29 2c 0a 09 09 09 09 09 09 20 73 65 72 76 65 (user.object_name),........serve
ec00 72 2d 3e 61 75 74 68 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 2c 0a 09 09 09 09 09 09 20 6f 75 74 6c r->auth.object_name,........outl
ec20 29 29 0a 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 46 41 55 4c 54 3b 0a 09 09 09 7d 0a 09 ))......result.=.-EFAULT;....}..
ec40 09 09 75 70 5f 72 65 61 64 28 26 73 65 72 76 65 72 2d 3e 61 75 74 68 5f 72 77 73 65 6d 29 3b 0a ..up_read(&server->auth_rwsem);.
ec60 09 09 09 69 66 20 28 21 72 65 73 75 6c 74 20 26 26 20 63 6f 70 79 5f 74 6f 5f 75 73 65 72 28 61 ...if.(!result.&&.copy_to_user(a
ec80 72 67 70 2c 20 26 75 73 65 72 2c 20 73 69 7a 65 6f 66 28 75 73 65 72 29 29 29 0a 09 09 09 09 72 rgp,.&user,.sizeof(user))).....r
eca0 65 73 75 6c 74 20 3d 20 2d 45 46 41 55 4c 54 3b 0a 09 09 09 72 65 74 75 72 6e 20 72 65 73 75 6c esult.=.-EFAULT;....return.resul
ecc0 74 3b 0a 09 09 7d 0a 23 65 6e 64 69 66 0a 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 t;...}.#endif...case.NCP_IOC_GET
ece0 4f 42 4a 45 43 54 4e 41 4d 45 3a 0a 09 09 7b 0a 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f 6f 62 OBJECTNAME:...{....struct.ncp_ob
ed00 6a 65 63 74 6e 61 6d 65 5f 69 6f 63 74 6c 20 75 73 65 72 3b 0a 09 09 09 73 69 7a 65 5f 74 20 6f jectname_ioctl.user;....size_t.o
ed20 75 74 6c 3b 0a 0a 09 09 09 69 66 20 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 75 73 65 utl;.....if.(copy_from_user(&use
ed40 72 2c 20 61 72 67 70 2c 20 73 69 7a 65 6f 66 28 75 73 65 72 29 29 29 0a 09 09 09 09 72 65 74 75 r,.argp,.sizeof(user))).....retu
ed60 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 09 09 09 64 6f 77 6e 5f 72 65 61 64 28 26 73 65 72 76 65 72 rn.-EFAULT;....down_read(&server
ed80 2d 3e 61 75 74 68 5f 72 77 73 65 6d 29 3b 0a 09 09 09 75 73 65 72 2e 61 75 74 68 5f 74 79 70 65 ->auth_rwsem);....user.auth_type
eda0 20 3d 20 73 65 72 76 65 72 2d 3e 61 75 74 68 2e 61 75 74 68 5f 74 79 70 65 3b 0a 09 09 09 6f 75 .=.server->auth.auth_type;....ou
edc0 74 6c 20 3d 20 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 3b 0a 09 09 09 75 73 tl.=.user.object_name_len;....us
ede0 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 20 3d 20 73 65 72 76 65 72 2d 3e 61 75 74 er.object_name_len.=.server->aut
ee00 68 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 3b 0a 09 09 09 69 66 20 28 6f 75 74 6c 20 3e h.object_name_len;....if.(outl.>
ee20 20 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 29 0a 09 09 09 09 6f 75 74 6c 20 .user.object_name_len).....outl.
ee40 3d 20 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 3b 0a 09 09 09 72 65 73 75 6c =.user.object_name_len;....resul
ee60 74 20 3d 20 30 3b 0a 09 09 09 69 66 20 28 6f 75 74 6c 29 20 7b 0a 09 09 09 09 69 66 20 28 63 6f t.=.0;....if.(outl).{.....if.(co
ee80 70 79 5f 74 6f 5f 75 73 65 72 28 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 2c 0a 09 09 09 py_to_user(user.object_name,....
eea0 09 09 09 20 73 65 72 76 65 72 2d 3e 61 75 74 68 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 2c 0a 09 09 ....server->auth.object_name,...
eec0 09 09 09 09 20 6f 75 74 6c 29 29 0a 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 46 41 55 4c .....outl))......result.=.-EFAUL
eee0 54 3b 0a 09 09 09 7d 0a 09 09 09 75 70 5f 72 65 61 64 28 26 73 65 72 76 65 72 2d 3e 61 75 74 68 T;....}....up_read(&server->auth
ef00 5f 72 77 73 65 6d 29 3b 0a 09 09 09 69 66 20 28 21 72 65 73 75 6c 74 20 26 26 20 63 6f 70 79 5f _rwsem);....if.(!result.&&.copy_
ef20 74 6f 5f 75 73 65 72 28 61 72 67 70 2c 20 26 75 73 65 72 2c 20 73 69 7a 65 6f 66 28 75 73 65 72 to_user(argp,.&user,.sizeof(user
ef40 29 29 29 0a 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 46 41 55 4c 54 3b 0a 09 09 09 72 65 74 ))).....result.=.-EFAULT;....ret
ef60 75 72 6e 20 72 65 73 75 6c 74 3b 0a 09 09 7d 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 urn.result;...}..#ifdef.CONFIG_C
ef80 4f 4d 50 41 54 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 4f 42 4a 45 43 54 4e 41 4d OMPAT..case.NCP_IOC_SETOBJECTNAM
efa0 45 5f 33 32 3a 0a 23 65 6e 64 69 66 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 4f 42 E_32:.#endif..case.NCP_IOC_SETOB
efc0 4a 45 43 54 4e 41 4d 45 3a 0a 09 09 7b 0a 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f 6f 62 6a 65 JECTNAME:...{....struct.ncp_obje
efe0 63 74 6e 61 6d 65 5f 69 6f 63 74 6c 20 75 73 65 72 3b 0a 09 09 09 76 6f 69 64 2a 20 6e 65 77 6e ctname_ioctl.user;....void*.newn
f000 61 6d 65 3b 0a 09 09 09 76 6f 69 64 2a 20 6f 6c 64 6e 61 6d 65 3b 0a 09 09 09 73 69 7a 65 5f 74 ame;....void*.oldname;....size_t
f020 20 6f 6c 64 6e 61 6d 65 6c 65 6e 3b 0a 09 09 09 76 6f 69 64 2a 20 6f 6c 64 70 72 69 76 61 74 65 .oldnamelen;....void*.oldprivate
f040 3b 0a 09 09 09 73 69 7a 65 5f 74 20 6f 6c 64 70 72 69 76 61 74 65 6c 65 6e 3b 0a 0a 23 69 66 64 ;....size_t.oldprivatelen;..#ifd
f060 65 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 41 54 0a 09 09 09 69 66 20 28 63 6d 64 20 3d 3d 20 4e ef.CONFIG_COMPAT....if.(cmd.==.N
f080 43 50 5f 49 4f 43 5f 53 45 54 4f 42 4a 45 43 54 4e 41 4d 45 5f 33 32 29 20 7b 0a 09 09 09 09 73 CP_IOC_SETOBJECTNAME_32).{.....s
f0a0 74 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f 6f 62 6a 65 63 74 6e 61 6d 65 5f 69 6f 63 74 truct.compat_ncp_objectname_ioct
f0c0 6c 20 75 73 65 72 33 32 3b 0a 09 09 09 09 69 66 20 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 l.user32;.....if.(copy_from_user
f0e0 28 26 75 73 65 72 33 32 2c 20 61 72 67 70 2c 20 73 69 7a 65 6f 66 28 75 73 65 72 33 32 29 29 29 (&user32,.argp,.sizeof(user32)))
f100 0a 09 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 09 09 09 09 75 73 65 72 2e 61 ......return.-EFAULT;.....user.a
f120 75 74 68 5f 74 79 70 65 20 3d 20 75 73 65 72 33 32 2e 61 75 74 68 5f 74 79 70 65 3b 0a 09 09 09 uth_type.=.user32.auth_type;....
f140 09 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 20 3d 20 75 73 65 72 33 32 2e 6f .user.object_name_len.=.user32.o
f160 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 3b 0a 09 09 09 09 75 73 65 72 2e 6f 62 6a 65 63 74 5f bject_name_len;.....user.object_
f180 6e 61 6d 65 20 3d 20 63 6f 6d 70 61 74 5f 70 74 72 28 75 73 65 72 33 32 2e 6f 62 6a 65 63 74 5f name.=.compat_ptr(user32.object_
f1a0 6e 61 6d 65 29 3b 0a 09 09 09 7d 20 65 6c 73 65 0a 23 65 6e 64 69 66 0a 09 09 09 69 66 20 28 63 name);....}.else.#endif....if.(c
f1c0 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 75 73 65 72 2c 20 61 72 67 70 2c 20 73 69 7a 65 6f opy_from_user(&user,.argp,.sizeo
f1e0 66 28 75 73 65 72 29 29 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 0a 09 f(user))).....return.-EFAULT;...
f200 09 09 69 66 20 28 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 20 3e 20 4e 43 50 ..if.(user.object_name_len.>.NCP
f220 5f 4f 42 4a 45 43 54 5f 4e 41 4d 45 5f 4d 41 58 5f 4c 45 4e 29 0a 09 09 09 09 72 65 74 75 72 6e _OBJECT_NAME_MAX_LEN).....return
f240 20 2d 45 4e 4f 4d 45 4d 3b 0a 09 09 09 69 66 20 28 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d .-ENOMEM;....if.(user.object_nam
f260 65 5f 6c 65 6e 29 20 7b 0a 09 09 09 09 6e 65 77 6e 61 6d 65 20 3d 20 6d 65 6d 64 75 70 5f 75 73 e_len).{.....newname.=.memdup_us
f280 65 72 28 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 2c 0a 09 09 09 09 09 09 20 20 20 20 20 er(user.object_name,............
f2a0 20 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 29 3b 0a 09 09 09 09 69 66 20 28 .user.object_name_len);.....if.(
f2c0 49 53 5f 45 52 52 28 6e 65 77 6e 61 6d 65 29 29 0a 09 09 09 09 09 72 65 74 75 72 6e 20 50 54 52 IS_ERR(newname))......return.PTR
f2e0 5f 45 52 52 28 6e 65 77 6e 61 6d 65 29 3b 0a 09 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 09 6e _ERR(newname);....}.else.{.....n
f300 65 77 6e 61 6d 65 20 3d 20 4e 55 4c 4c 3b 0a 09 09 09 7d 0a 09 09 09 64 6f 77 6e 5f 77 72 69 74 ewname.=.NULL;....}....down_writ
f320 65 28 26 73 65 72 76 65 72 2d 3e 61 75 74 68 5f 72 77 73 65 6d 29 3b 0a 09 09 09 6f 6c 64 6e 61 e(&server->auth_rwsem);....oldna
f340 6d 65 20 3d 20 73 65 72 76 65 72 2d 3e 61 75 74 68 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 3b 0a 09 me.=.server->auth.object_name;..
f360 09 09 6f 6c 64 6e 61 6d 65 6c 65 6e 20 3d 20 73 65 72 76 65 72 2d 3e 61 75 74 68 2e 6f 62 6a 65 ..oldnamelen.=.server->auth.obje
f380 63 74 5f 6e 61 6d 65 5f 6c 65 6e 3b 0a 09 09 09 6f 6c 64 70 72 69 76 61 74 65 20 3d 20 73 65 72 ct_name_len;....oldprivate.=.ser
f3a0 76 65 72 2d 3e 70 72 69 76 2e 64 61 74 61 3b 0a 09 09 09 6f 6c 64 70 72 69 76 61 74 65 6c 65 6e ver->priv.data;....oldprivatelen
f3c0 20 3d 20 73 65 72 76 65 72 2d 3e 70 72 69 76 2e 6c 65 6e 3b 0a 09 09 09 73 65 72 76 65 72 2d 3e .=.server->priv.len;....server->
f3e0 61 75 74 68 2e 61 75 74 68 5f 74 79 70 65 20 3d 20 75 73 65 72 2e 61 75 74 68 5f 74 79 70 65 3b auth.auth_type.=.user.auth_type;
f400 0a 09 09 09 73 65 72 76 65 72 2d 3e 61 75 74 68 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e ....server->auth.object_name_len
f420 20 3d 20 75 73 65 72 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e 3b 0a 09 09 09 73 65 72 76 .=.user.object_name_len;....serv
f440 65 72 2d 3e 61 75 74 68 2e 6f 62 6a 65 63 74 5f 6e 61 6d 65 20 3d 20 6e 65 77 6e 61 6d 65 3b 0a er->auth.object_name.=.newname;.
f460 09 09 09 73 65 72 76 65 72 2d 3e 70 72 69 76 2e 6c 65 6e 20 3d 20 30 3b 0a 09 09 09 73 65 72 76 ...server->priv.len.=.0;....serv
f480 65 72 2d 3e 70 72 69 76 2e 64 61 74 61 20 3d 20 4e 55 4c 4c 3b 0a 09 09 09 75 70 5f 77 72 69 74 er->priv.data.=.NULL;....up_writ
f4a0 65 28 26 73 65 72 76 65 72 2d 3e 61 75 74 68 5f 72 77 73 65 6d 29 3b 0a 09 09 09 6b 66 72 65 65 e(&server->auth_rwsem);....kfree
f4c0 28 6f 6c 64 70 72 69 76 61 74 65 29 3b 0a 09 09 09 6b 66 72 65 65 28 6f 6c 64 6e 61 6d 65 29 3b (oldprivate);....kfree(oldname);
f4e0 0a 09 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 09 7d 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 ....return.0;...}..#ifdef.CONFIG
f500 5f 43 4f 4d 50 41 54 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 50 52 49 56 41 54 45 _COMPAT..case.NCP_IOC_GETPRIVATE
f520 44 41 54 41 5f 33 32 3a 0a 23 65 6e 64 69 66 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 DATA_32:.#endif..case.NCP_IOC_GE
f540 54 50 52 49 56 41 54 45 44 41 54 41 3a 0a 09 09 7b 0a 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f TPRIVATEDATA:...{....struct.ncp_
f560 70 72 69 76 61 74 65 64 61 74 61 5f 69 6f 63 74 6c 20 75 73 65 72 3b 0a 09 09 09 73 69 7a 65 5f privatedata_ioctl.user;....size_
f580 74 20 6f 75 74 6c 3b 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 41 54 0a 09 09 t.outl;..#ifdef.CONFIG_COMPAT...
f5a0 09 69 66 20 28 63 6d 64 20 3d 3d 20 4e 43 50 5f 49 4f 43 5f 47 45 54 50 52 49 56 41 54 45 44 41 .if.(cmd.==.NCP_IOC_GETPRIVATEDA
f5c0 54 41 5f 33 32 29 20 7b 0a 09 09 09 09 73 74 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f 70 TA_32).{.....struct.compat_ncp_p
f5e0 72 69 76 61 74 65 64 61 74 61 5f 69 6f 63 74 6c 20 75 73 65 72 33 32 3b 0a 09 09 09 09 69 66 20 rivatedata_ioctl.user32;.....if.
f600 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 75 73 65 72 33 32 2c 20 61 72 67 70 2c 20 73 (copy_from_user(&user32,.argp,.s
f620 69 7a 65 6f 66 28 75 73 65 72 33 32 29 29 29 0a 09 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 izeof(user32)))......return.-EFA
f640 55 4c 54 3b 0a 09 09 09 09 75 73 65 72 2e 6c 65 6e 20 3d 20 75 73 65 72 33 32 2e 6c 65 6e 3b 0a ULT;.....user.len.=.user32.len;.
f660 09 09 09 09 75 73 65 72 2e 64 61 74 61 20 3d 20 63 6f 6d 70 61 74 5f 70 74 72 28 75 73 65 72 33 ....user.data.=.compat_ptr(user3
f680 32 2e 64 61 74 61 29 3b 0a 09 09 09 7d 20 65 6c 73 65 0a 23 65 6e 64 69 66 0a 09 09 09 69 66 20 2.data);....}.else.#endif....if.
f6a0 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 75 73 65 72 2c 20 61 72 67 70 2c 20 73 69 7a (copy_from_user(&user,.argp,.siz
f6c0 65 6f 66 28 75 73 65 72 29 29 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a eof(user))).....return.-EFAULT;.
f6e0 0a 09 09 09 64 6f 77 6e 5f 72 65 61 64 28 26 73 65 72 76 65 72 2d 3e 61 75 74 68 5f 72 77 73 65 ....down_read(&server->auth_rwse
f700 6d 29 3b 0a 09 09 09 6f 75 74 6c 20 3d 20 75 73 65 72 2e 6c 65 6e 3b 0a 09 09 09 75 73 65 72 2e m);....outl.=.user.len;....user.
f720 6c 65 6e 20 3d 20 73 65 72 76 65 72 2d 3e 70 72 69 76 2e 6c 65 6e 3b 0a 09 09 09 69 66 20 28 6f len.=.server->priv.len;....if.(o
f740 75 74 6c 20 3e 20 75 73 65 72 2e 6c 65 6e 29 20 6f 75 74 6c 20 3d 20 75 73 65 72 2e 6c 65 6e 3b utl.>.user.len).outl.=.user.len;
f760 0a 09 09 09 72 65 73 75 6c 74 20 3d 20 30 3b 0a 09 09 09 69 66 20 28 6f 75 74 6c 29 20 7b 0a 09 ....result.=.0;....if.(outl).{..
f780 09 09 09 69 66 20 28 63 6f 70 79 5f 74 6f 5f 75 73 65 72 28 75 73 65 72 2e 64 61 74 61 2c 0a 09 ...if.(copy_to_user(user.data,..
f7a0 09 09 09 09 09 20 73 65 72 76 65 72 2d 3e 70 72 69 76 2e 64 61 74 61 2c 0a 09 09 09 09 09 09 20 ......server->priv.data,........
f7c0 6f 75 74 6c 29 29 0a 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 46 41 55 4c 54 3b 0a 09 09 outl))......result.=.-EFAULT;...
f7e0 09 7d 0a 09 09 09 75 70 5f 72 65 61 64 28 26 73 65 72 76 65 72 2d 3e 61 75 74 68 5f 72 77 73 65 .}....up_read(&server->auth_rwse
f800 6d 29 3b 0a 09 09 09 69 66 20 28 72 65 73 75 6c 74 29 0a 09 09 09 09 72 65 74 75 72 6e 20 72 65 m);....if.(result).....return.re
f820 73 75 6c 74 3b 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 41 54 0a 09 09 09 69 66 sult;.#ifdef.CONFIG_COMPAT....if
f840 20 28 63 6d 64 20 3d 3d 20 4e 43 50 5f 49 4f 43 5f 47 45 54 50 52 49 56 41 54 45 44 41 54 41 5f .(cmd.==.NCP_IOC_GETPRIVATEDATA_
f860 33 32 29 20 7b 0a 09 09 09 09 73 74 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f 70 72 69 76 32).{.....struct.compat_ncp_priv
f880 61 74 65 64 61 74 61 5f 69 6f 63 74 6c 20 75 73 65 72 33 32 3b 0a 09 09 09 09 75 73 65 72 33 32 atedata_ioctl.user32;.....user32
f8a0 2e 6c 65 6e 20 3d 20 75 73 65 72 2e 6c 65 6e 3b 0a 09 09 09 09 75 73 65 72 33 32 2e 64 61 74 61 .len.=.user.len;.....user32.data
f8c0 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 20 75 73 65 72 2e 64 61 74 61 3b 0a 09 09 .=.(unsigned.long).user.data;...
f8e0 09 09 69 66 20 28 63 6f 70 79 5f 74 6f 5f 75 73 65 72 28 61 72 67 70 2c 20 26 75 73 65 72 33 32 ..if.(copy_to_user(argp,.&user32
f900 2c 20 73 69 7a 65 6f 66 28 75 73 65 72 33 32 29 29 29 0a 09 09 09 09 09 72 65 74 75 72 6e 20 2d ,.sizeof(user32)))......return.-
f920 45 46 41 55 4c 54 3b 0a 09 09 09 7d 20 65 6c 73 65 0a 23 65 6e 64 69 66 0a 09 09 09 69 66 20 28 EFAULT;....}.else.#endif....if.(
f940 63 6f 70 79 5f 74 6f 5f 75 73 65 72 28 61 72 67 70 2c 20 26 75 73 65 72 2c 20 73 69 7a 65 6f 66 copy_to_user(argp,.&user,.sizeof
f960 28 75 73 65 72 29 29 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 0a 09 09 (user))).....return.-EFAULT;....
f980 09 72 65 74 75 72 6e 20 30 3b 0a 09 09 7d 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 4f .return.0;...}..#ifdef.CONFIG_CO
f9a0 4d 50 41 54 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 50 52 49 56 41 54 45 44 41 54 MPAT..case.NCP_IOC_SETPRIVATEDAT
f9c0 41 5f 33 32 3a 0a 23 65 6e 64 69 66 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 50 52 A_32:.#endif..case.NCP_IOC_SETPR
f9e0 49 56 41 54 45 44 41 54 41 3a 0a 09 09 7b 0a 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f 70 72 69 IVATEDATA:...{....struct.ncp_pri
fa00 76 61 74 65 64 61 74 61 5f 69 6f 63 74 6c 20 75 73 65 72 3b 0a 09 09 09 76 6f 69 64 2a 20 6e 65 vatedata_ioctl.user;....void*.ne
fa20 77 3b 0a 09 09 09 76 6f 69 64 2a 20 6f 6c 64 3b 0a 09 09 09 73 69 7a 65 5f 74 20 6f 6c 64 6c 65 w;....void*.old;....size_t.oldle
fa40 6e 3b 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 41 54 0a 09 09 09 69 66 20 28 n;..#ifdef.CONFIG_COMPAT....if.(
fa60 63 6d 64 20 3d 3d 20 4e 43 50 5f 49 4f 43 5f 53 45 54 50 52 49 56 41 54 45 44 41 54 41 5f 33 32 cmd.==.NCP_IOC_SETPRIVATEDATA_32
fa80 29 20 7b 0a 09 09 09 09 73 74 72 75 63 74 20 63 6f 6d 70 61 74 5f 6e 63 70 5f 70 72 69 76 61 74 ).{.....struct.compat_ncp_privat
faa0 65 64 61 74 61 5f 69 6f 63 74 6c 20 75 73 65 72 33 32 3b 0a 09 09 09 09 69 66 20 28 63 6f 70 79 edata_ioctl.user32;.....if.(copy
fac0 5f 66 72 6f 6d 5f 75 73 65 72 28 26 75 73 65 72 33 32 2c 20 61 72 67 70 2c 20 73 69 7a 65 6f 66 _from_user(&user32,.argp,.sizeof
fae0 28 75 73 65 72 33 32 29 29 29 0a 09 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a (user32)))......return.-EFAULT;.
fb00 09 09 09 09 75 73 65 72 2e 6c 65 6e 20 3d 20 75 73 65 72 33 32 2e 6c 65 6e 3b 0a 09 09 09 09 75 ....user.len.=.user32.len;.....u
fb20 73 65 72 2e 64 61 74 61 20 3d 20 63 6f 6d 70 61 74 5f 70 74 72 28 75 73 65 72 33 32 2e 64 61 74 ser.data.=.compat_ptr(user32.dat
fb40 61 29 3b 0a 09 09 09 7d 20 65 6c 73 65 0a 23 65 6e 64 69 66 0a 09 09 09 69 66 20 28 63 6f 70 79 a);....}.else.#endif....if.(copy
fb60 5f 66 72 6f 6d 5f 75 73 65 72 28 26 75 73 65 72 2c 20 61 72 67 70 2c 20 73 69 7a 65 6f 66 28 75 _from_user(&user,.argp,.sizeof(u
fb80 73 65 72 29 29 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c 54 3b 0a 0a 09 09 09 69 ser))).....return.-EFAULT;.....i
fba0 66 20 28 75 73 65 72 2e 6c 65 6e 20 3e 20 4e 43 50 5f 50 52 49 56 41 54 45 5f 44 41 54 41 5f 4d f.(user.len.>.NCP_PRIVATE_DATA_M
fbc0 41 58 5f 4c 45 4e 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 4e 4f 4d 45 4d 3b 0a 09 09 09 69 AX_LEN).....return.-ENOMEM;....i
fbe0 66 20 28 75 73 65 72 2e 6c 65 6e 29 20 7b 0a 09 09 09 09 6e 65 77 20 3d 20 6d 65 6d 64 75 70 5f f.(user.len).{.....new.=.memdup_
fc00 75 73 65 72 28 75 73 65 72 2e 64 61 74 61 2c 20 75 73 65 72 2e 6c 65 6e 29 3b 0a 09 09 09 09 69 user(user.data,.user.len);.....i
fc20 66 20 28 49 53 5f 45 52 52 28 6e 65 77 29 29 0a 09 09 09 09 09 72 65 74 75 72 6e 20 50 54 52 5f f.(IS_ERR(new))......return.PTR_
fc40 45 52 52 28 6e 65 77 29 3b 0a 09 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 09 6e 65 77 20 3d 20 ERR(new);....}.else.{.....new.=.
fc60 4e 55 4c 4c 3b 0a 09 09 09 7d 0a 09 09 09 64 6f 77 6e 5f 77 72 69 74 65 28 26 73 65 72 76 65 72 NULL;....}....down_write(&server
fc80 2d 3e 61 75 74 68 5f 72 77 73 65 6d 29 3b 0a 09 09 09 6f 6c 64 20 3d 20 73 65 72 76 65 72 2d 3e ->auth_rwsem);....old.=.server->
fca0 70 72 69 76 2e 64 61 74 61 3b 0a 09 09 09 6f 6c 64 6c 65 6e 20 3d 20 73 65 72 76 65 72 2d 3e 70 priv.data;....oldlen.=.server->p
fcc0 72 69 76 2e 6c 65 6e 3b 0a 09 09 09 73 65 72 76 65 72 2d 3e 70 72 69 76 2e 6c 65 6e 20 3d 20 75 riv.len;....server->priv.len.=.u
fce0 73 65 72 2e 6c 65 6e 3b 0a 09 09 09 73 65 72 76 65 72 2d 3e 70 72 69 76 2e 64 61 74 61 20 3d 20 ser.len;....server->priv.data.=.
fd00 6e 65 77 3b 0a 09 09 09 75 70 5f 77 72 69 74 65 28 26 73 65 72 76 65 72 2d 3e 61 75 74 68 5f 72 new;....up_write(&server->auth_r
fd20 77 73 65 6d 29 3b 0a 09 09 09 6b 66 72 65 65 28 6f 6c 64 29 3b 0a 09 09 09 72 65 74 75 72 6e 20 wsem);....kfree(old);....return.
fd40 30 3b 0a 09 09 7d 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 4c 53 0a 0;...}..#ifdef.CONFIG_NCPFS_NLS.
fd60 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 43 48 41 52 53 45 54 53 3a 0a 09 09 72 65 74 .case.NCP_IOC_SETCHARSETS:...ret
fd80 75 72 6e 20 6e 63 70 5f 73 65 74 5f 63 68 61 72 73 65 74 73 28 73 65 72 76 65 72 2c 20 61 72 67 urn.ncp_set_charsets(server,.arg
fda0 70 29 3b 0a 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 43 48 41 52 53 45 54 53 3a 0a p);...case.NCP_IOC_GETCHARSETS:.
fdc0 09 09 72 65 74 75 72 6e 20 6e 63 70 5f 67 65 74 5f 63 68 61 72 73 65 74 73 28 73 65 72 76 65 72 ..return.ncp_get_charsets(server
fde0 2c 20 61 72 67 70 29 3b 0a 0a 23 65 6e 64 69 66 20 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 ,.argp);..#endif./*.CONFIG_NCPFS
fe00 5f 4e 4c 53 20 2a 2f 0a 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 44 45 4e 54 52 59 _NLS.*/...case.NCP_IOC_SETDENTRY
fe20 54 54 4c 3a 0a 09 09 7b 0a 09 09 09 75 5f 69 6e 74 33 32 5f 74 20 75 73 65 72 3b 0a 0a 09 09 09 TTL:...{....u_int32_t.user;.....
fe40 69 66 20 28 63 6f 70 79 5f 66 72 6f 6d 5f 75 73 65 72 28 26 75 73 65 72 2c 20 61 72 67 70 2c 20 if.(copy_from_user(&user,.argp,.
fe60 73 69 7a 65 6f 66 28 75 73 65 72 29 29 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 46 41 55 4c sizeof(user))).....return.-EFAUL
fe80 54 3b 0a 09 09 09 2f 2a 20 32 30 20 73 65 63 73 20 61 74 20 6d 6f 73 74 2e 2e 2e 20 2a 2f 0a 09 T;..../*.20.secs.at.most....*/..
fea0 09 09 69 66 20 28 75 73 65 72 20 3e 20 32 30 30 30 30 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d ..if.(user.>.20000).....return.-
fec0 45 49 4e 56 41 4c 3b 0a 09 09 09 75 73 65 72 20 3d 20 28 75 73 65 72 20 2a 20 48 5a 29 20 2f 20 EINVAL;....user.=.(user.*.HZ)./.
fee0 31 30 30 30 3b 0a 09 09 09 61 74 6f 6d 69 63 5f 73 65 74 28 26 73 65 72 76 65 72 2d 3e 64 65 6e 1000;....atomic_set(&server->den
ff00 74 72 79 5f 74 74 6c 2c 20 75 73 65 72 29 3b 0a 09 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 09 7d try_ttl,.user);....return.0;...}
ff20 0a 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 44 45 4e 54 52 59 54 54 4c 3a 0a 09 09 ...case.NCP_IOC_GETDENTRYTTL:...
ff40 7b 0a 09 09 09 75 5f 69 6e 74 33 32 5f 74 20 75 73 65 72 20 3d 20 28 61 74 6f 6d 69 63 5f 72 65 {....u_int32_t.user.=.(atomic_re
ff60 61 64 28 26 73 65 72 76 65 72 2d 3e 64 65 6e 74 72 79 5f 74 74 6c 29 20 2a 20 31 30 30 30 29 20 ad(&server->dentry_ttl).*.1000).
ff80 2f 20 48 5a 3b 0a 09 09 09 69 66 20 28 63 6f 70 79 5f 74 6f 5f 75 73 65 72 28 61 72 67 70 2c 20 /.HZ;....if.(copy_to_user(argp,.
ffa0 26 75 73 65 72 2c 20 73 69 7a 65 6f 66 28 75 73 65 72 29 29 29 0a 09 09 09 09 72 65 74 75 72 6e &user,.sizeof(user))).....return
ffc0 20 2d 45 46 41 55 4c 54 3b 0a 09 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 09 7d 0a 0a 09 7d 0a 09 .-EFAULT;....return.0;...}...}..
ffe0 72 65 74 75 72 6e 20 2d 45 49 4e 56 41 4c 3b 0a 7d 0a 0a 6c 6f 6e 67 20 6e 63 70 5f 69 6f 63 74 return.-EINVAL;.}..long.ncp_ioct
10000 6c 28 73 74 72 75 63 74 20 66 69 6c 65 20 2a 66 69 6c 70 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e l(struct.file.*filp,.unsigned.in
10020 74 20 63 6d 64 2c 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 61 72 67 29 0a 7b 0a 09 73 74 72 t.cmd,.unsigned.long.arg).{..str
10040 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 20 3d 20 66 69 6c 65 5f 69 6e 6f 64 65 28 66 69 uct.inode.*inode.=.file_inode(fi
10060 6c 70 29 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 lp);..struct.ncp_server.*server.
10080 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 3b 0a 09 6b 75 69 64 5f 74 20 75 69 64 =.NCP_SERVER(inode);..kuid_t.uid
100a0 20 3d 20 63 75 72 72 65 6e 74 5f 75 69 64 28 29 3b 0a 09 69 6e 74 20 6e 65 65 64 5f 64 72 6f 70 .=.current_uid();..int.need_drop
100c0 5f 77 72 69 74 65 20 3d 20 30 3b 0a 09 6c 6f 6e 67 20 72 65 74 3b 0a 0a 09 73 77 69 74 63 68 20 _write.=.0;..long.ret;...switch.
100e0 28 63 6d 64 29 20 7b 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 43 48 41 52 53 45 54 (cmd).{..case.NCP_IOC_SETCHARSET
10100 53 3a 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 43 4f 4e 4e 5f 4c 4f 47 47 45 44 5f 49 4e 3a S:..case.NCP_IOC_CONN_LOGGED_IN:
10120 0a 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 52 4f 4f 54 3a 0a 09 09 69 66 20 28 21 63 ..case.NCP_IOC_SETROOT:...if.(!c
10140 61 70 61 62 6c 65 28 43 41 50 5f 53 59 53 5f 41 44 4d 49 4e 29 29 20 7b 0a 09 09 09 72 65 74 20 apable(CAP_SYS_ADMIN)).{....ret.
10160 3d 20 2d 45 50 45 52 4d 3b 0a 09 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 09 7d 0a 09 09 62 72 65 =.-EPERM;....goto.out;...}...bre
10180 61 6b 3b 0a 09 7d 0a 09 69 66 20 28 21 75 69 64 5f 65 71 28 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f ak;..}..if.(!uid_eq(server->m.mo
101a0 75 6e 74 65 64 5f 75 69 64 2c 20 75 69 64 29 29 20 7b 0a 09 09 73 77 69 74 63 68 20 28 63 6d 64 unted_uid,.uid)).{...switch.(cmd
101c0 29 20 7b 0a 09 09 2f 2a 0a 09 09 20 2a 20 4f 6e 6c 79 20 6d 6f 75 6e 74 20 6f 77 6e 65 72 20 63 ).{.../*....*.Only.mount.owner.c
101e0 61 6e 20 69 73 73 75 65 20 74 68 65 73 65 20 69 6f 63 74 6c 73 2e 20 20 49 6e 66 6f 72 6d 61 74 an.issue.these.ioctls...Informat
10200 69 6f 6e 0a 09 09 20 2a 20 6e 65 63 65 73 73 61 72 79 20 74 6f 20 61 75 74 68 65 6e 74 69 63 61 ion....*.necessary.to.authentica
10220 74 65 20 74 6f 20 6f 74 68 65 72 20 4e 44 53 20 73 65 72 76 65 72 73 20 61 72 65 0a 09 09 20 2a te.to.other.NDS.servers.are....*
10240 20 73 74 6f 72 65 64 20 68 65 72 65 2e 0a 09 09 20 2a 2f 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 .stored.here.....*/...case.NCP_I
10260 4f 43 5f 47 45 54 4f 42 4a 45 43 54 4e 41 4d 45 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 OC_GETOBJECTNAME:...case.NCP_IOC
10280 5f 53 45 54 4f 42 4a 45 43 54 4e 41 4d 45 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 _SETOBJECTNAME:...case.NCP_IOC_G
102a0 45 54 50 52 49 56 41 54 45 44 41 54 41 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 ETPRIVATEDATA:...case.NCP_IOC_SE
102c0 54 50 52 49 56 41 54 45 44 41 54 41 3a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 TPRIVATEDATA:.#ifdef.CONFIG_COMP
102e0 41 54 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 4f 42 4a 45 43 54 4e 41 4d 45 5f AT...case.NCP_IOC_GETOBJECTNAME_
10300 33 32 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 4f 42 4a 45 43 54 4e 41 4d 45 32:...case.NCP_IOC_SETOBJECTNAME
10320 5f 33 32 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 50 52 49 56 41 54 45 44 41 _32:...case.NCP_IOC_GETPRIVATEDA
10340 54 41 5f 33 32 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 50 52 49 56 41 54 45 TA_32:...case.NCP_IOC_SETPRIVATE
10360 44 41 54 41 5f 33 32 3a 0a 23 65 6e 64 69 66 0a 09 09 09 72 65 74 20 3d 20 2d 45 41 43 43 45 53 DATA_32:.#endif....ret.=.-EACCES
10380 3b 0a 09 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 09 2f 2a 0a 09 09 20 2a 20 54 68 65 73 65 20 72 ;....goto.out;.../*....*.These.r
103a0 65 71 75 69 72 65 20 77 72 69 74 65 20 61 63 63 65 73 73 20 6f 6e 20 74 68 65 20 69 6e 6f 64 65 equire.write.access.on.the.inode
103c0 20 69 66 20 75 73 65 72 20 69 64 0a 09 09 20 2a 20 64 6f 65 73 20 6e 6f 74 20 6d 61 74 63 68 2e .if.user.id....*.does.not.match.
103e0 20 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65 79 20 64 6f 20 6e 6f 74 20 77 72 69 74 65 20 74 6f ..Note.that.they.do.not.write.to
10400 20 74 68 65 0a 09 09 20 2a 20 66 69 6c 65 2e 2e 2e 20 20 42 75 74 20 6f 6c 64 20 63 6f 64 65 20 .the....*.file.....But.old.code.
10420 64 69 64 20 6d 6e 74 5f 77 61 6e 74 5f 77 72 69 74 65 2c 20 73 6f 20 49 20 6b 65 65 70 0a 09 09 did.mnt_want_write,.so.I.keep...
10440 20 2a 20 69 74 20 61 73 20 69 73 2e 20 20 4f 66 20 63 6f 75 72 73 65 20 6e 6f 74 20 66 6f 72 20 .*.it.as.is...Of.course.not.for.
10460 6d 6f 75 6e 74 70 6f 69 6e 74 20 6f 77 6e 65 72 2c 20 61 73 0a 09 09 20 2a 20 74 68 61 74 20 62 mountpoint.owner,.as....*.that.b
10480 72 65 61 6b 73 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 6f 75 6e 74 73 20 61 6c 74 6f 67 65 74 68 65 reaks.read-only.mounts.altogethe
104a0 72 20 61 73 20 6e 63 70 6d 6f 75 6e 74 0a 09 09 20 2a 20 6e 65 65 64 73 20 77 6f 72 6b 69 6e 67 r.as.ncpmount....*.needs.working
104c0 20 4e 43 50 5f 49 4f 43 5f 4e 43 50 52 45 51 55 45 53 54 20 61 6e 64 0a 09 09 20 2a 20 4e 43 50 .NCP_IOC_NCPREQUEST.and....*.NCP
104e0 5f 49 4f 43 5f 47 45 54 5f 46 53 5f 49 4e 46 4f 2e 20 20 53 6f 6d 65 20 6f 66 20 74 68 65 73 65 _IOC_GET_FS_INFO...Some.of.these
10500 20 63 6f 64 65 73 20 28 73 65 74 64 65 6e 74 72 79 74 74 6c 2c 0a 09 09 20 2a 20 73 69 67 6e 69 .codes.(setdentryttl,....*.signi
10520 6e 69 74 2c 20 73 65 74 73 69 67 6e 77 61 6e 74 65 64 29 20 73 68 6f 75 6c 64 20 62 65 20 70 72 nit,.setsignwanted).should.be.pr
10540 6f 62 61 62 6c 79 20 72 65 73 74 72 69 63 74 65 64 0a 09 09 20 2a 20 74 6f 20 6f 77 6e 65 72 20 obably.restricted....*.to.owner.
10560 6f 6e 6c 79 2c 20 6f 72 20 65 76 65 6e 20 6d 6f 72 65 20 74 6f 20 43 41 50 5f 53 59 53 5f 41 44 only,.or.even.more.to.CAP_SYS_AD
10580 4d 49 4e 29 2e 0a 09 09 20 2a 2f 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 5f 46 MIN).....*/...case.NCP_IOC_GET_F
105a0 53 5f 49 4e 46 4f 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 5f 46 53 5f 49 4e S_INFO:...case.NCP_IOC_GET_FS_IN
105c0 46 4f 5f 56 32 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 4e 43 50 52 45 51 55 45 53 54 FO_V2:...case.NCP_IOC_NCPREQUEST
105e0 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 44 45 4e 54 52 59 54 54 4c 3a 0a 09 :...case.NCP_IOC_SETDENTRYTTL:..
10600 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 49 47 4e 5f 49 4e 49 54 3a 0a 09 09 63 61 73 65 20 .case.NCP_IOC_SIGN_INIT:...case.
10620 4e 43 50 5f 49 4f 43 5f 4c 4f 43 4b 55 4e 4c 4f 43 4b 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 NCP_IOC_LOCKUNLOCK:...case.NCP_I
10640 4f 43 5f 53 45 54 5f 53 49 47 4e 5f 57 41 4e 54 45 44 3a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 OC_SET_SIGN_WANTED:.#ifdef.CONFI
10660 47 5f 43 4f 4d 50 41 54 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 5f 46 53 5f 49 G_COMPAT...case.NCP_IOC_GET_FS_I
10680 4e 46 4f 5f 56 32 5f 33 32 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 4e 43 50 52 45 51 NFO_V2_32:...case.NCP_IOC_NCPREQ
106a0 55 45 53 54 5f 33 32 3a 0a 23 65 6e 64 69 66 0a 09 09 09 72 65 74 20 3d 20 6d 6e 74 5f 77 61 6e UEST_32:.#endif....ret.=.mnt_wan
106c0 74 5f 77 72 69 74 65 5f 66 69 6c 65 28 66 69 6c 70 29 3b 0a 09 09 09 69 66 20 28 72 65 74 29 0a t_write_file(filp);....if.(ret).
106e0 09 09 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 09 09 6e 65 65 64 5f 64 72 6f 70 5f 77 72 69 74 65 ....goto.out;....need_drop_write
10700 20 3d 20 31 3b 0a 09 09 09 72 65 74 20 3d 20 69 6e 6f 64 65 5f 70 65 72 6d 69 73 73 69 6f 6e 28 .=.1;....ret.=.inode_permission(
10720 69 6e 6f 64 65 2c 20 4d 41 59 5f 57 52 49 54 45 29 3b 0a 09 09 09 69 66 20 28 72 65 74 29 0a 09 inode,.MAY_WRITE);....if.(ret)..
10740 09 09 09 67 6f 74 6f 20 6f 75 74 44 72 6f 70 57 72 69 74 65 3b 0a 09 09 09 62 72 65 61 6b 3b 0a ...goto.outDropWrite;....break;.
10760 09 09 2f 2a 0a 09 09 20 2a 20 52 65 61 64 20 61 63 63 65 73 73 20 72 65 71 75 69 72 65 64 2e 0a ../*....*.Read.access.required..
10780 09 09 20 2a 2f 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 4d 4f 55 4e 54 55 49 44 ...*/...case.NCP_IOC_GETMOUNTUID
107a0 31 36 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 4d 4f 55 4e 54 55 49 44 33 32 16:...case.NCP_IOC_GETMOUNTUID32
107c0 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 4d 4f 55 4e 54 55 49 44 36 34 3a 0a :...case.NCP_IOC_GETMOUNTUID64:.
107e0 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 52 4f 4f 54 3a 0a 09 09 63 61 73 65 20 4e ..case.NCP_IOC_GETROOT:...case.N
10800 43 50 5f 49 4f 43 5f 53 49 47 4e 5f 57 41 4e 54 45 44 3a 0a 09 09 09 72 65 74 20 3d 20 69 6e 6f CP_IOC_SIGN_WANTED:....ret.=.ino
10820 64 65 5f 70 65 72 6d 69 73 73 69 6f 6e 28 69 6e 6f 64 65 2c 20 4d 41 59 5f 52 45 41 44 29 3b 0a de_permission(inode,.MAY_READ);.
10840 09 09 09 69 66 20 28 72 65 74 29 0a 09 09 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 09 09 62 72 65 ...if.(ret).....goto.out;....bre
10860 61 6b 3b 0a 09 09 2f 2a 0a 09 09 20 2a 20 41 6e 79 62 6f 64 79 20 63 61 6e 20 72 65 61 64 20 74 ak;.../*....*.Anybody.can.read.t
10880 68 65 73 65 2e 0a 09 09 20 2a 2f 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 43 48 hese.....*/...case.NCP_IOC_GETCH
108a0 41 52 53 45 54 53 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 47 45 54 44 45 4e 54 52 59 ARSETS:...case.NCP_IOC_GETDENTRY
108c0 54 54 4c 3a 0a 09 09 64 65 66 61 75 6c 74 3a 0a 09 09 2f 2a 20 54 68 72 65 65 20 63 6f 64 65 73 TTL:...default:.../*.Three.codes
108e0 20 62 65 6c 6f 77 20 61 72 65 20 70 72 6f 74 65 63 74 65 64 20 62 79 20 43 41 50 5f 53 59 53 5f .below.are.protected.by.CAP_SYS_
10900 41 44 4d 49 4e 20 61 62 6f 76 65 2e 20 2a 2f 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 ADMIN.above..*/...case.NCP_IOC_S
10920 45 54 43 48 41 52 53 45 54 53 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 43 4f 4e 4e 5f ETCHARSETS:...case.NCP_IOC_CONN_
10940 4c 4f 47 47 45 44 5f 49 4e 3a 0a 09 09 63 61 73 65 20 4e 43 50 5f 49 4f 43 5f 53 45 54 52 4f 4f LOGGED_IN:...case.NCP_IOC_SETROO
10960 54 3a 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 7d 0a 09 7d 0a 09 72 65 74 20 3d 20 5f 5f 6e 63 70 T:....break;...}..}..ret.=.__ncp
10980 5f 69 6f 63 74 6c 28 69 6e 6f 64 65 2c 20 63 6d 64 2c 20 61 72 67 29 3b 0a 6f 75 74 44 72 6f 70 _ioctl(inode,.cmd,.arg);.outDrop
109a0 57 72 69 74 65 3a 0a 09 69 66 20 28 6e 65 65 64 5f 64 72 6f 70 5f 77 72 69 74 65 29 0a 09 09 6d Write:..if.(need_drop_write)...m
109c0 6e 74 5f 64 72 6f 70 5f 77 72 69 74 65 5f 66 69 6c 65 28 66 69 6c 70 29 3b 0a 6f 75 74 3a 0a 09 nt_drop_write_file(filp);.out:..
109e0 72 65 74 75 72 6e 20 72 65 74 3b 0a 7d 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 4f 4d return.ret;.}..#ifdef.CONFIG_COM
10a00 50 41 54 0a 6c 6f 6e 67 20 6e 63 70 5f 63 6f 6d 70 61 74 5f 69 6f 63 74 6c 28 73 74 72 75 63 74 PAT.long.ncp_compat_ioctl(struct
10a20 20 66 69 6c 65 20 2a 66 69 6c 65 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 63 6d 64 2c 20 75 .file.*file,.unsigned.int.cmd,.u
10a40 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 61 72 67 29 0a 7b 0a 09 6c 6f 6e 67 20 72 65 74 3b 0a 0a nsigned.long.arg).{..long.ret;..
10a60 09 61 72 67 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 20 63 6f 6d 70 61 74 5f 70 74 .arg.=.(unsigned.long).compat_pt
10a80 72 28 61 72 67 29 3b 0a 09 72 65 74 20 3d 20 6e 63 70 5f 69 6f 63 74 6c 28 66 69 6c 65 2c 20 63 r(arg);..ret.=.ncp_ioctl(file,.c
10aa0 6d 64 2c 20 61 72 67 29 3b 0a 09 72 65 74 75 72 6e 20 72 65 74 3b 0a 7d 0a 23 65 6e 64 69 66 0a md,.arg);..return.ret;.}.#endif.
10ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10c00 6e 63 70 66 73 2f 6d 6d 61 70 2e 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ncpfs/mmap.c....................
10c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10c60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 ....0000644.0001750.0001750.0000
10c80 30 30 30 35 34 34 31 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 32 32 37 30 00 20 30 00 00 00 0005441.13023323142.012270..0...
10ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10d00 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...kubax..................
10d20 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........kubax..................
10d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10e00 2f 2a 0a 20 2a 20 20 6d 6d 61 70 2e 63 0a 20 2a 0a 20 2a 20 20 43 6f 70 79 72 69 67 68 74 20 28 /*..*..mmap.c..*..*..Copyright.(
10e20 43 29 20 31 39 39 35 2c 20 31 39 39 36 20 62 79 20 56 6f 6c 6b 65 72 20 4c 65 6e 64 65 63 6b 65 C).1995,.1996.by.Volker.Lendecke
10e40 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 37 20 50 65 74 65 72 20 57 61 6c 74 65 6e 62 ..*..Modified.1997.Peter.Waltenb
10e60 65 72 67 2c 20 42 69 6c 6c 20 48 61 77 65 73 2c 20 44 61 76 69 64 20 57 6f 6f 64 68 6f 75 73 65 erg,.Bill.Hawes,.David.Woodhouse
10e80 20 66 6f 72 20 32 2e 31 20 64 63 61 63 68 65 0a 20 2a 0a 20 2a 2f 0a 0a 23 69 6e 63 6c 75 64 65 .for.2.1.dcache..*..*/..#include
10ea0 20 3c 6c 69 6e 75 78 2f 73 74 61 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f .<linux/stat.h>.#include.<linux/
10ec0 74 69 6d 65 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6b 65 72 6e 65 6c 2e 68 time.h>.#include.<linux/kernel.h
10ee0 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 67 66 70 2e 68 3e 0a 23 69 6e 63 6c 75 64 >.#include.<linux/gfp.h>.#includ
10f00 65 20 3c 6c 69 6e 75 78 2f 6d 6d 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 e.<linux/mm.h>.#include.<linux/s
10f20 68 6d 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 65 72 72 6e 6f 2e 68 3e 0a 23 hm.h>.#include.<linux/errno.h>.#
10f40 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6d 6d 61 6e 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 include.<linux/mman.h>.#include.
10f60 3c 6c 69 6e 75 78 2f 73 74 72 69 6e 67 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 <linux/string.h>.#include.<linux
10f80 2f 66 63 6e 74 6c 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6d 65 6d 63 6f 6e /fcntl.h>.#include.<linux/memcon
10fa0 74 72 6f 6c 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 61 73 6d 2f 75 61 63 63 65 73 73 2e 68 trol.h>..#include.<asm/uaccess.h
10fc0 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 22 6e 63 70 5f 66 73 2e 68 22 0a 0a 2f 2a 0a 20 2a 20 46 69 >..#include."ncp_fs.h"../*..*.Fi
10fe0 6c 6c 20 69 6e 20 74 68 65 20 73 75 70 70 6c 69 65 64 20 70 61 67 65 20 66 6f 72 20 6d 6d 61 70 ll.in.the.supplied.page.for.mmap
11000 0a 20 2a 20 58 58 58 3a 20 68 6f 77 20 61 72 65 20 77 65 20 65 78 63 6c 75 64 69 6e 67 20 74 72 ..*.XXX:.how.are.we.excluding.tr
11020 75 6e 63 61 74 65 2f 69 6e 76 61 6c 69 64 61 74 65 20 68 65 72 65 3f 20 4d 61 79 62 65 20 6e 65 uncate/invalidate.here?.Maybe.ne
11040 65 64 20 74 6f 20 6c 6f 63 6b 0a 20 2a 20 70 61 67 65 3f 0a 20 2a 2f 0a 73 74 61 74 69 63 20 69 ed.to.lock..*.page?..*/.static.i
11060 6e 74 20 6e 63 70 5f 66 69 6c 65 5f 6d 6d 61 70 5f 66 61 75 6c 74 28 73 74 72 75 63 74 20 76 6d nt.ncp_file_mmap_fault(struct.vm
11080 5f 61 72 65 61 5f 73 74 72 75 63 74 20 2a 61 72 65 61 2c 0a 09 09 09 09 09 73 74 72 75 63 74 20 _area_struct.*area,......struct.
110a0 76 6d 5f 66 61 75 6c 74 20 2a 76 6d 66 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a vm_fault.*vmf).{..struct.inode.*
110c0 69 6e 6f 64 65 20 3d 20 66 69 6c 65 5f 69 6e 6f 64 65 28 61 72 65 61 2d 3e 76 6d 5f 66 69 6c 65 inode.=.file_inode(area->vm_file
110e0 29 3b 0a 09 63 68 61 72 20 2a 70 67 5f 61 64 64 72 3b 0a 09 75 6e 73 69 67 6e 65 64 20 69 6e 74 );..char.*pg_addr;..unsigned.int
11100 20 61 6c 72 65 61 64 79 5f 72 65 61 64 3b 0a 09 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 63 6f 75 .already_read;..unsigned.int.cou
11120 6e 74 3b 0a 09 69 6e 74 20 62 75 66 73 69 7a 65 3b 0a 09 69 6e 74 20 70 6f 73 3b 20 2f 2a 20 58 nt;..int.bufsize;..int.pos;./*.X
11140 58 58 3a 20 6c 6f 66 66 5f 74 20 3f 20 2a 2f 0a 0a 09 2f 2a 0a 09 20 2a 20 6e 63 70 66 73 20 68 XX:.loff_t.?.*/.../*...*.ncpfs.h
11160 61 73 20 6e 6f 74 68 69 6e 67 20 61 67 61 69 6e 73 74 20 68 69 67 68 20 70 61 67 65 73 20 61 73 as.nothing.against.high.pages.as
11180 20 6c 6f 6e 67 0a 09 20 2a 20 61 73 20 72 65 63 76 6d 73 67 20 61 6e 64 20 6d 65 6d 73 65 74 20 .long...*.as.recvmsg.and.memset.
111a0 77 6f 72 6b 73 20 6f 6e 20 69 74 0a 09 20 2a 2f 0a 09 76 6d 66 2d 3e 70 61 67 65 20 3d 20 61 6c works.on.it...*/..vmf->page.=.al
111c0 6c 6f 63 5f 70 61 67 65 28 47 46 50 5f 48 49 47 48 55 53 45 52 29 3b 0a 09 69 66 20 28 21 76 6d loc_page(GFP_HIGHUSER);..if.(!vm
111e0 66 2d 3e 70 61 67 65 29 0a 09 09 72 65 74 75 72 6e 20 56 4d 5f 46 41 55 4c 54 5f 4f 4f 4d 3b 0a f->page)...return.VM_FAULT_OOM;.
11200 09 70 67 5f 61 64 64 72 20 3d 20 6b 6d 61 70 28 76 6d 66 2d 3e 70 61 67 65 29 3b 0a 09 70 6f 73 .pg_addr.=.kmap(vmf->page);..pos
11220 20 3d 20 76 6d 66 2d 3e 70 67 6f 66 66 20 3c 3c 20 50 41 47 45 5f 53 48 49 46 54 3b 0a 0a 09 63 .=.vmf->pgoff.<<.PAGE_SHIFT;...c
11240 6f 75 6e 74 20 3d 20 50 41 47 45 5f 53 49 5a 45 3b 0a 09 2f 2a 20 77 68 61 74 20 77 65 20 63 61 ount.=.PAGE_SIZE;../*.what.we.ca
11260 6e 20 72 65 61 64 20 69 6e 20 6f 6e 65 20 67 6f 20 2a 2f 0a 09 62 75 66 73 69 7a 65 20 3d 20 4e n.read.in.one.go.*/..bufsize.=.N
11280 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2d 3e 62 75 66 66 65 72 5f 73 69 7a 65 3b 0a 0a CP_SERVER(inode)->buffer_size;..
112a0 09 61 6c 72 65 61 64 79 5f 72 65 61 64 20 3d 20 30 3b 0a 09 69 66 20 28 6e 63 70 5f 6d 61 6b 65 .already_read.=.0;..if.(ncp_make
112c0 5f 6f 70 65 6e 28 69 6e 6f 64 65 2c 20 4f 5f 52 44 4f 4e 4c 59 29 20 3e 3d 20 30 29 20 7b 0a 09 _open(inode,.O_RDONLY).>=.0).{..
112e0 09 77 68 69 6c 65 20 28 61 6c 72 65 61 64 79 5f 72 65 61 64 20 3c 20 63 6f 75 6e 74 29 20 7b 0a .while.(already_read.<.count).{.
11300 09 09 09 69 6e 74 20 72 65 61 64 5f 74 68 69 73 5f 74 69 6d 65 3b 0a 09 09 09 69 6e 74 20 74 6f ...int.read_this_time;....int.to
11320 5f 72 65 61 64 3b 0a 0a 09 09 09 74 6f 5f 72 65 61 64 20 3d 20 62 75 66 73 69 7a 65 20 2d 20 28 _read;.....to_read.=.bufsize.-.(
11340 70 6f 73 20 25 20 62 75 66 73 69 7a 65 29 3b 0a 0a 09 09 09 74 6f 5f 72 65 61 64 20 3d 20 6d 69 pos.%.bufsize);.....to_read.=.mi
11360 6e 5f 74 28 75 6e 73 69 67 6e 65 64 20 69 6e 74 2c 20 74 6f 5f 72 65 61 64 2c 20 63 6f 75 6e 74 n_t(unsigned.int,.to_read,.count
11380 20 2d 20 61 6c 72 65 61 64 79 5f 72 65 61 64 29 3b 0a 0a 09 09 09 69 66 20 28 6e 63 70 5f 72 65 .-.already_read);.....if.(ncp_re
113a0 61 64 5f 6b 65 72 6e 65 6c 28 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2c 0a 09 09 09 ad_kernel(NCP_SERVER(inode),....
113c0 09 20 20 20 20 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 66 69 6c 65 5f 68 61 6e ......NCP_FINFO(inode)->file_han
113e0 64 6c 65 2c 0a 09 09 09 09 20 20 20 20 20 70 6f 73 2c 20 74 6f 5f 72 65 61 64 2c 0a 09 09 09 09 dle,..........pos,.to_read,.....
11400 20 20 20 20 20 70 67 5f 61 64 64 72 20 2b 20 61 6c 72 65 61 64 79 5f 72 65 61 64 2c 0a 09 09 09 .....pg_addr.+.already_read,....
11420 09 20 20 20 20 20 26 72 65 61 64 5f 74 68 69 73 5f 74 69 6d 65 29 20 21 3d 20 30 29 20 7b 0a 09 ......&read_this_time).!=.0).{..
11440 09 09 09 72 65 61 64 5f 74 68 69 73 5f 74 69 6d 65 20 3d 20 30 3b 0a 09 09 09 7d 0a 09 09 09 70 ...read_this_time.=.0;....}....p
11460 6f 73 20 2b 3d 20 72 65 61 64 5f 74 68 69 73 5f 74 69 6d 65 3b 0a 09 09 09 61 6c 72 65 61 64 79 os.+=.read_this_time;....already
11480 5f 72 65 61 64 20 2b 3d 20 72 65 61 64 5f 74 68 69 73 5f 74 69 6d 65 3b 0a 0a 09 09 09 69 66 20 _read.+=.read_this_time;.....if.
114a0 28 72 65 61 64 5f 74 68 69 73 5f 74 69 6d 65 20 3c 20 74 6f 5f 72 65 61 64 29 20 7b 0a 09 09 09 (read_this_time.<.to_read).{....
114c0 09 62 72 65 61 6b 3b 0a 09 09 09 7d 0a 09 09 7d 0a 09 09 6e 63 70 5f 69 6e 6f 64 65 5f 63 6c 6f .break;....}...}...ncp_inode_clo
114e0 73 65 28 69 6e 6f 64 65 29 3b 0a 0a 09 7d 0a 0a 09 69 66 20 28 61 6c 72 65 61 64 79 5f 72 65 61 se(inode);...}...if.(already_rea
11500 64 20 3c 20 50 41 47 45 5f 53 49 5a 45 29 0a 09 09 6d 65 6d 73 65 74 28 70 67 5f 61 64 64 72 20 d.<.PAGE_SIZE)...memset(pg_addr.
11520 2b 20 61 6c 72 65 61 64 79 5f 72 65 61 64 2c 20 30 2c 20 50 41 47 45 5f 53 49 5a 45 20 2d 20 61 +.already_read,.0,.PAGE_SIZE.-.a
11540 6c 72 65 61 64 79 5f 72 65 61 64 29 3b 0a 09 66 6c 75 73 68 5f 64 63 61 63 68 65 5f 70 61 67 65 lready_read);..flush_dcache_page
11560 28 76 6d 66 2d 3e 70 61 67 65 29 3b 0a 09 6b 75 6e 6d 61 70 28 76 6d 66 2d 3e 70 61 67 65 29 3b (vmf->page);..kunmap(vmf->page);
11580 0a 0a 09 2f 2a 0a 09 20 2a 20 49 66 20 49 20 75 6e 64 65 72 73 74 61 6e 64 20 6e 63 70 5f 72 65 .../*...*.If.I.understand.ncp_re
115a0 61 64 5f 6b 65 72 6e 65 6c 28 29 20 70 72 6f 70 65 72 6c 79 2c 20 74 68 65 20 61 62 6f 76 65 20 ad_kernel().properly,.the.above.
115c0 61 6c 77 61 79 73 0a 09 20 2a 20 66 65 74 63 68 65 73 20 66 72 6f 6d 20 74 68 65 20 6e 65 74 77 always...*.fetches.from.the.netw
115e0 6f 72 6b 2c 20 68 65 72 65 20 74 68 65 20 61 6e 61 6c 6f 67 75 65 20 6f 66 20 64 69 73 6b 2e 0a ork,.here.the.analogue.of.disk..
11600 09 20 2a 20 2d 2d 20 6e 79 63 0a 09 20 2a 2f 0a 09 63 6f 75 6e 74 5f 76 6d 5f 65 76 65 6e 74 28 ..*.--.nyc...*/..count_vm_event(
11620 50 47 4d 41 4a 46 41 55 4c 54 29 3b 0a 09 6d 65 6d 5f 63 67 72 6f 75 70 5f 63 6f 75 6e 74 5f 76 PGMAJFAULT);..mem_cgroup_count_v
11640 6d 5f 65 76 65 6e 74 28 61 72 65 61 2d 3e 76 6d 5f 6d 6d 2c 20 50 47 4d 41 4a 46 41 55 4c 54 29 m_event(area->vm_mm,.PGMAJFAULT)
11660 3b 0a 09 72 65 74 75 72 6e 20 56 4d 5f 46 41 55 4c 54 5f 4d 41 4a 4f 52 3b 0a 7d 0a 0a 73 74 61 ;..return.VM_FAULT_MAJOR;.}..sta
11680 74 69 63 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 76 6d 5f 6f 70 65 72 61 74 69 6f 6e 73 5f 73 tic.const.struct.vm_operations_s
116a0 74 72 75 63 74 20 6e 63 70 5f 66 69 6c 65 5f 6d 6d 61 70 20 3d 0a 7b 0a 09 2e 66 61 75 6c 74 20 truct.ncp_file_mmap.=.{...fault.
116c0 3d 20 6e 63 70 5f 66 69 6c 65 5f 6d 6d 61 70 5f 66 61 75 6c 74 2c 0a 7d 3b 0a 0a 0a 2f 2a 20 54 =.ncp_file_mmap_fault,.};.../*.T
116e0 68 69 73 20 69 73 20 75 73 65 64 20 66 6f 72 20 61 20 67 65 6e 65 72 61 6c 20 6d 6d 61 70 20 6f his.is.used.for.a.general.mmap.o
11700 66 20 61 20 6e 63 70 20 66 69 6c 65 20 2a 2f 0a 69 6e 74 20 6e 63 70 5f 6d 6d 61 70 28 73 74 72 f.a.ncp.file.*/.int.ncp_mmap(str
11720 75 63 74 20 66 69 6c 65 20 2a 66 69 6c 65 2c 20 73 74 72 75 63 74 20 76 6d 5f 61 72 65 61 5f 73 uct.file.*file,.struct.vm_area_s
11740 74 72 75 63 74 20 2a 76 6d 61 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f truct.*vma).{..struct.inode.*ino
11760 64 65 20 3d 20 66 69 6c 65 5f 69 6e 6f 64 65 28 66 69 6c 65 29 3b 0a 09 0a 09 6e 63 70 5f 64 62 de.=.file_inode(file);....ncp_db
11780 67 28 31 2c 20 22 63 61 6c 6c 65 64 5c 6e 22 29 3b 0a 0a 09 69 66 20 28 21 6e 63 70 5f 63 6f 6e g(1,."called\n");...if.(!ncp_con
117a0 6e 5f 76 61 6c 69 64 28 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 29 29 0a 09 09 72 65 n_valid(NCP_SERVER(inode)))...re
117c0 74 75 72 6e 20 2d 45 49 4f 3b 0a 0a 09 2f 2a 20 6f 6e 6c 79 20 50 41 47 45 5f 43 4f 57 20 6f 72 turn.-EIO;.../*.only.PAGE_COW.or
117e0 20 72 65 61 64 2d 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6e 6f 77 20 2a 2f 0a 09 69 66 20 .read-only.supported.now.*/..if.
11800 28 76 6d 61 2d 3e 76 6d 5f 66 6c 61 67 73 20 26 20 56 4d 5f 53 48 41 52 45 44 29 0a 09 09 72 65 (vma->vm_flags.&.VM_SHARED)...re
11820 74 75 72 6e 20 2d 45 49 4e 56 41 4c 3b 0a 09 2f 2a 20 77 65 20 64 6f 20 6e 6f 74 20 73 75 70 70 turn.-EINVAL;../*.we.do.not.supp
11840 6f 72 74 20 66 69 6c 65 73 20 62 69 67 67 65 72 20 74 68 61 6e 20 34 47 42 2e 2e 2e 20 57 65 20 ort.files.bigger.than.4GB....We.
11860 65 76 65 6e 74 75 61 6c 6c 79 20 0a 09 20 20 20 73 75 70 70 6f 72 74 73 20 6a 75 73 74 20 34 47 eventually......supports.just.4G
11880 42 2e 2e 2e 20 2a 2f 0a 09 69 66 20 28 76 6d 61 5f 70 61 67 65 73 28 76 6d 61 29 20 2b 20 76 6d B....*/..if.(vma_pages(vma).+.vm
118a0 61 2d 3e 76 6d 5f 70 67 6f 66 66 0a 09 20 20 20 3e 20 28 31 55 20 3c 3c 20 28 33 32 20 2d 20 50 a->vm_pgoff.....>.(1U.<<.(32.-.P
118c0 41 47 45 5f 53 48 49 46 54 29 29 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 46 42 49 47 3b 0a 0a 09 AGE_SHIFT)))...return.-EFBIG;...
118e0 76 6d 61 2d 3e 76 6d 5f 6f 70 73 20 3d 20 26 6e 63 70 5f 66 69 6c 65 5f 6d 6d 61 70 3b 0a 09 66 vma->vm_ops.=.&ncp_file_mmap;..f
11900 69 6c 65 5f 61 63 63 65 73 73 65 64 28 66 69 6c 65 29 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d ile_accessed(file);..return.0;.}
11920 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
119a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
119c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
119e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11a00 6e 63 70 66 73 2f 6e 63 70 5f 66 73 2e 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ncpfs/ncp_fs.h..................
11a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11a60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 ....0000644.0001750.0001750.0000
11a80 30 30 30 35 35 32 30 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 32 36 31 31 00 20 30 00 00 00 0005520.13023323142.012611..0...
11aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11b00 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...kubax..................
11b20 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........kubax..................
11b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11c00 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6e 63 70 5f 66 73 2e 68 3e 0a 23 69 6e 63 6c 75 #include.<linux/ncp_fs.h>.#inclu
11c20 64 65 20 22 6e 63 70 5f 66 73 5f 69 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 6e 63 70 5f 66 73 de."ncp_fs_i.h".#include."ncp_fs
11c40 5f 73 62 2e 68 22 0a 0a 23 75 6e 64 65 66 20 4e 43 50 46 53 5f 50 41 52 41 4e 4f 49 41 0a 23 69 _sb.h"..#undef.NCPFS_PARANOIA.#i
11c60 66 64 65 66 20 4e 43 50 46 53 5f 50 41 52 41 4e 4f 49 41 0a 23 64 65 66 69 6e 65 20 6e 63 70 5f fdef.NCPFS_PARANOIA.#define.ncp_
11c80 76 64 62 67 28 66 6d 74 2c 20 2e 2e 2e 29 09 09 09 09 09 5c 0a 09 70 72 5f 64 65 62 75 67 28 66 vdbg(fmt,....).....\..pr_debug(f
11ca0 6d 74 2c 20 23 23 5f 5f 56 41 5f 41 52 47 53 5f 5f 29 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e 65 mt,.##__VA_ARGS__).#else.#define
11cc0 20 6e 63 70 5f 76 64 62 67 28 66 6d 74 2c 20 2e 2e 2e 29 09 09 09 09 09 5c 0a 64 6f 20 7b 09 09 .ncp_vdbg(fmt,....).....\.do.{..
11ce0 09 09 09 09 09 09 5c 0a 09 69 66 20 28 30 29 09 09 09 09 09 09 09 5c 0a 09 09 70 72 5f 64 65 62 ......\..if.(0).......\...pr_deb
11d00 75 67 28 66 6d 74 2c 20 23 23 5f 5f 56 41 5f 41 52 47 53 5f 5f 29 3b 09 09 09 5c 0a 7d 20 77 68 ug(fmt,.##__VA_ARGS__);...\.}.wh
11d20 69 6c 65 20 28 30 29 0a 23 65 6e 64 69 66 0a 0a 23 69 66 6e 64 65 66 20 44 45 42 55 47 5f 4e 43 ile.(0).#endif..#ifndef.DEBUG_NC
11d40 50 0a 23 64 65 66 69 6e 65 20 44 45 42 55 47 5f 4e 43 50 20 30 0a 23 65 6e 64 69 66 0a 0a 23 69 P.#define.DEBUG_NCP.0.#endif..#i
11d60 66 20 44 45 42 55 47 5f 4e 43 50 20 3e 20 30 20 26 26 20 21 64 65 66 69 6e 65 64 28 44 45 42 55 f.DEBUG_NCP.>.0.&&.!defined(DEBU
11d80 47 29 0a 23 64 65 66 69 6e 65 20 44 45 42 55 47 0a 23 65 6e 64 69 66 0a 0a 23 64 65 66 69 6e 65 G).#define.DEBUG.#endif..#define
11da0 20 6e 63 70 5f 64 62 67 28 6c 65 76 65 6c 2c 20 66 6d 74 2c 20 2e 2e 2e 29 09 09 09 09 5c 0a 64 .ncp_dbg(level,.fmt,....)....\.d
11dc0 6f 20 7b 09 09 09 09 09 09 09 09 5c 0a 09 69 66 20 28 6c 65 76 65 6c 20 3c 3d 20 44 45 42 55 47 o.{........\..if.(level.<=.DEBUG
11de0 5f 4e 43 50 29 09 09 09 09 09 5c 0a 09 09 70 72 5f 64 65 62 75 67 28 66 6d 74 2c 20 23 23 5f 5f _NCP).....\...pr_debug(fmt,.##__
11e00 56 41 5f 41 52 47 53 5f 5f 29 3b 09 09 09 5c 0a 7d 20 77 68 69 6c 65 20 28 30 29 0a 0a 23 64 65 VA_ARGS__);...\.}.while.(0)..#de
11e20 66 69 6e 65 20 4e 43 50 5f 4d 41 58 5f 52 50 43 5f 54 49 4d 45 4f 55 54 20 28 36 2a 48 5a 29 0a fine.NCP_MAX_RPC_TIMEOUT.(6*HZ).
11e40 0a 0a 73 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 7b 0a 09 73 74 72 75 63 ..struct.ncp_entry_info.{..struc
11e60 74 20 6e 77 5f 69 6e 66 6f 5f 73 74 72 75 63 74 09 69 3b 0a 09 69 6e 6f 5f 74 09 09 09 69 6e 6f t.nw_info_struct.i;..ino_t...ino
11e80 3b 0a 09 69 6e 74 09 09 09 6f 70 65 6e 65 64 3b 0a 09 69 6e 74 09 09 09 61 63 63 65 73 73 3b 0a ;..int...opened;..int...access;.
11ea0 09 75 6e 73 69 67 6e 65 64 20 69 6e 74 09 09 76 6f 6c 75 6d 65 3b 0a 09 5f 5f 75 38 09 09 09 66 .unsigned.int..volume;..__u8...f
11ec0 69 6c 65 5f 68 61 6e 64 6c 65 5b 36 5d 3b 0a 7d 3b 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 ile_handle[6];.};..static.inline
11ee0 20 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 4e 43 50 5f 53 42 50 28 63 6f 6e 73 .struct.ncp_server.*NCP_SBP(cons
11f00 74 20 73 74 72 75 63 74 20 73 75 70 65 72 5f 62 6c 6f 63 6b 20 2a 73 62 29 0a 7b 0a 09 72 65 74 t.struct.super_block.*sb).{..ret
11f20 75 72 6e 20 73 62 2d 3e 73 5f 66 73 5f 69 6e 66 6f 3b 0a 7d 0a 0a 23 64 65 66 69 6e 65 20 4e 43 urn.sb->s_fs_info;.}..#define.NC
11f40 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 09 4e 43 50 5f 53 42 50 28 28 69 6e 6f 64 65 29 2d P_SERVER(inode).NCP_SBP((inode)-
11f60 3e 69 5f 73 62 29 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 73 74 72 75 63 74 20 6e 63 70 5f >i_sb).static.inline.struct.ncp_
11f80 69 6e 6f 64 65 5f 69 6e 66 6f 20 2a 4e 43 50 5f 46 49 4e 46 4f 28 63 6f 6e 73 74 20 73 74 72 75 inode_info.*NCP_FINFO(const.stru
11fa0 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 29 0a 7b 0a 09 72 65 74 75 72 6e 20 63 6f 6e 74 61 ct.inode.*inode).{..return.conta
11fc0 69 6e 65 72 5f 6f 66 28 69 6e 6f 64 65 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 69 6e 6f 64 65 5f iner_of(inode,.struct.ncp_inode_
11fe0 69 6e 66 6f 2c 20 76 66 73 5f 69 6e 6f 64 65 29 3b 0a 7d 0a 0a 2f 2a 20 6c 69 6e 75 78 2f 66 73 info,.vfs_inode);.}../*.linux/fs
12000 2f 6e 63 70 66 73 2f 69 6e 6f 64 65 2e 63 20 2a 2f 0a 69 6e 74 20 6e 63 70 5f 6e 6f 74 69 66 79 /ncpfs/inode.c.*/.int.ncp_notify
12020 5f 63 68 61 6e 67 65 28 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 2c 20 73 74 72 75 63 74 20 _change(struct.dentry.*,.struct.
12040 69 61 74 74 72 20 2a 29 3b 0a 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 6e 63 70 5f 69 67 65 74 iattr.*);.struct.inode.*ncp_iget
12060 28 73 74 72 75 63 74 20 73 75 70 65 72 5f 62 6c 6f 63 6b 20 2a 2c 20 73 74 72 75 63 74 20 6e 63 (struct.super_block.*,.struct.nc
12080 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 2a 29 3b 0a 76 6f 69 64 20 6e 63 70 5f 75 70 64 61 74 65 p_entry_info.*);.void.ncp_update
120a0 5f 69 6e 6f 64 65 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 73 74 72 75 63 74 20 6e 63 _inode(struct.inode.*,.struct.nc
120c0 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 2a 29 3b 0a 76 6f 69 64 20 6e 63 70 5f 75 70 64 61 74 65 p_entry_info.*);.void.ncp_update
120e0 5f 69 6e 6f 64 65 32 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 73 74 72 75 63 74 20 6e _inode2(struct.inode.*,.struct.n
12100 63 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 2a 29 3b 0a 0a 2f 2a 20 6c 69 6e 75 78 2f 66 73 2f 6e cp_entry_info.*);../*.linux/fs/n
12120 63 70 66 73 2f 64 69 72 2e 63 20 2a 2f 0a 65 78 74 65 72 6e 20 63 6f 6e 73 74 20 73 74 72 75 63 cpfs/dir.c.*/.extern.const.struc
12140 74 20 69 6e 6f 64 65 5f 6f 70 65 72 61 74 69 6f 6e 73 20 6e 63 70 5f 64 69 72 5f 69 6e 6f 64 65 t.inode_operations.ncp_dir_inode
12160 5f 6f 70 65 72 61 74 69 6f 6e 73 3b 0a 65 78 74 65 72 6e 20 63 6f 6e 73 74 20 73 74 72 75 63 74 _operations;.extern.const.struct
12180 20 66 69 6c 65 5f 6f 70 65 72 61 74 69 6f 6e 73 20 6e 63 70 5f 64 69 72 5f 6f 70 65 72 61 74 69 .file_operations.ncp_dir_operati
121a0 6f 6e 73 3b 0a 65 78 74 65 72 6e 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 5f ons;.extern.const.struct.dentry_
121c0 6f 70 65 72 61 74 69 6f 6e 73 20 6e 63 70 5f 64 65 6e 74 72 79 5f 6f 70 65 72 61 74 69 6f 6e 73 operations.ncp_dentry_operations
121e0 3b 0a 69 6e 74 20 6e 63 70 5f 63 6f 6e 6e 5f 6c 6f 67 67 65 64 5f 69 6e 28 73 74 72 75 63 74 20 ;.int.ncp_conn_logged_in(struct.
12200 73 75 70 65 72 5f 62 6c 6f 63 6b 20 2a 29 3b 0a 69 6e 74 20 6e 63 70 5f 64 61 74 65 5f 64 6f 73 super_block.*);.int.ncp_date_dos
12220 32 75 6e 69 78 28 5f 5f 6c 65 31 36 20 74 69 6d 65 2c 20 5f 5f 6c 65 31 36 20 64 61 74 65 29 3b 2unix(__le16.time,.__le16.date);
12240 0a 76 6f 69 64 20 6e 63 70 5f 64 61 74 65 5f 75 6e 69 78 32 64 6f 73 28 69 6e 74 20 75 6e 69 78 .void.ncp_date_unix2dos(int.unix
12260 5f 64 61 74 65 2c 20 5f 5f 6c 65 31 36 20 2a 20 74 69 6d 65 2c 20 5f 5f 6c 65 31 36 20 2a 20 64 _date,.__le16.*.time,.__le16.*.d
12280 61 74 65 29 3b 0a 0a 2f 2a 20 6c 69 6e 75 78 2f 66 73 2f 6e 63 70 66 73 2f 69 6f 63 74 6c 2e 63 ate);../*.linux/fs/ncpfs/ioctl.c
122a0 20 2a 2f 0a 6c 6f 6e 67 20 6e 63 70 5f 69 6f 63 74 6c 28 73 74 72 75 63 74 20 66 69 6c 65 20 2a .*/.long.ncp_ioctl(struct.file.*
122c0 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 2c 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 3b 0a ,.unsigned.int,.unsigned.long);.
122e0 6c 6f 6e 67 20 6e 63 70 5f 63 6f 6d 70 61 74 5f 69 6f 63 74 6c 28 73 74 72 75 63 74 20 66 69 6c long.ncp_compat_ioctl(struct.fil
12300 65 20 2a 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 2c 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 e.*,.unsigned.int,.unsigned.long
12320 29 3b 0a 0a 2f 2a 20 6c 69 6e 75 78 2f 66 73 2f 6e 63 70 66 73 2f 73 6f 63 6b 2e 63 20 2a 2f 0a );../*.linux/fs/ncpfs/sock.c.*/.
12340 69 6e 74 20 6e 63 70 5f 72 65 71 75 65 73 74 32 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 int.ncp_request2(struct.ncp_serv
12360 65 72 20 2a 73 65 72 76 65 72 2c 20 69 6e 74 20 66 75 6e 63 74 69 6f 6e 2c 0a 09 76 6f 69 64 2a er.*server,.int.function,..void*
12380 20 72 65 70 6c 79 2c 20 69 6e 74 20 6d 61 78 5f 72 65 70 6c 79 5f 73 69 7a 65 29 3b 0a 73 74 61 .reply,.int.max_reply_size);.sta
123a0 74 69 63 20 69 6e 6c 69 6e 65 20 69 6e 74 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 74 72 75 63 tic.inline.int.ncp_request(struc
123c0 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 69 6e 74 20 66 75 6e 63 74 69 t.ncp_server.*server,.int.functi
123e0 6f 6e 29 20 7b 0a 09 72 65 74 75 72 6e 20 6e 63 70 5f 72 65 71 75 65 73 74 32 28 73 65 72 76 65 on).{..return.ncp_request2(serve
12400 72 2c 20 66 75 6e 63 74 69 6f 6e 2c 20 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 2c 20 73 65 72 r,.function,.server->packet,.ser
12420 76 65 72 2d 3e 70 61 63 6b 65 74 5f 73 69 7a 65 29 3b 0a 7d 0a 69 6e 74 20 6e 63 70 5f 63 6f 6e ver->packet_size);.}.int.ncp_con
12440 6e 65 63 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 3b nect(struct.ncp_server.*server);
12460 0a 69 6e 74 20 6e 63 70 5f 64 69 73 63 6f 6e 6e 65 63 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 .int.ncp_disconnect(struct.ncp_s
12480 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 3b 0a 76 6f 69 64 20 6e 63 70 5f 6c 6f 63 6b 5f 73 65 erver.*server);.void.ncp_lock_se
124a0 72 76 65 72 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 3b rver(struct.ncp_server.*server);
124c0 0a 76 6f 69 64 20 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 74 72 75 63 74 20 6e .void.ncp_unlock_server(struct.n
124e0 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 3b 0a 0a 2f 2a 20 6c 69 6e 75 78 2f 66 73 cp_server.*server);../*.linux/fs
12500 2f 6e 63 70 66 73 2f 73 79 6d 6c 69 6e 6b 2e 63 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28 /ncpfs/symlink.c.*/.#if.defined(
12520 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 45 58 54 52 41 53 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 CONFIG_NCPFS_EXTRAS).||.defined(
12540 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 29 0a 65 78 74 65 72 6e 20 63 6f 6e 73 CONFIG_NCPFS_NFS_NS).extern.cons
12560 74 20 73 74 72 75 63 74 20 61 64 64 72 65 73 73 5f 73 70 61 63 65 5f 6f 70 65 72 61 74 69 6f 6e t.struct.address_space_operation
12580 73 20 6e 63 70 5f 73 79 6d 6c 69 6e 6b 5f 61 6f 70 73 3b 0a 69 6e 74 20 6e 63 70 5f 73 79 6d 6c s.ncp_symlink_aops;.int.ncp_syml
125a0 69 6e 6b 28 73 74 72 75 63 74 20 69 6e 6f 64 65 2a 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 ink(struct.inode*,.struct.dentry
125c0 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a 29 3b 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 6c 69 6e 75 *,.const.char*);.#endif../*.linu
125e0 78 2f 66 73 2f 6e 63 70 66 73 2f 66 69 6c 65 2e 63 20 2a 2f 0a 65 78 74 65 72 6e 20 63 6f 6e 73 x/fs/ncpfs/file.c.*/.extern.cons
12600 74 20 73 74 72 75 63 74 20 69 6e 6f 64 65 5f 6f 70 65 72 61 74 69 6f 6e 73 20 6e 63 70 5f 66 69 t.struct.inode_operations.ncp_fi
12620 6c 65 5f 69 6e 6f 64 65 5f 6f 70 65 72 61 74 69 6f 6e 73 3b 0a 65 78 74 65 72 6e 20 63 6f 6e 73 le_inode_operations;.extern.cons
12640 74 20 73 74 72 75 63 74 20 66 69 6c 65 5f 6f 70 65 72 61 74 69 6f 6e 73 20 6e 63 70 5f 66 69 6c t.struct.file_operations.ncp_fil
12660 65 5f 6f 70 65 72 61 74 69 6f 6e 73 3b 0a 69 6e 74 20 6e 63 70 5f 6d 61 6b 65 5f 6f 70 65 6e 28 e_operations;.int.ncp_make_open(
12680 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 69 6e 74 29 3b 0a 0a 2f 2a 20 6c 69 6e 75 78 2f struct.inode.*,.int);../*.linux/
126a0 66 73 2f 6e 63 70 66 73 2f 6d 6d 61 70 2e 63 20 2a 2f 0a 69 6e 74 20 6e 63 70 5f 6d 6d 61 70 28 fs/ncpfs/mmap.c.*/.int.ncp_mmap(
126c0 73 74 72 75 63 74 20 66 69 6c 65 20 2a 2c 20 73 74 72 75 63 74 20 76 6d 5f 61 72 65 61 5f 73 74 struct.file.*,.struct.vm_area_st
126e0 72 75 63 74 20 2a 29 3b 0a 0a 2f 2a 20 6c 69 6e 75 78 2f 66 73 2f 6e 63 70 66 73 2f 6e 63 70 6c ruct.*);../*.linux/fs/ncpfs/ncpl
12700 69 62 5f 6b 65 72 6e 65 6c 2e 63 20 2a 2f 0a 69 6e 74 20 6e 63 70 5f 6d 61 6b 65 5f 63 6c 6f 73 ib_kernel.c.*/.int.ncp_make_clos
12720 65 64 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 29 3b 0a 0a 23 69 6e 63 6c 75 64 65 20 22 6e ed(struct.inode.*);..#include."n
12740 63 70 6c 69 62 5f 6b 65 72 6e 65 6c 2e 68 22 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 cplib_kernel.h".................
12760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
127a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
127c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
127e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12800 6e 63 70 66 73 2f 6e 63 70 5f 66 73 5f 69 2e 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ncpfs/ncp_fs_i.h................
12820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12860 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 ....0000644.0001750.0001750.0000
12880 30 30 30 31 30 37 33 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 33 31 32 30 00 20 30 00 00 00 0001073.13023323142.013120..0...
128a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
128c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
128e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12900 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...kubax..................
12920 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........kubax..................
12940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
129a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
129c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
129e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12a00 2f 2a 0a 20 2a 20 20 6e 63 70 5f 66 73 5f 69 2e 68 0a 20 2a 0a 20 2a 20 20 43 6f 70 79 72 69 67 /*..*..ncp_fs_i.h..*..*..Copyrig
12a20 68 74 20 28 43 29 20 31 39 39 35 20 56 6f 6c 6b 65 72 20 4c 65 6e 64 65 63 6b 65 0a 20 2a 0a 20 ht.(C).1995.Volker.Lendecke..*..
12a40 2a 2f 0a 0a 23 69 66 6e 64 65 66 20 5f 4c 49 4e 55 58 5f 4e 43 50 5f 46 53 5f 49 0a 23 64 65 66 */..#ifndef._LINUX_NCP_FS_I.#def
12a60 69 6e 65 20 5f 4c 49 4e 55 58 5f 4e 43 50 5f 46 53 5f 49 0a 0a 2f 2a 0a 20 2a 20 54 68 69 73 20 ine._LINUX_NCP_FS_I../*..*.This.
12a80 69 73 20 74 68 65 20 6e 63 70 66 73 20 70 61 72 74 20 6f 66 20 74 68 65 20 69 6e 6f 64 65 20 73 is.the.ncpfs.part.of.the.inode.s
12aa0 74 72 75 63 74 75 72 65 2e 20 54 68 69 73 20 6d 75 73 74 20 63 6f 6e 74 61 69 6e 0a 20 2a 20 61 tructure..This.must.contain..*.a
12ac0 6c 6c 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 77 65 20 6e 65 65 64 20 74 6f 20 77 6f ll.the.information.we.need.to.wo
12ae0 72 6b 20 77 69 74 68 20 61 6e 20 69 6e 6f 64 65 20 61 66 74 65 72 20 63 72 65 61 74 69 6f 6e 2e rk.with.an.inode.after.creation.
12b00 0a 20 2a 2f 0a 73 74 72 75 63 74 20 6e 63 70 5f 69 6e 6f 64 65 5f 69 6e 66 6f 20 7b 0a 09 5f 5f ..*/.struct.ncp_inode_info.{..__
12b20 6c 65 33 32 09 64 69 72 45 6e 74 4e 75 6d 3b 0a 09 5f 5f 6c 65 33 32 09 44 6f 73 44 69 72 4e 75 le32.dirEntNum;..__le32.DosDirNu
12b40 6d 3b 0a 09 5f 5f 75 38 09 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 5f 5f 6c 65 33 32 09 6e 77 61 74 m;..__u8.volNumber;..__le32.nwat
12b60 74 72 3b 0a 09 73 74 72 75 63 74 20 6d 75 74 65 78 20 6f 70 65 6e 5f 6d 75 74 65 78 3b 0a 09 61 tr;..struct.mutex.open_mutex;..a
12b80 74 6f 6d 69 63 5f 74 09 6f 70 65 6e 65 64 3b 0a 09 69 6e 74 09 61 63 63 65 73 73 3b 0a 09 69 6e tomic_t.opened;..int.access;..in
12ba0 74 09 66 6c 61 67 73 3b 0a 23 64 65 66 69 6e 65 20 4e 43 50 49 5f 4b 4c 55 44 47 45 5f 53 59 4d t.flags;.#define.NCPI_KLUDGE_SYM
12bc0 4c 49 4e 4b 09 30 78 30 30 30 31 0a 23 64 65 66 69 6e 65 20 4e 43 50 49 5f 44 49 52 5f 43 41 43 LINK.0x0001.#define.NCPI_DIR_CAC
12be0 48 45 09 09 30 78 30 30 30 32 0a 09 5f 5f 75 38 09 66 69 6c 65 5f 68 61 6e 64 6c 65 5b 36 5d 3b HE..0x0002..__u8.file_handle[6];
12c00 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 76 66 73 5f 69 6e 6f 64 65 3b 0a 7d 3b 0a 0a 23 65 ..struct.inode.vfs_inode;.};..#e
12c20 6e 64 69 66 09 2f 2a 20 5f 4c 49 4e 55 58 5f 4e 43 50 5f 46 53 5f 49 20 2a 2f 0a 00 00 00 00 00 ndif./*._LINUX_NCP_FS_I.*/......
12c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12e00 6e 63 70 66 73 2f 6e 63 70 5f 66 73 5f 73 62 2e 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ncpfs/ncp_fs_sb.h...............
12e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12e60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 ....0000644.0001750.0001750.0000
12e80 30 30 31 32 30 33 37 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 33 32 37 36 00 20 30 00 00 00 0012037.13023323142.013276..0...
12ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12f00 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...kubax..................
12f20 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........kubax..................
12f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13000 2f 2a 0a 20 2a 20 20 6e 63 70 5f 66 73 5f 73 62 2e 68 0a 20 2a 0a 20 2a 20 20 43 6f 70 79 72 69 /*..*..ncp_fs_sb.h..*..*..Copyri
13020 67 68 74 20 28 43 29 20 31 39 39 35 2c 20 31 39 39 36 20 62 79 20 56 6f 6c 6b 65 72 20 4c 65 6e ght.(C).1995,.1996.by.Volker.Len
13040 64 65 63 6b 65 0a 20 2a 0a 20 2a 2f 0a 0a 23 69 66 6e 64 65 66 20 5f 4e 43 50 5f 46 53 5f 53 42 decke..*..*/..#ifndef._NCP_FS_SB
13060 0a 23 64 65 66 69 6e 65 20 5f 4e 43 50 5f 46 53 5f 53 42 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 6c .#define._NCP_FS_SB..#include.<l
13080 69 6e 75 78 2f 74 79 70 65 73 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6e 63 inux/types.h>.#include.<linux/nc
130a0 70 5f 6d 6f 75 6e 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6e 65 74 2e 68 p_mount.h>.#include.<linux/net.h
130c0 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6d 75 74 65 78 2e 68 3e 0a 23 69 6e 63 6c >.#include.<linux/mutex.h>.#incl
130e0 75 64 65 20 3c 6c 69 6e 75 78 2f 62 61 63 6b 69 6e 67 2d 64 65 76 2e 68 3e 0a 23 69 6e 63 6c 75 ude.<linux/backing-dev.h>.#inclu
13100 64 65 20 3c 6c 69 6e 75 78 2f 77 6f 72 6b 71 75 65 75 65 2e 68 3e 0a 0a 23 64 65 66 69 6e 65 20 de.<linux/workqueue.h>..#define.
13120 4e 43 50 5f 44 45 46 41 55 4c 54 5f 4f 50 54 49 4f 4e 53 20 30 09 09 2f 2a 20 32 20 66 6f 72 20 NCP_DEFAULT_OPTIONS.0../*.2.for.
13140 70 61 63 6b 65 74 20 73 69 67 6e 61 74 75 72 65 73 20 2a 2f 0a 0a 73 74 72 75 63 74 20 73 6f 63 packet.signatures.*/..struct.soc
13160 6b 3b 0a 0a 73 74 72 75 63 74 20 6e 63 70 5f 6d 6f 75 6e 74 5f 64 61 74 61 5f 6b 65 72 6e 65 6c k;..struct.ncp_mount_data_kernel
13180 20 7b 0a 09 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 20 20 20 66 6c 61 67 73 3b 09 09 2f 2a 20 .{..unsigned.long....flags;../*.
131a0 4e 43 50 5f 4d 4f 55 4e 54 5f 2a 20 66 6c 61 67 73 20 2a 2f 0a 09 75 6e 73 69 67 6e 65 64 20 69 NCP_MOUNT_*.flags.*/..unsigned.i
131c0 6e 74 09 20 69 6e 74 5f 66 6c 61 67 73 3b 09 2f 2a 20 69 6e 74 65 72 6e 61 6c 20 66 6c 61 67 73 nt..int_flags;./*.internal.flags
131e0 20 2a 2f 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 49 4d 4f 55 4e 54 5f 4c 4f 47 47 45 44 49 4e 5f .*/.#define.NCP_IMOUNT_LOGGEDIN_
13200 50 4f 53 53 49 42 4c 45 09 30 78 30 30 30 31 0a 09 6b 75 69 64 5f 74 09 09 20 6d 6f 75 6e 74 65 POSSIBLE.0x0001..kuid_t...mounte
13220 64 5f 75 69 64 3b 09 2f 2a 20 57 68 6f 20 6d 61 79 20 75 6d 6f 75 6e 74 28 29 20 74 68 69 73 20 d_uid;./*.Who.may.umount().this.
13240 66 69 6c 65 73 79 73 74 65 6d 3f 20 2a 2f 0a 09 73 74 72 75 63 74 20 70 69 64 20 20 20 20 20 20 filesystem?.*/..struct.pid......
13260 2a 77 64 6f 67 5f 70 69 64 3b 09 2f 2a 20 57 68 6f 20 63 61 72 65 73 20 66 6f 72 20 6f 75 72 20 *wdog_pid;./*.Who.cares.for.our.
13280 77 61 74 63 68 64 6f 67 20 70 61 63 6b 65 74 73 3f 20 2a 2f 0a 09 75 6e 73 69 67 6e 65 64 20 69 watchdog.packets?.*/..unsigned.i
132a0 6e 74 20 20 20 20 20 6e 63 70 5f 66 64 3b 09 2f 2a 20 54 68 65 20 73 6f 63 6b 65 74 20 74 6f 20 nt.....ncp_fd;./*.The.socket.to.
132c0 74 68 65 20 6e 63 70 20 70 6f 72 74 20 2a 2f 0a 09 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 20 20 the.ncp.port.*/..unsigned.int...
132e0 20 20 74 69 6d 65 5f 6f 75 74 3b 09 2f 2a 20 48 6f 77 20 6c 6f 6e 67 20 73 68 6f 75 6c 64 20 49 ..time_out;./*.How.long.should.I
13300 20 77 61 69 74 20 61 66 74 65 72 0a 09 09 09 09 09 20 20 20 73 65 6e 64 69 6e 67 20 61 20 4e 43 .wait.after.........sending.a.NC
13320 50 20 72 65 71 75 65 73 74 3f 20 2a 2f 0a 09 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 20 20 20 20 P.request?.*/..unsigned.int.....
13340 72 65 74 72 79 5f 63 6f 75 6e 74 3b 09 2f 2a 20 41 6e 64 20 68 6f 77 20 6f 66 74 65 6e 20 73 68 retry_count;./*.And.how.often.sh
13360 6f 75 6c 64 20 49 20 72 65 74 72 79 3f 20 2a 2f 0a 09 75 6e 73 69 67 6e 65 64 20 63 68 61 72 09 ould.I.retry?.*/..unsigned.char.
13380 20 6d 6f 75 6e 74 65 64 5f 76 6f 6c 5b 4e 43 50 5f 56 4f 4c 4e 41 4d 45 5f 4c 45 4e 20 2b 20 31 .mounted_vol[NCP_VOLNAME_LEN.+.1
133a0 5d 3b 0a 09 6b 75 69 64 5f 74 09 09 20 75 69 64 3b 0a 09 6b 67 69 64 5f 74 09 09 20 67 69 64 3b ];..kuid_t...uid;..kgid_t...gid;
133c0 0a 09 75 6d 6f 64 65 5f 74 09 09 20 66 69 6c 65 5f 6d 6f 64 65 3b 0a 09 75 6d 6f 64 65 5f 74 09 ..umode_t...file_mode;..umode_t.
133e0 09 20 64 69 72 5f 6d 6f 64 65 3b 0a 09 69 6e 74 09 09 20 69 6e 66 6f 5f 66 64 3b 0a 7d 3b 0a 0a ..dir_mode;..int...info_fd;.};..
13400 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 7b 0a 09 73 74 72 75 63 74 20 72 63 75 5f struct.ncp_server.{..struct.rcu_
13420 68 65 61 64 20 72 63 75 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 6d 6f 75 6e 74 5f 64 61 74 61 head.rcu;..struct.ncp_mount_data
13440 5f 6b 65 72 6e 65 6c 20 6d 3b 09 2f 2a 20 4e 65 61 72 6c 79 20 61 6c 6c 20 6f 66 20 74 68 65 20 _kernel.m;./*.Nearly.all.of.the.
13460 6d 6f 75 6e 74 20 64 61 74 61 20 69 73 20 6f 66 0a 09 09 09 09 09 20 20 20 69 6e 74 65 72 65 73 mount.data.is.of.........interes
13480 74 20 66 6f 72 20 75 73 20 6c 61 74 65 72 2c 20 73 6f 20 77 65 20 73 74 6f 72 65 0a 09 09 09 09 t.for.us.later,.so.we.store.....
134a0 09 20 20 20 69 74 20 63 6f 6d 70 6c 65 74 65 6c 79 2e 20 2a 2f 0a 0a 09 5f 5f 75 38 20 6e 61 6d ....it.completely..*/...__u8.nam
134c0 65 5f 73 70 61 63 65 5b 4e 43 50 5f 4e 55 4d 42 45 52 5f 4f 46 5f 56 4f 4c 55 4d 45 53 20 2b 20 e_space[NCP_NUMBER_OF_VOLUMES.+.
134e0 32 5d 3b 0a 0a 09 73 74 72 75 63 74 20 73 6f 63 6b 65 74 20 2a 6e 63 70 5f 73 6f 63 6b 3b 2f 2a 2];...struct.socket.*ncp_sock;/*
13500 20 6e 63 70 20 73 6f 63 6b 65 74 20 2a 2f 0a 09 73 74 72 75 63 74 20 73 6f 63 6b 65 74 20 2a 69 .ncp.socket.*/..struct.socket.*i
13520 6e 66 6f 5f 73 6f 63 6b 3b 0a 0a 09 75 38 20 73 65 71 75 65 6e 63 65 3b 0a 09 75 38 20 74 61 73 nfo_sock;...u8.sequence;..u8.tas
13540 6b 3b 0a 09 75 31 36 20 63 6f 6e 6e 65 63 74 69 6f 6e 3b 09 09 2f 2a 20 52 65 6d 6f 74 65 20 63 k;..u16.connection;../*.Remote.c
13560 6f 6e 6e 65 63 74 69 6f 6e 20 6e 75 6d 62 65 72 20 2a 2f 0a 0a 09 75 38 20 63 6f 6d 70 6c 65 74 onnection.number.*/...u8.complet
13580 69 6f 6e 3b 09 09 2f 2a 20 53 74 61 74 75 73 20 6d 65 73 73 61 67 65 20 66 72 6f 6d 20 73 65 72 ion;../*.Status.message.from.ser
135a0 76 65 72 20 2a 2f 0a 09 75 38 20 63 6f 6e 6e 5f 73 74 61 74 75 73 3b 09 09 2f 2a 20 42 69 74 20 ver.*/..u8.conn_status;../*.Bit.
135c0 34 20 3d 20 31 20 3d 3d 3e 20 53 65 72 76 65 72 20 67 6f 69 6e 67 20 64 6f 77 6e 2c 20 6e 6f 0a 4.=.1.==>.Server.going.down,.no.
135e0 09 09 09 09 20 20 20 72 65 71 75 65 73 74 73 20 61 6c 6c 6f 77 65 64 20 61 6e 79 6d 6f 72 65 2e .......requests.allowed.anymore.
13600 0a 09 09 09 09 20 20 20 42 69 74 20 30 20 3d 20 31 20 3d 3d 3e 20 53 65 72 76 65 72 20 69 73 20 ........Bit.0.=.1.==>.Server.is.
13620 64 6f 77 6e 2e 20 2a 2f 0a 0a 09 69 6e 74 20 62 75 66 66 65 72 5f 73 69 7a 65 3b 09 2f 2a 20 4e down..*/...int.buffer_size;./*.N
13640 65 67 6f 74 69 61 74 65 64 20 62 75 66 73 69 7a 65 20 2a 2f 0a 0a 09 69 6e 74 20 72 65 70 6c 79 egotiated.bufsize.*/...int.reply
13660 5f 73 69 7a 65 3b 09 09 2f 2a 20 53 69 7a 65 20 6f 66 20 6c 61 73 74 20 72 65 70 6c 79 20 2a 2f _size;../*.Size.of.last.reply.*/
13680 0a 0a 09 69 6e 74 20 70 61 63 6b 65 74 5f 73 69 7a 65 3b 0a 09 75 6e 73 69 67 6e 65 64 20 63 68 ...int.packet_size;..unsigned.ch
136a0 61 72 20 2a 70 61 63 6b 65 74 3b 09 2f 2a 20 48 65 72 65 20 77 65 20 70 72 65 70 61 72 65 20 72 ar.*packet;./*.Here.we.prepare.r
136c0 65 71 75 65 73 74 73 20 61 6e 64 0a 09 09 09 09 20 20 20 72 65 63 65 69 76 65 20 72 65 70 6c 69 equests.and........receive.repli
136e0 65 73 20 2a 2f 0a 09 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 74 78 62 75 66 3b 09 2f 2a 20 es.*/..unsigned.char.*txbuf;./*.
13700 53 74 6f 72 61 67 65 20 66 6f 72 20 63 75 72 72 65 6e 74 20 72 65 71 75 65 73 74 20 2a 2f 0a 09 Storage.for.current.request.*/..
13720 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 72 78 62 75 66 3b 09 2f 2a 20 53 74 6f 72 61 67 65 unsigned.char.*rxbuf;./*.Storage
13740 20 66 6f 72 20 72 65 70 6c 79 20 74 6f 20 63 75 72 72 65 6e 74 20 72 65 71 75 65 73 74 20 2a 2f .for.reply.to.current.request.*/
13760 0a 0a 09 69 6e 74 20 6c 6f 63 6b 3b 09 09 2f 2a 20 54 6f 20 70 72 65 76 65 6e 74 20 6d 69 73 6d ...int.lock;../*.To.prevent.mism
13780 61 74 63 68 20 69 6e 20 70 72 6f 74 6f 63 6f 6c 73 2e 20 2a 2f 0a 09 73 74 72 75 63 74 20 6d 75 atch.in.protocols..*/..struct.mu
137a0 74 65 78 20 6d 75 74 65 78 3b 0a 0a 09 69 6e 74 20 63 75 72 72 65 6e 74 5f 73 69 7a 65 3b 09 2f tex.mutex;...int.current_size;./
137c0 2a 20 66 6f 72 20 70 61 63 6b 65 74 20 70 72 65 70 61 72 61 74 69 6f 6e 20 2a 2f 0a 09 69 6e 74 *.for.packet.preparation.*/..int
137e0 20 68 61 73 5f 73 75 62 66 75 6e 63 74 69 6f 6e 3b 0a 09 69 6e 74 20 6e 63 70 5f 72 65 70 6c 79 .has_subfunction;..int.ncp_reply
13800 5f 73 69 7a 65 3b 0a 0a 09 69 6e 74 20 72 6f 6f 74 5f 73 65 74 75 70 65 64 3b 0a 09 73 74 72 75 _size;...int.root_setuped;..stru
13820 63 74 20 6d 75 74 65 78 20 72 6f 6f 74 5f 73 65 74 75 70 5f 6c 6f 63 6b 3b 0a 0a 09 2f 2a 20 69 ct.mutex.root_setup_lock;.../*.i
13840 6e 66 6f 20 66 6f 72 20 70 61 63 6b 65 74 20 73 69 67 6e 69 6e 67 20 2a 2f 0a 09 69 6e 74 20 73 nfo.for.packet.signing.*/..int.s
13860 69 67 6e 5f 77 61 6e 74 65 64 3b 09 2f 2a 20 31 3d 53 65 72 76 65 72 20 6e 65 65 64 73 20 73 69 ign_wanted;./*.1=Server.needs.si
13880 67 6e 65 64 20 70 61 63 6b 65 74 73 20 2a 2f 0a 09 69 6e 74 20 73 69 67 6e 5f 61 63 74 69 76 65 gned.packets.*/..int.sign_active
138a0 3b 09 2f 2a 20 30 3d 64 6f 6e 27 74 20 64 6f 20 73 69 67 6e 69 6e 67 2c 20 31 3d 64 6f 20 2a 2f ;./*.0=don't.do.signing,.1=do.*/
138c0 0a 09 63 68 61 72 20 73 69 67 6e 5f 72 6f 6f 74 5b 38 5d 3b 09 2f 2a 20 67 65 6e 65 72 61 74 65 ..char.sign_root[8];./*.generate
138e0 64 20 66 72 6f 6d 20 70 61 73 73 77 6f 72 64 20 61 6e 64 20 65 6e 63 72 2e 20 6b 65 79 20 2a 2f d.from.password.and.encr..key.*/
13900 0a 09 63 68 61 72 20 73 69 67 6e 5f 6c 61 73 74 5b 31 36 5d 3b 09 0a 0a 09 2f 2a 20 41 75 74 68 ..char.sign_last[16];..../*.Auth
13920 65 6e 74 69 63 61 74 69 6f 6e 20 69 6e 66 6f 3a 20 4e 44 53 20 6f 72 20 42 49 4e 44 45 52 59 2c entication.info:.NDS.or.BINDERY,
13940 20 75 73 65 72 6e 61 6d 65 20 2a 2f 0a 09 73 74 72 75 63 74 20 7b 0a 09 09 69 6e 74 09 61 75 74 .username.*/..struct.{...int.aut
13960 68 5f 74 79 70 65 3b 0a 09 09 73 69 7a 65 5f 74 09 6f 62 6a 65 63 74 5f 6e 61 6d 65 5f 6c 65 6e h_type;...size_t.object_name_len
13980 3b 0a 09 09 76 6f 69 64 2a 09 6f 62 6a 65 63 74 5f 6e 61 6d 65 3b 0a 09 09 69 6e 74 09 6f 62 6a ;...void*.object_name;...int.obj
139a0 65 63 74 5f 74 79 70 65 3b 0a 09 7d 20 61 75 74 68 3b 0a 09 2f 2a 20 50 61 73 73 77 6f 72 64 20 ect_type;..}.auth;../*.Password.
139c0 69 6e 66 6f 20 2a 2f 0a 09 73 74 72 75 63 74 20 7b 0a 09 09 73 69 7a 65 5f 74 09 6c 65 6e 3b 0a info.*/..struct.{...size_t.len;.
139e0 09 09 76 6f 69 64 2a 09 64 61 74 61 3b 0a 09 7d 20 70 72 69 76 3b 0a 09 73 74 72 75 63 74 20 72 ..void*.data;..}.priv;..struct.r
13a00 77 5f 73 65 6d 61 70 68 6f 72 65 20 61 75 74 68 5f 72 77 73 65 6d 3b 0a 0a 09 2f 2a 20 6e 6c 73 w_semaphore.auth_rwsem;.../*.nls
13a20 20 69 6e 66 6f 3a 20 63 6f 64 65 70 61 67 65 20 66 6f 72 20 76 6f 6c 75 6d 65 20 61 6e 64 20 63 .info:.codepage.for.volume.and.c
13a40 68 61 72 73 65 74 20 66 6f 72 20 49 2f 4f 20 2a 2f 0a 09 73 74 72 75 63 74 20 6e 6c 73 5f 74 61 harset.for.I/O.*/..struct.nls_ta
13a60 62 6c 65 20 2a 6e 6c 73 5f 76 6f 6c 3b 0a 09 73 74 72 75 63 74 20 6e 6c 73 5f 74 61 62 6c 65 20 ble.*nls_vol;..struct.nls_table.
13a80 2a 6e 6c 73 5f 69 6f 3b 0a 0a 09 2f 2a 20 6d 61 78 69 6d 75 6d 20 61 67 65 20 69 6e 20 6a 69 66 *nls_io;.../*.maximum.age.in.jif
13aa0 66 69 65 73 20 2a 2f 0a 09 61 74 6f 6d 69 63 5f 74 20 64 65 6e 74 72 79 5f 74 74 6c 3b 0a 0a 09 fies.*/..atomic_t.dentry_ttl;...
13ac0 2f 2a 20 6d 69 73 63 65 6c 6c 61 6e 65 6f 75 73 20 2a 2f 0a 09 75 6e 73 69 67 6e 65 64 20 69 6e /*.miscellaneous.*/..unsigned.in
13ae0 74 20 66 6c 61 67 73 3b 0a 0a 09 73 70 69 6e 6c 6f 63 6b 5f 74 20 72 65 71 75 65 73 74 73 5f 6c t.flags;...spinlock_t.requests_l
13b00 6f 63 6b 3b 09 2f 2a 20 4c 6f 63 6b 20 61 63 63 65 73 73 65 73 20 74 6f 20 74 78 2e 72 65 71 75 ock;./*.Lock.accesses.to.tx.requ
13b20 65 73 74 73 2c 20 74 78 2e 63 72 65 71 20 61 6e 64 20 72 63 76 2e 63 72 65 71 20 77 68 65 6e 20 ests,.tx.creq.and.rcv.creq.when.
13b40 53 54 52 45 41 4d 20 6d 6f 64 65 20 2a 2f 0a 0a 09 76 6f 69 64 20 28 2a 64 61 74 61 5f 72 65 61 STREAM.mode.*/...void.(*data_rea
13b60 64 79 29 28 73 74 72 75 63 74 20 73 6f 63 6b 2a 20 73 6b 29 3b 0a 09 76 6f 69 64 20 28 2a 65 72 dy)(struct.sock*.sk);..void.(*er
13b80 72 6f 72 5f 72 65 70 6f 72 74 29 28 73 74 72 75 63 74 20 73 6f 63 6b 2a 20 73 6b 29 3b 0a 09 76 ror_report)(struct.sock*.sk);..v
13ba0 6f 69 64 20 28 2a 77 72 69 74 65 5f 73 70 61 63 65 29 28 73 74 72 75 63 74 20 73 6f 63 6b 2a 20 oid.(*write_space)(struct.sock*.
13bc0 73 6b 29 3b 09 2f 2a 20 53 54 52 45 41 4d 20 6d 6f 64 65 20 6f 6e 6c 79 20 2a 2f 0a 09 73 74 72 sk);./*.STREAM.mode.only.*/..str
13be0 75 63 74 20 7b 0a 09 09 73 74 72 75 63 74 20 77 6f 72 6b 5f 73 74 72 75 63 74 20 74 71 3b 09 09 uct.{...struct.work_struct.tq;..
13c00 2f 2a 20 53 54 52 45 41 4d 2f 44 47 52 41 4d 3a 20 64 61 74 61 2f 65 72 72 6f 72 20 72 65 61 64 /*.STREAM/DGRAM:.data/error.read
13c20 79 20 2a 2f 0a 09 09 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 2a y.*/...struct.ncp_request_reply*
13c40 20 63 72 65 71 3b 09 2f 2a 20 53 54 52 45 41 4d 2f 44 47 52 41 4d 3a 20 61 77 61 69 74 69 6e 67 .creq;./*.STREAM/DGRAM:.awaiting
13c60 20 72 65 70 6c 79 20 66 72 6f 6d 20 74 68 69 73 20 72 65 71 75 65 73 74 20 2a 2f 0a 09 09 73 74 .reply.from.this.request.*/...st
13c80 72 75 63 74 20 6d 75 74 65 78 20 63 72 65 71 5f 6d 75 74 65 78 3b 09 2f 2a 20 44 47 52 41 4d 20 ruct.mutex.creq_mutex;./*.DGRAM.
13ca0 6f 6e 6c 79 3a 20 6c 6f 63 6b 20 61 63 63 65 73 73 65 73 20 74 6f 20 72 63 76 2e 63 72 65 71 20 only:.lock.accesses.to.rcv.creq.
13cc0 2a 2f 0a 0a 09 09 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 73 74 61 74 65 3b 09 09 2f 2a 20 53 54 */....unsigned.int.state;../*.ST
13ce0 52 45 41 4d 20 6f 6e 6c 79 3a 20 72 65 63 65 69 76 65 72 20 73 74 61 74 65 20 2a 2f 0a 09 09 73 REAM.only:.receiver.state.*/...s
13d00 74 72 75 63 74 20 7b 0a 09 09 09 5f 5f 75 33 32 20 6d 61 67 69 63 20 5f 5f 70 61 63 6b 65 64 3b truct.{....__u32.magic.__packed;
13d20 0a 09 09 09 5f 5f 75 33 32 20 6c 65 6e 20 5f 5f 70 61 63 6b 65 64 3b 0a 09 09 09 5f 5f 75 31 36 ....__u32.len.__packed;....__u16
13d40 20 74 79 70 65 20 5f 5f 70 61 63 6b 65 64 3b 0a 09 09 09 5f 5f 75 31 36 20 70 31 20 5f 5f 70 61 .type.__packed;....__u16.p1.__pa
13d60 63 6b 65 64 3b 0a 09 09 09 5f 5f 75 31 36 20 70 32 20 5f 5f 70 61 63 6b 65 64 3b 0a 09 09 09 5f cked;....__u16.p2.__packed;...._
13d80 5f 75 31 36 20 70 33 20 5f 5f 70 61 63 6b 65 64 3b 0a 09 09 09 5f 5f 75 31 36 20 74 79 70 65 32 _u16.p3.__packed;....__u16.type2
13da0 20 5f 5f 70 61 63 6b 65 64 3b 0a 09 09 7d 20 62 75 66 3b 09 09 09 09 2f 2a 20 53 54 52 45 41 4d .__packed;...}.buf;..../*.STREAM
13dc0 20 6f 6e 6c 79 3a 20 74 65 6d 70 6f 72 61 72 79 20 62 75 66 66 65 72 20 2a 2f 0a 09 09 75 6e 73 .only:.temporary.buffer.*/...uns
13de0 69 67 6e 65 64 20 63 68 61 72 2a 20 70 74 72 3b 09 09 2f 2a 20 53 54 52 45 41 4d 20 6f 6e 6c 79 igned.char*.ptr;../*.STREAM.only
13e00 3a 20 70 6f 69 6e 74 65 72 20 74 6f 20 64 61 74 61 20 2a 2f 0a 09 09 73 69 7a 65 5f 74 20 6c 65 :.pointer.to.data.*/...size_t.le
13e20 6e 3b 09 09 09 2f 2a 20 53 54 52 45 41 4d 20 6f 6e 6c 79 3a 20 6c 65 6e 67 74 68 20 6f 66 20 64 n;.../*.STREAM.only:.length.of.d
13e40 61 74 61 20 74 6f 20 72 65 63 65 69 76 65 20 2a 2f 0a 09 7d 20 72 63 76 3b 0a 09 73 74 72 75 63 ata.to.receive.*/..}.rcv;..struc
13e60 74 20 7b 0a 09 09 73 74 72 75 63 74 20 6c 69 73 74 5f 68 65 61 64 20 72 65 71 75 65 73 74 73 3b t.{...struct.list_head.requests;
13e80 09 2f 2a 20 53 54 52 45 41 4d 20 6f 6e 6c 79 3a 20 71 75 65 75 65 64 20 72 65 71 75 65 73 74 73 ./*.STREAM.only:.queued.requests
13ea0 20 2a 2f 0a 09 09 73 74 72 75 63 74 20 77 6f 72 6b 5f 73 74 72 75 63 74 20 74 71 3b 09 09 2f 2a .*/...struct.work_struct.tq;../*
13ec0 20 53 54 52 45 41 4d 20 6f 6e 6c 79 3a 20 74 72 61 6e 73 6d 69 74 74 65 72 20 72 65 61 64 79 20 .STREAM.only:.transmitter.ready.
13ee0 2a 2f 0a 09 09 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 2a 20 63 */...struct.ncp_request_reply*.c
13f00 72 65 71 3b 09 2f 2a 20 53 54 52 45 41 4d 20 6f 6e 6c 79 3a 20 63 75 72 72 65 6e 74 6c 79 20 74 req;./*.STREAM.only:.currently.t
13f20 72 61 6e 73 6d 69 74 74 65 64 20 65 6e 74 72 79 20 2a 2f 0a 09 7d 20 74 78 3b 0a 09 73 74 72 75 ransmitted.entry.*/..}.tx;..stru
13f40 63 74 20 74 69 6d 65 72 5f 6c 69 73 74 20 74 69 6d 65 6f 75 74 5f 74 6d 3b 09 09 2f 2a 20 44 47 ct.timer_list.timeout_tm;../*.DG
13f60 52 41 4d 20 6f 6e 6c 79 3a 20 74 69 6d 65 6f 75 74 20 74 69 6d 65 72 20 2a 2f 0a 09 73 74 72 75 RAM.only:.timeout.timer.*/..stru
13f80 63 74 20 77 6f 72 6b 5f 73 74 72 75 63 74 20 74 69 6d 65 6f 75 74 5f 74 71 3b 09 09 2f 2a 20 44 ct.work_struct.timeout_tq;../*.D
13fa0 47 52 41 4d 20 6f 6e 6c 79 3a 20 61 73 73 6f 63 69 61 74 65 64 20 71 75 65 75 65 2c 20 77 65 20 GRAM.only:.associated.queue,.we.
13fc0 72 75 6e 20 74 69 6d 65 72 73 20 66 72 6f 6d 20 70 72 6f 63 65 73 73 20 63 6f 6e 74 65 78 74 20 run.timers.from.process.context.
13fe0 2a 2f 0a 09 69 6e 74 20 74 69 6d 65 6f 75 74 5f 6c 61 73 74 3b 09 09 09 2f 2a 20 44 47 52 41 4d */..int.timeout_last;.../*.DGRAM
14000 20 6f 6e 6c 79 3a 20 63 75 72 72 65 6e 74 20 74 69 6d 65 6f 75 74 20 6c 65 6e 67 74 68 20 2a 2f .only:.current.timeout.length.*/
14020 0a 09 69 6e 74 20 74 69 6d 65 6f 75 74 5f 72 65 74 72 69 65 73 3b 09 09 09 2f 2a 20 44 47 52 41 ..int.timeout_retries;.../*.DGRA
14040 4d 20 6f 6e 6c 79 3a 20 72 65 74 72 69 65 73 20 6c 65 66 74 20 2a 2f 0a 09 73 74 72 75 63 74 20 M.only:.retries.left.*/..struct.
14060 7b 0a 09 09 73 69 7a 65 5f 74 20 6c 65 6e 3b 0a 09 09 5f 5f 75 38 20 64 61 74 61 5b 31 32 38 5d {...size_t.len;...__u8.data[128]
14080 3b 0a 09 7d 20 75 6e 65 78 70 65 63 74 65 64 5f 70 61 63 6b 65 74 3b 0a 09 73 74 72 75 63 74 20 ;..}.unexpected_packet;..struct.
140a0 62 61 63 6b 69 6e 67 5f 64 65 76 5f 69 6e 66 6f 20 62 64 69 3b 0a 7d 3b 0a 0a 65 78 74 65 72 6e backing_dev_info.bdi;.};..extern
140c0 20 76 6f 69 64 20 6e 63 70 5f 74 63 70 5f 72 63 76 5f 70 72 6f 63 28 73 74 72 75 63 74 20 77 6f .void.ncp_tcp_rcv_proc(struct.wo
140e0 72 6b 5f 73 74 72 75 63 74 20 2a 77 6f 72 6b 29 3b 0a 65 78 74 65 72 6e 20 76 6f 69 64 20 6e 63 rk_struct.*work);.extern.void.nc
14100 70 5f 74 63 70 5f 74 78 5f 70 72 6f 63 28 73 74 72 75 63 74 20 77 6f 72 6b 5f 73 74 72 75 63 74 p_tcp_tx_proc(struct.work_struct
14120 20 2a 77 6f 72 6b 29 3b 0a 65 78 74 65 72 6e 20 76 6f 69 64 20 6e 63 70 64 67 72 61 6d 5f 72 63 .*work);.extern.void.ncpdgram_rc
14140 76 5f 70 72 6f 63 28 73 74 72 75 63 74 20 77 6f 72 6b 5f 73 74 72 75 63 74 20 2a 77 6f 72 6b 29 v_proc(struct.work_struct.*work)
14160 3b 0a 65 78 74 65 72 6e 20 76 6f 69 64 20 6e 63 70 64 67 72 61 6d 5f 74 69 6d 65 6f 75 74 5f 70 ;.extern.void.ncpdgram_timeout_p
14180 72 6f 63 28 73 74 72 75 63 74 20 77 6f 72 6b 5f 73 74 72 75 63 74 20 2a 77 6f 72 6b 29 3b 0a 65 roc(struct.work_struct.*work);.e
141a0 78 74 65 72 6e 20 76 6f 69 64 20 6e 63 70 64 67 72 61 6d 5f 74 69 6d 65 6f 75 74 5f 63 61 6c 6c xtern.void.ncpdgram_timeout_call
141c0 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 73 65 72 76 65 72 29 3b 0a 65 78 74 65 72 6e 20 76 (unsigned.long.server);.extern.v
141e0 6f 69 64 20 6e 63 70 5f 74 63 70 5f 64 61 74 61 5f 72 65 61 64 79 28 73 74 72 75 63 74 20 73 6f oid.ncp_tcp_data_ready(struct.so
14200 63 6b 2a 20 73 6b 29 3b 0a 65 78 74 65 72 6e 20 76 6f 69 64 20 6e 63 70 5f 74 63 70 5f 77 72 69 ck*.sk);.extern.void.ncp_tcp_wri
14220 74 65 5f 73 70 61 63 65 28 73 74 72 75 63 74 20 73 6f 63 6b 2a 20 73 6b 29 3b 0a 65 78 74 65 72 te_space(struct.sock*.sk);.exter
14240 6e 20 76 6f 69 64 20 6e 63 70 5f 74 63 70 5f 65 72 72 6f 72 5f 72 65 70 6f 72 74 28 73 74 72 75 n.void.ncp_tcp_error_report(stru
14260 63 74 20 73 6f 63 6b 2a 20 73 6b 29 3b 0a 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 46 4c 41 47 5f ct.sock*.sk);..#define.NCP_FLAG_
14280 55 54 46 38 09 31 0a 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 43 4c 52 5f 46 4c 41 47 28 73 65 72 UTF8.1..#define.NCP_CLR_FLAG(ser
142a0 76 65 72 2c 20 66 6c 61 67 29 09 28 28 73 65 72 76 65 72 29 2d 3e 66 6c 61 67 73 20 26 3d 20 7e ver,.flag).((server)->flags.&=.~
142c0 28 66 6c 61 67 29 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 53 45 54 5f 46 4c 41 47 28 73 65 72 (flag)).#define.NCP_SET_FLAG(ser
142e0 76 65 72 2c 20 66 6c 61 67 29 09 28 28 73 65 72 76 65 72 29 2d 3e 66 6c 61 67 73 20 7c 3d 20 28 ver,.flag).((server)->flags.|=.(
14300 66 6c 61 67 29 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 49 53 5f 46 4c 41 47 28 73 65 72 76 65 flag)).#define.NCP_IS_FLAG(serve
14320 72 2c 20 66 6c 61 67 29 09 28 28 73 65 72 76 65 72 29 2d 3e 66 6c 61 67 73 20 26 20 28 66 6c 61 r,.flag).((server)->flags.&.(fla
14340 67 29 29 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 69 6e 74 20 6e 63 70 5f 63 6f 6e 6e 5f g))..static.inline.int.ncp_conn_
14360 76 61 6c 69 64 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 valid(struct.ncp_server.*server)
14380 0a 7b 0a 09 72 65 74 75 72 6e 20 28 28 73 65 72 76 65 72 2d 3e 63 6f 6e 6e 5f 73 74 61 74 75 73 .{..return.((server->conn_status
143a0 20 26 20 30 78 31 31 29 20 3d 3d 20 30 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 .&.0x11).==.0);.}..static.inline
143c0 20 76 6f 69 64 20 6e 63 70 5f 69 6e 76 61 6c 69 64 61 74 65 5f 63 6f 6e 6e 28 73 74 72 75 63 74 .void.ncp_invalidate_conn(struct
143e0 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 0a 7b 0a 09 73 65 72 76 65 72 2d 3e .ncp_server.*server).{..server->
14400 63 6f 6e 6e 5f 73 74 61 74 75 73 20 7c 3d 20 30 78 30 31 3b 0a 7d 0a 0a 23 65 6e 64 69 66 0a 00 conn_status.|=.0x01;.}..#endif..
14420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
144a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
144c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
144e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
145a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
145c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
145e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14600 6e 63 70 66 73 2f 6e 63 70 6c 69 62 5f 6b 65 72 6e 65 6c 2e 63 00 00 00 00 00 00 00 00 00 00 00 ncpfs/ncplib_kernel.c...........
14620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14660 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 ....0000644.0001750.0001750.0000
14680 30 31 30 30 37 30 30 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 34 31 33 37 00 20 30 00 00 00 0100700.13023323142.014137..0...
146a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
146c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
146e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14700 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...kubax..................
14720 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........kubax..................
14740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
147a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
147c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
147e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14800 2f 2a 0a 20 2a 20 20 6e 63 70 6c 69 62 5f 6b 65 72 6e 65 6c 2e 63 0a 20 2a 0a 20 2a 20 20 43 6f /*..*..ncplib_kernel.c..*..*..Co
14820 70 79 72 69 67 68 74 20 28 43 29 20 31 39 39 35 2c 20 31 39 39 36 20 62 79 20 56 6f 6c 6b 65 72 pyright.(C).1995,.1996.by.Volker
14840 20 4c 65 6e 64 65 63 6b 65 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 66 6f 72 20 62 69 67 20 65 .Lendecke..*..Modified.for.big.e
14860 6e 64 69 61 6e 20 62 79 20 4a 2e 46 2e 20 43 68 61 64 69 6d 61 20 61 6e 64 20 44 61 76 69 64 20 ndian.by.J.F..Chadima.and.David.
14880 53 2e 20 4d 69 6c 6c 65 72 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 37 20 50 65 74 65 S..Miller..*..Modified.1997.Pete
148a0 72 20 57 61 6c 74 65 6e 62 65 72 67 2c 20 42 69 6c 6c 20 48 61 77 65 73 2c 20 44 61 76 69 64 20 r.Waltenberg,.Bill.Hawes,.David.
148c0 57 6f 6f 64 68 6f 75 73 65 20 66 6f 72 20 32 2e 31 20 64 63 61 63 68 65 0a 20 2a 20 20 4d 6f 64 Woodhouse.for.2.1.dcache..*..Mod
148e0 69 66 69 65 64 20 31 39 39 39 20 57 6f 6c 66 72 61 6d 20 50 69 65 6e 6b 6f 73 73 20 66 6f 72 20 ified.1999.Wolfram.Pienkoss.for.
14900 4e 4c 53 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 32 30 30 30 20 42 65 6e 20 48 61 72 72 69 73 NLS..*..Modified.2000.Ben.Harris
14920 2c 20 55 6e 69 76 65 72 73 69 74 79 20 6f 66 20 43 61 6d 62 72 69 64 67 65 20 66 6f 72 20 4e 46 ,.University.of.Cambridge.for.NF
14940 53 20 4e 53 20 6d 65 74 61 2d 69 6e 66 6f 0a 20 2a 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 70 S.NS.meta-info..*..*/..#define.p
14960 72 5f 66 6d 74 28 66 6d 74 29 20 4b 42 55 49 4c 44 5f 4d 4f 44 4e 41 4d 45 20 22 3a 20 22 20 66 r_fmt(fmt).KBUILD_MODNAME.":.".f
14980 6d 74 0a 0a 23 69 6e 63 6c 75 64 65 20 22 6e 63 70 5f 66 73 2e 68 22 0a 0a 73 74 61 74 69 63 20 mt..#include."ncp_fs.h"..static.
149a0 69 6e 6c 69 6e 65 20 76 6f 69 64 20 61 73 73 65 72 74 5f 73 65 72 76 65 72 5f 6c 6f 63 6b 65 64 inline.void.assert_server_locked
149c0 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 0a 7b 0a 09 69 (struct.ncp_server.*server).{..i
149e0 66 20 28 73 65 72 76 65 72 2d 3e 6c 6f 63 6b 20 3d 3d 20 30 29 20 7b 0a 09 09 6e 63 70 5f 64 62 f.(server->lock.==.0).{...ncp_db
14a00 67 28 31 2c 20 22 73 65 72 76 65 72 20 6e 6f 74 20 6c 6f 63 6b 65 64 21 5c 6e 22 29 3b 0a 09 7d g(1,."server.not.locked!\n");..}
14a20 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 74 72 .}..static.void.ncp_add_byte(str
14a40 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 5f 5f 75 38 20 78 29 0a uct.ncp_server.*server,.__u8.x).
14a60 7b 0a 09 61 73 73 65 72 74 5f 73 65 72 76 65 72 5f 6c 6f 63 6b 65 64 28 73 65 72 76 65 72 29 3b {..assert_server_locked(server);
14a80 0a 09 2a 28 5f 5f 75 38 20 2a 29 20 28 26 28 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 5b 73 65 ..*(__u8.*).(&(server->packet[se
14aa0 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a 65 5d 29 29 20 3d 20 78 3b 0a 09 73 65 72 76 rver->current_size])).=.x;..serv
14ac0 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a 65 20 2b 3d 20 31 3b 0a 09 72 65 74 75 72 6e 3b 0a er->current_size.+=.1;..return;.
14ae0 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 61 64 64 5f 77 6f 72 64 28 73 74 72 75 }..static.void.ncp_add_word(stru
14b00 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 5f 5f 6c 65 31 36 20 78 29 ct.ncp_server.*server,.__le16.x)
14b20 0a 7b 0a 09 61 73 73 65 72 74 5f 73 65 72 76 65 72 5f 6c 6f 63 6b 65 64 28 73 65 72 76 65 72 29 .{..assert_server_locked(server)
14b40 3b 0a 09 70 75 74 5f 75 6e 61 6c 69 67 6e 65 64 28 78 2c 20 28 5f 5f 6c 65 31 36 20 2a 29 20 28 ;..put_unaligned(x,.(__le16.*).(
14b60 26 28 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 5b 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 &(server->packet[server->current
14b80 5f 73 69 7a 65 5d 29 29 29 3b 0a 09 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a 65 _size])));..server->current_size
14ba0 20 2b 3d 20 32 3b 0a 09 72 65 74 75 72 6e 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e .+=.2;..return;.}..static.void.n
14bc0 63 70 5f 61 64 64 5f 62 65 31 36 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 cp_add_be16(struct.ncp_server.*s
14be0 65 72 76 65 72 2c 20 5f 5f 75 31 36 20 78 29 0a 7b 0a 09 61 73 73 65 72 74 5f 73 65 72 76 65 72 erver,.__u16.x).{..assert_server
14c00 5f 6c 6f 63 6b 65 64 28 73 65 72 76 65 72 29 3b 0a 09 70 75 74 5f 75 6e 61 6c 69 67 6e 65 64 28 _locked(server);..put_unaligned(
14c20 63 70 75 5f 74 6f 5f 62 65 31 36 28 78 29 2c 20 28 5f 5f 62 65 31 36 20 2a 29 20 28 26 28 73 65 cpu_to_be16(x),.(__be16.*).(&(se
14c40 72 76 65 72 2d 3e 70 61 63 6b 65 74 5b 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a rver->packet[server->current_siz
14c60 65 5d 29 29 29 3b 0a 09 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a 65 20 2b 3d 20 e])));..server->current_size.+=.
14c80 32 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 61 64 64 5f 64 77 6f 72 64 28 2;.}..static.void.ncp_add_dword(
14ca0 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 5f 5f 6c 65 33 struct.ncp_server.*server,.__le3
14cc0 32 20 78 29 0a 7b 0a 09 61 73 73 65 72 74 5f 73 65 72 76 65 72 5f 6c 6f 63 6b 65 64 28 73 65 72 2.x).{..assert_server_locked(ser
14ce0 76 65 72 29 3b 0a 09 70 75 74 5f 75 6e 61 6c 69 67 6e 65 64 28 78 2c 20 28 5f 5f 6c 65 33 32 20 ver);..put_unaligned(x,.(__le32.
14d00 2a 29 20 28 26 28 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 5b 73 65 72 76 65 72 2d 3e 63 75 72 *).(&(server->packet[server->cur
14d20 72 65 6e 74 5f 73 69 7a 65 5d 29 29 29 3b 0a 09 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f rent_size])));..server->current_
14d40 73 69 7a 65 20 2b 3d 20 34 3b 0a 09 72 65 74 75 72 6e 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f size.+=.4;..return;.}..static.vo
14d60 69 64 20 6e 63 70 5f 61 64 64 5f 62 65 33 32 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 id.ncp_add_be32(struct.ncp_serve
14d80 72 20 2a 73 65 72 76 65 72 2c 20 5f 5f 75 33 32 20 78 29 0a 7b 0a 09 61 73 73 65 72 74 5f 73 65 r.*server,.__u32.x).{..assert_se
14da0 72 76 65 72 5f 6c 6f 63 6b 65 64 28 73 65 72 76 65 72 29 3b 0a 09 70 75 74 5f 75 6e 61 6c 69 67 rver_locked(server);..put_unalig
14dc0 6e 65 64 28 63 70 75 5f 74 6f 5f 62 65 33 32 28 78 29 2c 20 28 5f 5f 62 65 33 32 20 2a 29 28 26 ned(cpu_to_be32(x),.(__be32.*)(&
14de0 28 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 5b 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f (server->packet[server->current_
14e00 73 69 7a 65 5d 29 29 29 3b 0a 09 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a 65 20 size])));..server->current_size.
14e20 2b 3d 20 34 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 20 6e 63 70 5f +=.4;.}..static.inline.void.ncp_
14e40 61 64 64 5f 64 77 6f 72 64 5f 6c 68 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a add_dword_lh(struct.ncp_server.*
14e60 73 65 72 76 65 72 2c 20 5f 5f 75 33 32 20 78 29 20 7b 0a 09 6e 63 70 5f 61 64 64 5f 64 77 6f 72 server,.__u32.x).{..ncp_add_dwor
14e80 64 28 73 65 72 76 65 72 2c 20 63 70 75 5f 74 6f 5f 6c 65 33 32 28 78 29 29 3b 0a 7d 0a 0a 73 74 d(server,.cpu_to_le32(x));.}..st
14ea0 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 61 64 64 5f 6d 65 6d 28 73 74 72 75 63 74 20 6e 63 70 atic.void.ncp_add_mem(struct.ncp
14ec0 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 6f 75 _server.*server,.const.void.*sou
14ee0 72 63 65 2c 20 69 6e 74 20 73 69 7a 65 29 0a 7b 0a 09 61 73 73 65 72 74 5f 73 65 72 76 65 72 5f rce,.int.size).{..assert_server_
14f00 6c 6f 63 6b 65 64 28 73 65 72 76 65 72 29 3b 0a 09 6d 65 6d 63 70 79 28 26 28 73 65 72 76 65 72 locked(server);..memcpy(&(server
14f20 2d 3e 70 61 63 6b 65 74 5b 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a 65 5d 29 2c ->packet[server->current_size]),
14f40 20 73 6f 75 72 63 65 2c 20 73 69 7a 65 29 3b 0a 09 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 .source,.size);..server->current
14f60 5f 73 69 7a 65 20 2b 3d 20 73 69 7a 65 3b 0a 09 72 65 74 75 72 6e 3b 0a 7d 0a 0a 73 74 61 74 69 _size.+=.size;..return;.}..stati
14f80 63 20 76 6f 69 64 20 6e 63 70 5f 61 64 64 5f 70 73 74 72 69 6e 67 28 73 74 72 75 63 74 20 6e 63 c.void.ncp_add_pstring(struct.nc
14fa0 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 29 p_server.*server,.const.char.*s)
14fc0 0a 7b 0a 09 69 6e 74 20 6c 65 6e 20 3d 20 73 74 72 6c 65 6e 28 73 29 3b 0a 09 61 73 73 65 72 74 .{..int.len.=.strlen(s);..assert
14fe0 5f 73 65 72 76 65 72 5f 6c 6f 63 6b 65 64 28 73 65 72 76 65 72 29 3b 0a 09 69 66 20 28 6c 65 6e _server_locked(server);..if.(len
15000 20 3e 20 32 35 35 29 20 7b 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 73 74 72 69 6e 67 20 74 .>.255).{...ncp_dbg(1,."string.t
15020 6f 6f 20 6c 6f 6e 67 3a 20 25 73 5c 6e 22 2c 20 73 29 3b 0a 09 09 6c 65 6e 20 3d 20 32 35 35 3b oo.long:.%s\n",.s);...len.=.255;
15040 0a 09 7d 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 6c 65 6e 29 3b 0a ..}..ncp_add_byte(server,.len);.
15060 09 6e 63 70 5f 61 64 64 5f 6d 65 6d 28 73 65 72 76 65 72 2c 20 73 2c 20 6c 65 6e 29 3b 0a 09 72 .ncp_add_mem(server,.s,.len);..r
15080 65 74 75 72 6e 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 20 6e 63 70 eturn;.}..static.inline.void.ncp
150a0 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 _init_request(struct.ncp_server.
150c0 2a 73 65 72 76 65 72 29 0a 7b 0a 09 6e 63 70 5f 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 *server).{..ncp_lock_server(serv
150e0 65 72 29 3b 0a 0a 09 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a 65 20 3d 20 73 69 er);...server->current_size.=.si
15100 7a 65 6f 66 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 68 65 61 64 65 72 29 3b zeof(struct.ncp_request_header);
15120 0a 09 73 65 72 76 65 72 2d 3e 68 61 73 5f 73 75 62 66 75 6e 63 74 69 6f 6e 20 3d 20 30 3b 0a 7d ..server->has_subfunction.=.0;.}
15140 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 20 6e 63 70 5f 69 6e 69 74 5f 72 65 ..static.inline.void.ncp_init_re
15160 71 75 65 73 74 5f 73 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 quest_s(struct.ncp_server.*serve
15180 72 2c 20 69 6e 74 20 73 75 62 66 75 6e 63 74 69 6f 6e 29 0a 7b 0a 09 6e 63 70 5f 6c 6f 63 6b 5f r,.int.subfunction).{..ncp_lock_
151a0 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 0a 09 73 65 72 76 65 72 2d 3e 63 75 72 72 65 server(server);....server->curre
151c0 6e 74 5f 73 69 7a 65 20 3d 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 nt_size.=.sizeof(struct.ncp_requ
151e0 65 73 74 5f 68 65 61 64 65 72 29 20 2b 20 32 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 est_header).+.2;..ncp_add_byte(s
15200 65 72 76 65 72 2c 20 73 75 62 66 75 6e 63 74 69 6f 6e 29 3b 0a 0a 09 73 65 72 76 65 72 2d 3e 68 erver,.subfunction);...server->h
15220 61 73 5f 73 75 62 66 75 6e 63 74 69 6f 6e 20 3d 20 31 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e as_subfunction.=.1;.}..static.in
15240 6c 69 6e 65 20 63 68 61 72 20 2a 0a 6e 63 70 5f 72 65 70 6c 79 5f 64 61 74 61 28 73 74 72 75 63 line.char.*.ncp_reply_data(struc
15260 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 69 6e 74 20 6f 66 66 73 65 74 t.ncp_server.*server,.int.offset
15280 29 0a 7b 0a 09 72 65 74 75 72 6e 20 26 28 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 5b 73 69 7a ).{..return.&(server->packet[siz
152a0 65 6f 66 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 70 6c 79 5f 68 65 61 64 65 72 29 20 2b 20 6f eof(struct.ncp_reply_header).+.o
152c0 66 66 73 65 74 5d 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 75 38 20 42 56 41 ffset]);.}..static.inline.u8.BVA
152e0 4c 28 63 6f 6e 73 74 20 76 6f 69 64 20 2a 64 61 74 61 29 0a 7b 0a 09 72 65 74 75 72 6e 20 2a 28 L(const.void.*data).{..return.*(
15300 63 6f 6e 73 74 20 75 38 20 2a 29 64 61 74 61 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 75 38 20 6e 63 const.u8.*)data;.}..static.u8.nc
15320 70 5f 72 65 70 6c 79 5f 62 79 74 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a p_reply_byte(struct.ncp_server.*
15340 73 65 72 76 65 72 2c 20 69 6e 74 20 6f 66 66 73 65 74 29 0a 7b 0a 09 72 65 74 75 72 6e 20 2a 28 server,.int.offset).{..return.*(
15360 63 6f 6e 73 74 20 75 38 20 2a 29 6e 63 70 5f 72 65 70 6c 79 5f 64 61 74 61 28 73 65 72 76 65 72 const.u8.*)ncp_reply_data(server
15380 2c 20 6f 66 66 73 65 74 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 75 31 36 20 ,.offset);.}..static.inline.u16.
153a0 57 56 41 4c 5f 4c 48 28 63 6f 6e 73 74 20 76 6f 69 64 20 2a 64 61 74 61 29 0a 7b 0a 09 72 65 74 WVAL_LH(const.void.*data).{..ret
153c0 75 72 6e 20 67 65 74 5f 75 6e 61 6c 69 67 6e 65 64 5f 6c 65 31 36 28 64 61 74 61 29 3b 0a 7d 0a urn.get_unaligned_le16(data);.}.
153e0 0a 73 74 61 74 69 63 20 75 31 36 0a 6e 63 70 5f 72 65 70 6c 79 5f 6c 65 31 36 28 73 74 72 75 63 .static.u16.ncp_reply_le16(struc
15400 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 69 6e 74 20 6f 66 66 73 65 74 t.ncp_server.*server,.int.offset
15420 29 0a 7b 0a 09 72 65 74 75 72 6e 20 67 65 74 5f 75 6e 61 6c 69 67 6e 65 64 5f 6c 65 31 36 28 6e ).{..return.get_unaligned_le16(n
15440 63 70 5f 72 65 70 6c 79 5f 64 61 74 61 28 73 65 72 76 65 72 2c 20 6f 66 66 73 65 74 29 29 3b 0a cp_reply_data(server,.offset));.
15460 7d 0a 0a 73 74 61 74 69 63 20 75 31 36 0a 6e 63 70 5f 72 65 70 6c 79 5f 62 65 31 36 28 73 74 72 }..static.u16.ncp_reply_be16(str
15480 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 69 6e 74 20 6f 66 66 73 uct.ncp_server.*server,.int.offs
154a0 65 74 29 0a 7b 0a 09 72 65 74 75 72 6e 20 67 65 74 5f 75 6e 61 6c 69 67 6e 65 64 5f 62 65 31 36 et).{..return.get_unaligned_be16
154c0 28 6e 63 70 5f 72 65 70 6c 79 5f 64 61 74 61 28 73 65 72 76 65 72 2c 20 6f 66 66 73 65 74 29 29 (ncp_reply_data(server,.offset))
154e0 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 75 33 32 20 44 56 41 4c 5f 4c 48 28 63 ;.}..static.inline.u32.DVAL_LH(c
15500 6f 6e 73 74 20 76 6f 69 64 20 2a 64 61 74 61 29 0a 7b 0a 09 72 65 74 75 72 6e 20 67 65 74 5f 75 onst.void.*data).{..return.get_u
15520 6e 61 6c 69 67 6e 65 64 5f 6c 65 33 32 28 64 61 74 61 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 5f naligned_le32(data);.}..static._
15540 5f 6c 65 33 32 0a 6e 63 70 5f 72 65 70 6c 79 5f 64 77 6f 72 64 28 73 74 72 75 63 74 20 6e 63 70 _le32.ncp_reply_dword(struct.ncp
15560 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 69 6e 74 20 6f 66 66 73 65 74 29 0a 7b 0a 09 _server.*server,.int.offset).{..
15580 72 65 74 75 72 6e 20 67 65 74 5f 75 6e 61 6c 69 67 6e 65 64 28 28 5f 5f 6c 65 33 32 20 2a 29 6e return.get_unaligned((__le32.*)n
155a0 63 70 5f 72 65 70 6c 79 5f 64 61 74 61 28 73 65 72 76 65 72 2c 20 6f 66 66 73 65 74 29 29 3b 0a cp_reply_data(server,.offset));.
155c0 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 5f 5f 75 33 32 20 6e 63 70 5f 72 65 70 6c 79 }..static.inline.__u32.ncp_reply
155e0 5f 64 77 6f 72 64 5f 6c 68 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2a 20 73 65 72 _dword_lh(struct.ncp_server*.ser
15600 76 65 72 2c 20 69 6e 74 20 6f 66 66 73 65 74 29 20 7b 0a 09 72 65 74 75 72 6e 20 6c 65 33 32 5f ver,.int.offset).{..return.le32_
15620 74 6f 5f 63 70 75 28 6e 63 70 5f 72 65 70 6c 79 5f 64 77 6f 72 64 28 73 65 72 76 65 72 2c 20 6f to_cpu(ncp_reply_dword(server,.o
15640 66 66 73 65 74 29 29 3b 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 6e 65 67 6f 74 69 61 74 65 5f 62 75 ffset));.}..int.ncp_negotiate_bu
15660 66 66 65 72 73 69 7a 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 ffersize(struct.ncp_server.*serv
15680 65 72 2c 20 69 6e 74 20 73 69 7a 65 2c 20 69 6e 74 20 2a 74 61 72 67 65 74 29 0a 7b 0a 09 69 6e er,.int.size,.int.*target).{..in
156a0 74 20 72 65 73 75 6c 74 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 t.result;...ncp_init_request(ser
156c0 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 65 31 36 28 73 65 72 76 65 72 2c 20 73 69 7a 65 ver);..ncp_add_be16(server,.size
156e0 29 3b 0a 0a 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 );...if.((result.=.ncp_request(s
15700 65 72 76 65 72 2c 20 33 33 29 29 20 21 3d 20 30 29 20 7b 0a 09 09 6e 63 70 5f 75 6e 6c 6f 63 6b erver,.33)).!=.0).{...ncp_unlock
15720 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 _server(server);...return.result
15740 3b 0a 09 7d 0a 09 2a 74 61 72 67 65 74 20 3d 20 6d 69 6e 5f 74 28 75 6e 73 69 67 6e 65 64 20 69 ;..}..*target.=.min_t(unsigned.i
15760 6e 74 2c 20 6e 63 70 5f 72 65 70 6c 79 5f 62 65 31 36 28 73 65 72 76 65 72 2c 20 30 29 2c 20 73 nt,.ncp_reply_be16(server,.0),.s
15780 69 7a 65 29 3b 0a 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 ize);...ncp_unlock_server(server
157a0 29 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 0a 2f 2a 20 6f 70 74 69 6f 6e 73 3a 20 0a 20 );..return.0;.}.../*.options:...
157c0 2a 09 62 69 74 20 30 09 69 70 78 20 63 68 65 63 6b 73 75 6d 0a 20 2a 09 62 69 74 20 31 09 70 61 *.bit.0.ipx.checksum..*.bit.1.pa
157e0 63 6b 65 74 20 73 69 67 6e 69 6e 67 0a 20 2a 2f 0a 69 6e 74 0a 6e 63 70 5f 6e 65 67 6f 74 69 61 cket.signing..*/.int.ncp_negotia
15800 74 65 5f 73 69 7a 65 5f 61 6e 64 5f 6f 70 74 69 6f 6e 73 28 73 74 72 75 63 74 20 6e 63 70 5f 73 te_size_and_options(struct.ncp_s
15820 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 0a 09 69 6e 74 20 73 69 7a 65 2c 20 69 6e 74 20 6f erver.*server,...int.size,.int.o
15840 70 74 69 6f 6e 73 2c 20 69 6e 74 20 2a 72 65 74 5f 73 69 7a 65 2c 20 69 6e 74 20 2a 72 65 74 5f ptions,.int.*ret_size,.int.*ret_
15860 6f 70 74 69 6f 6e 73 29 20 7b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 2f 2a 20 74 68 65 options).{..int.result;.../*.the
15880 72 65 20 69 73 20 6d 69 6e 69 6d 75 6d 20 2a 2f 0a 09 69 66 20 28 73 69 7a 65 20 3c 20 4e 43 50 re.is.minimum.*/..if.(size.<.NCP
158a0 5f 42 4c 4f 43 4b 5f 53 49 5a 45 29 20 73 69 7a 65 20 3d 20 4e 43 50 5f 42 4c 4f 43 4b 5f 53 49 _BLOCK_SIZE).size.=.NCP_BLOCK_SI
158c0 5a 45 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a ZE;...ncp_init_request(server);.
158e0 09 6e 63 70 5f 61 64 64 5f 62 65 31 36 28 73 65 72 76 65 72 2c 20 73 69 7a 65 29 3b 0a 09 6e 63 .ncp_add_be16(server,.size);..nc
15900 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 6f 70 74 69 6f 6e 73 29 3b 0a 09 0a 09 p_add_byte(server,.options);....
15920 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 if.((result.=.ncp_request(server
15940 2c 20 30 78 36 31 29 29 20 21 3d 20 30 29 0a 09 7b 0a 09 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 ,.0x61)).!=.0)..{...ncp_unlock_s
15960 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a erver(server);...return.result;.
15980 09 7d 0a 0a 09 2f 2a 20 4e 43 50 20 6f 76 65 72 20 55 44 50 20 72 65 74 75 72 6e 73 20 30 20 28 .}.../*.NCP.over.UDP.returns.0.(
159a0 21 21 21 29 20 2a 2f 0a 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 62 65 31 36 !!!).*/..result.=.ncp_reply_be16
159c0 28 73 65 72 76 65 72 2c 20 30 29 3b 0a 09 69 66 20 28 72 65 73 75 6c 74 20 3e 3d 20 4e 43 50 5f (server,.0);..if.(result.>=.NCP_
159e0 42 4c 4f 43 4b 5f 53 49 5a 45 29 0a 09 09 73 69 7a 65 20 3d 20 6d 69 6e 28 72 65 73 75 6c 74 2c BLOCK_SIZE)...size.=.min(result,
15a00 20 73 69 7a 65 29 3b 0a 09 2a 72 65 74 5f 73 69 7a 65 20 3d 20 73 69 7a 65 3b 0a 09 2a 72 65 74 .size);..*ret_size.=.size;..*ret
15a20 5f 6f 70 74 69 6f 6e 73 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 62 79 74 65 28 73 65 72 76 65 72 _options.=.ncp_reply_byte(server
15a40 2c 20 34 29 3b 0a 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 ,.4);...ncp_unlock_server(server
15a60 29 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 69 6e 74 20 6e 63 70 5f 67 65 74 5f 76 6f 6c );..return.0;.}..int.ncp_get_vol
15a80 75 6d 65 5f 69 6e 66 6f 5f 77 69 74 68 5f 6e 75 6d 62 65 72 28 73 74 72 75 63 74 20 6e 63 70 5f ume_info_with_number(struct.ncp_
15aa0 73 65 72 76 65 72 2a 20 73 65 72 76 65 72 2c 0a 09 09 09 20 20 20 20 20 69 6e 74 20 6e 2c 20 73 server*.server,.........int.n,.s
15ac0 74 72 75 63 74 20 6e 63 70 5f 76 6f 6c 75 6d 65 5f 69 6e 66 6f 2a 20 74 61 72 67 65 74 29 20 7b truct.ncp_volume_info*.target).{
15ae0 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 09 69 6e 74 20 6c 65 6e 3b 0a 0a 09 6e 63 70 5f 69 6e ..int.result;..int.len;...ncp_in
15b00 69 74 5f 72 65 71 75 65 73 74 5f 73 28 73 65 72 76 65 72 2c 20 34 34 29 3b 0a 09 6e 63 70 5f 61 it_request_s(server,.44);..ncp_a
15b20 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 6e 29 3b 0a 0a 09 69 66 20 28 28 72 65 73 75 6c dd_byte(server,.n);...if.((resul
15b40 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 32 32 29 29 20 21 3d 20 t.=.ncp_request(server,.22)).!=.
15b60 30 29 20 7b 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 7d 0a 09 74 61 72 67 65 74 2d 3e 74 6f 74 0).{...goto.out;..}..target->tot
15b80 61 6c 5f 62 6c 6f 63 6b 73 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 64 77 6f 72 64 5f 6c 68 28 73 al_blocks.=.ncp_reply_dword_lh(s
15ba0 65 72 76 65 72 2c 20 30 29 3b 0a 09 74 61 72 67 65 74 2d 3e 66 72 65 65 5f 62 6c 6f 63 6b 73 20 erver,.0);..target->free_blocks.
15bc0 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 34 29 3b =.ncp_reply_dword_lh(server,.4);
15be0 0a 09 74 61 72 67 65 74 2d 3e 70 75 72 67 65 61 62 6c 65 5f 62 6c 6f 63 6b 73 20 3d 20 6e 63 70 ..target->purgeable_blocks.=.ncp
15c00 5f 72 65 70 6c 79 5f 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 38 29 3b 0a 09 74 61 72 _reply_dword_lh(server,.8);..tar
15c20 67 65 74 2d 3e 6e 6f 74 5f 79 65 74 5f 70 75 72 67 65 61 62 6c 65 5f 62 6c 6f 63 6b 73 20 3d 20 get->not_yet_purgeable_blocks.=.
15c40 6e 63 70 5f 72 65 70 6c 79 5f 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 31 32 29 3b 0a ncp_reply_dword_lh(server,.12);.
15c60 09 74 61 72 67 65 74 2d 3e 74 6f 74 61 6c 5f 64 69 72 5f 65 6e 74 72 69 65 73 20 3d 20 6e 63 70 .target->total_dir_entries.=.ncp
15c80 5f 72 65 70 6c 79 5f 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 31 36 29 3b 0a 09 74 61 _reply_dword_lh(server,.16);..ta
15ca0 72 67 65 74 2d 3e 61 76 61 69 6c 61 62 6c 65 5f 64 69 72 5f 65 6e 74 72 69 65 73 20 3d 20 6e 63 rget->available_dir_entries.=.nc
15cc0 70 5f 72 65 70 6c 79 5f 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 32 30 29 3b 0a 09 74 p_reply_dword_lh(server,.20);..t
15ce0 61 72 67 65 74 2d 3e 73 65 63 74 6f 72 73 5f 70 65 72 5f 62 6c 6f 63 6b 20 3d 20 6e 63 70 5f 72 arget->sectors_per_block.=.ncp_r
15d00 65 70 6c 79 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 32 38 29 3b 0a 0a 09 6d 65 6d 73 65 74 28 eply_byte(server,.28);...memset(
15d20 26 28 74 61 72 67 65 74 2d 3e 76 6f 6c 75 6d 65 5f 6e 61 6d 65 29 2c 20 30 2c 20 73 69 7a 65 6f &(target->volume_name),.0,.sizeo
15d40 66 28 74 61 72 67 65 74 2d 3e 76 6f 6c 75 6d 65 5f 6e 61 6d 65 29 29 3b 0a 0a 09 72 65 73 75 6c f(target->volume_name));...resul
15d60 74 20 3d 20 2d 45 49 4f 3b 0a 09 6c 65 6e 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 62 79 74 65 28 t.=.-EIO;..len.=.ncp_reply_byte(
15d80 73 65 72 76 65 72 2c 20 32 39 29 3b 0a 09 69 66 20 28 6c 65 6e 20 3e 20 4e 43 50 5f 56 4f 4c 4e server,.29);..if.(len.>.NCP_VOLN
15da0 41 4d 45 5f 4c 45 4e 29 20 7b 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 76 6f 6c 75 6d 65 20 AME_LEN).{...ncp_dbg(1,."volume.
15dc0 6e 61 6d 65 20 74 6f 6f 20 6c 6f 6e 67 3a 20 25 64 5c 6e 22 2c 20 6c 65 6e 29 3b 0a 09 09 67 6f name.too.long:.%d\n",.len);...go
15de0 74 6f 20 6f 75 74 3b 0a 09 7d 0a 09 6d 65 6d 63 70 79 28 26 28 74 61 72 67 65 74 2d 3e 76 6f 6c to.out;..}..memcpy(&(target->vol
15e00 75 6d 65 5f 6e 61 6d 65 29 2c 20 6e 63 70 5f 72 65 70 6c 79 5f 64 61 74 61 28 73 65 72 76 65 72 ume_name),.ncp_reply_data(server
15e20 2c 20 33 30 29 2c 20 6c 65 6e 29 3b 0a 09 72 65 73 75 6c 74 20 3d 20 30 3b 0a 6f 75 74 3a 0a 09 ,.30),.len);..result.=.0;.out:..
15e40 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 ncp_unlock_server(server);..retu
15e60 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 69 6e 74 20 6e 63 70 5f 67 65 74 5f 64 69 72 65 63 74 rn.result;.}..int.ncp_get_direct
15e80 6f 72 79 5f 69 6e 66 6f 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2a 20 73 65 72 76 ory_info(struct.ncp_server*.serv
15ea0 65 72 2c 20 5f 5f 75 38 20 6e 2c 20 0a 09 09 09 20 20 20 73 74 72 75 63 74 20 6e 63 70 5f 76 6f er,.__u8.n,........struct.ncp_vo
15ec0 6c 75 6d 65 5f 69 6e 66 6f 2a 20 74 61 72 67 65 74 29 20 7b 0a 09 69 6e 74 20 72 65 73 75 6c 74 lume_info*.target).{..int.result
15ee0 3b 0a 09 69 6e 74 20 6c 65 6e 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 5f 73 ;..int.len;...ncp_init_request_s
15f00 28 73 65 72 76 65 72 2c 20 34 35 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 (server,.45);..ncp_add_byte(serv
15f20 65 72 2c 20 6e 29 3b 0a 0a 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 er,.n);...if.((result.=.ncp_requ
15f40 65 73 74 28 73 65 72 76 65 72 2c 20 32 32 29 29 20 21 3d 20 30 29 20 7b 0a 09 09 67 6f 74 6f 20 est(server,.22)).!=.0).{...goto.
15f60 6f 75 74 3b 0a 09 7d 0a 09 74 61 72 67 65 74 2d 3e 74 6f 74 61 6c 5f 62 6c 6f 63 6b 73 20 3d 20 out;..}..target->total_blocks.=.
15f80 6e 63 70 5f 72 65 70 6c 79 5f 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 30 29 3b 0a 09 ncp_reply_dword_lh(server,.0);..
15fa0 74 61 72 67 65 74 2d 3e 66 72 65 65 5f 62 6c 6f 63 6b 73 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f target->free_blocks.=.ncp_reply_
15fc0 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 34 29 3b 0a 09 74 61 72 67 65 74 2d 3e 70 75 dword_lh(server,.4);..target->pu
15fe0 72 67 65 61 62 6c 65 5f 62 6c 6f 63 6b 73 20 3d 20 30 3b 0a 09 74 61 72 67 65 74 2d 3e 6e 6f 74 rgeable_blocks.=.0;..target->not
16000 5f 79 65 74 5f 70 75 72 67 65 61 62 6c 65 5f 62 6c 6f 63 6b 73 20 3d 20 30 3b 0a 09 74 61 72 67 _yet_purgeable_blocks.=.0;..targ
16020 65 74 2d 3e 74 6f 74 61 6c 5f 64 69 72 5f 65 6e 74 72 69 65 73 20 3d 20 6e 63 70 5f 72 65 70 6c et->total_dir_entries.=.ncp_repl
16040 79 5f 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 38 29 3b 0a 09 74 61 72 67 65 74 2d 3e y_dword_lh(server,.8);..target->
16060 61 76 61 69 6c 61 62 6c 65 5f 64 69 72 5f 65 6e 74 72 69 65 73 20 3d 20 6e 63 70 5f 72 65 70 6c available_dir_entries.=.ncp_repl
16080 79 5f 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 31 32 29 3b 0a 09 74 61 72 67 65 74 2d y_dword_lh(server,.12);..target-
160a0 3e 73 65 63 74 6f 72 73 5f 70 65 72 5f 62 6c 6f 63 6b 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 62 >sectors_per_block.=.ncp_reply_b
160c0 79 74 65 28 73 65 72 76 65 72 2c 20 32 30 29 3b 0a 0a 09 6d 65 6d 73 65 74 28 26 28 74 61 72 67 yte(server,.20);...memset(&(targ
160e0 65 74 2d 3e 76 6f 6c 75 6d 65 5f 6e 61 6d 65 29 2c 20 30 2c 20 73 69 7a 65 6f 66 28 74 61 72 67 et->volume_name),.0,.sizeof(targ
16100 65 74 2d 3e 76 6f 6c 75 6d 65 5f 6e 61 6d 65 29 29 3b 0a 0a 09 72 65 73 75 6c 74 20 3d 20 2d 45 et->volume_name));...result.=.-E
16120 49 4f 3b 0a 09 6c 65 6e 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 62 79 74 65 28 73 65 72 76 65 72 IO;..len.=.ncp_reply_byte(server
16140 2c 20 32 31 29 3b 0a 09 69 66 20 28 6c 65 6e 20 3e 20 4e 43 50 5f 56 4f 4c 4e 41 4d 45 5f 4c 45 ,.21);..if.(len.>.NCP_VOLNAME_LE
16160 4e 29 20 7b 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 76 6f 6c 75 6d 65 20 6e 61 6d 65 20 74 N).{...ncp_dbg(1,."volume.name.t
16180 6f 6f 20 6c 6f 6e 67 3a 20 25 64 5c 6e 22 2c 20 6c 65 6e 29 3b 0a 09 09 67 6f 74 6f 20 6f 75 74 oo.long:.%d\n",.len);...goto.out
161a0 3b 0a 09 7d 0a 09 6d 65 6d 63 70 79 28 26 28 74 61 72 67 65 74 2d 3e 76 6f 6c 75 6d 65 5f 6e 61 ;..}..memcpy(&(target->volume_na
161c0 6d 65 29 2c 20 6e 63 70 5f 72 65 70 6c 79 5f 64 61 74 61 28 73 65 72 76 65 72 2c 20 32 32 29 2c me),.ncp_reply_data(server,.22),
161e0 20 6c 65 6e 29 3b 0a 09 72 65 73 75 6c 74 20 3d 20 30 3b 0a 6f 75 74 3a 0a 09 6e 63 70 5f 75 6e .len);..result.=.0;.out:..ncp_un
16200 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 72 6e 20 72 65 73 lock_server(server);..return.res
16220 75 6c 74 3b 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 63 6c 6f 73 65 5f 66 69 6c 65 28 73 74 72 75 63 ult;.}..int.ncp_close_file(struc
16240 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 t.ncp_server.*server,.const.char
16260 20 2a 66 69 6c 65 5f 69 64 29 0a 7b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 6e 63 70 5f .*file_id).{..int.result;...ncp_
16280 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 init_request(server);..ncp_add_b
162a0 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 6d 65 6d 28 73 65 72 yte(server,.0);..ncp_add_mem(ser
162c0 76 65 72 2c 20 66 69 6c 65 5f 69 64 2c 20 36 29 3b 0a 0a 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 ver,.file_id,.6);...result.=.ncp
162e0 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 36 36 29 3b 0a 09 6e 63 70 5f 75 6e 6c 6f 63 _request(server,.66);..ncp_unloc
16300 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 k_server(server);..return.result
16320 3b 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 6d 61 6b 65 5f 63 6c 6f 73 65 64 28 73 74 72 75 63 74 20 ;.}..int.ncp_make_closed(struct.
16340 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 29 0a 7b 0a 09 69 6e 74 20 65 72 72 3b 0a 0a 09 65 72 72 20 inode.*inode).{..int.err;...err.
16360 3d 20 30 3b 0a 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 =.0;..mutex_lock(&NCP_FINFO(inod
16380 65 29 2d 3e 6f 70 65 6e 5f 6d 75 74 65 78 29 3b 0a 09 69 66 20 28 61 74 6f 6d 69 63 5f 72 65 61 e)->open_mutex);..if.(atomic_rea
163a0 64 28 26 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6f 70 65 6e 65 64 29 20 3d 3d 20 d(&NCP_FINFO(inode)->opened).==.
163c0 31 29 20 7b 0a 09 09 61 74 6f 6d 69 63 5f 73 65 74 28 26 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 1).{...atomic_set(&NCP_FINFO(ino
163e0 64 65 29 2d 3e 6f 70 65 6e 65 64 2c 20 30 29 3b 0a 09 09 65 72 72 20 3d 20 6e 63 70 5f 63 6c 6f de)->opened,.0);...err.=.ncp_clo
16400 73 65 5f 66 69 6c 65 28 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2c 20 4e 43 50 5f 46 se_file(NCP_SERVER(inode),.NCP_F
16420 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 66 69 6c 65 5f 68 61 6e 64 6c 65 29 3b 0a 0a 09 09 69 66 INFO(inode)->file_handle);....if
16440 20 28 21 65 72 72 29 0a 09 09 09 6e 63 70 5f 76 64 62 67 28 22 76 6f 6c 6e 75 6d 3d 25 64 2c 20 .(!err)....ncp_vdbg("volnum=%d,.
16460 64 69 72 65 6e 74 3d 25 75 2c 20 65 72 72 6f 72 3d 25 64 5c 6e 22 2c 0a 09 09 09 09 20 4e 43 50 dirent=%u,.error=%d\n",......NCP
16480 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 2c 0a 09 09 09 09 20 4e _FINFO(inode)->volNumber,......N
164a0 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 64 69 72 45 6e 74 4e 75 6d 2c 20 65 72 72 29 CP_FINFO(inode)->dirEntNum,.err)
164c0 3b 0a 09 7d 0a 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 4e 43 50 5f 46 49 4e 46 4f 28 69 6e ;..}..mutex_unlock(&NCP_FINFO(in
164e0 6f 64 65 29 2d 3e 6f 70 65 6e 5f 6d 75 74 65 78 29 3b 0a 09 72 65 74 75 72 6e 20 65 72 72 3b 0a ode)->open_mutex);..return.err;.
16500 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 61 64 64 5f 68 61 6e 64 6c 65 5f 70 61 }..static.void.ncp_add_handle_pa
16520 74 68 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 5f 5f th(struct.ncp_server.*server,.__
16540 75 38 20 76 6f 6c 5f 6e 75 6d 2c 0a 09 09 09 09 5f 5f 6c 65 33 32 20 64 69 72 5f 62 61 73 65 2c u8.vol_num,.....__le32.dir_base,
16560 20 69 6e 74 20 68 61 76 65 5f 64 69 72 5f 62 61 73 65 2c 20 0a 09 09 09 09 63 6f 6e 73 74 20 63 .int.have_dir_base,......const.c
16580 68 61 72 20 2a 70 61 74 68 29 0a 7b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 har.*path).{..ncp_add_byte(serve
165a0 72 2c 20 76 6f 6c 5f 6e 75 6d 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 64 77 6f 72 64 28 73 65 72 76 r,.vol_num);..ncp_add_dword(serv
165c0 65 72 2c 20 64 69 72 5f 62 61 73 65 29 3b 0a 09 69 66 20 28 68 61 76 65 5f 64 69 72 5f 62 61 73 er,.dir_base);..if.(have_dir_bas
165e0 65 20 21 3d 20 30 29 20 7b 0a 09 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c e.!=.0).{...ncp_add_byte(server,
16600 20 31 29 3b 09 2f 2a 20 64 69 72 5f 62 61 73 65 20 2a 2f 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 .1);./*.dir_base.*/..}.else.{...
16620 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 78 66 66 29 3b 09 2f 2a 20 6e ncp_add_byte(server,.0xff);./*.n
16640 6f 20 68 61 6e 64 6c 65 20 2a 2f 0a 09 7d 0a 09 69 66 20 28 70 61 74 68 20 21 3d 20 4e 55 4c 4c o.handle.*/..}..if.(path.!=.NULL
16660 29 20 7b 0a 09 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 31 29 3b 09 2f ).{...ncp_add_byte(server,.1);./
16680 2a 20 31 20 63 6f 6d 70 6f 6e 65 6e 74 20 2a 2f 0a 09 09 6e 63 70 5f 61 64 64 5f 70 73 74 72 69 *.1.component.*/...ncp_add_pstri
166a0 6e 67 28 73 65 72 76 65 72 2c 20 70 61 74 68 29 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 6e 63 ng(server,.path);..}.else.{...nc
166c0 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b 0a 09 7d 0a 7d 0a 0a 69 6e 74 p_add_byte(server,.0);..}.}..int
166e0 20 6e 63 70 5f 64 69 72 68 61 6e 64 6c 65 5f 61 6c 6c 6f 63 28 73 74 72 75 63 74 20 6e 63 70 5f .ncp_dirhandle_alloc(struct.ncp_
16700 73 65 72 76 65 72 2a 20 73 65 72 76 65 72 2c 20 5f 5f 75 38 20 76 6f 6c 6e 75 6d 2c 20 5f 5f 6c server*.server,.__u8.volnum,.__l
16720 65 33 32 20 64 69 72 65 6e 74 2c 0a 09 09 09 5f 5f 75 38 2a 20 64 69 72 68 61 6e 64 6c 65 29 20 e32.dirent,....__u8*.dirhandle).
16740 7b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 {..int.result;...ncp_init_reques
16760 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c t(server);..ncp_add_byte(server,
16780 20 31 32 29 3b 09 09 2f 2a 20 73 75 62 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 09 6e 63 70 5f 61 64 .12);../*.subfunction.*/..ncp_ad
167a0 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 4e 57 5f 4e 53 5f 44 4f 53 29 3b 0a 09 6e 63 70 5f d_byte(server,.NW_NS_DOS);..ncp_
167c0 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 77 6f add_byte(server,.0);..ncp_add_wo
167e0 72 64 28 73 65 72 76 65 72 2c 20 30 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 68 61 6e 64 6c 65 5f 70 rd(server,.0);..ncp_add_handle_p
16800 61 74 68 28 73 65 72 76 65 72 2c 20 76 6f 6c 6e 75 6d 2c 20 64 69 72 65 6e 74 2c 20 31 2c 20 4e ath(server,.volnum,.dirent,.1,.N
16820 55 4c 4c 29 3b 0a 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 ULL);..if.((result.=.ncp_request
16840 28 73 65 72 76 65 72 2c 20 38 37 29 29 20 3d 3d 20 30 29 20 7b 0a 09 09 2a 64 69 72 68 61 6e 64 (server,.87)).==.0).{...*dirhand
16860 6c 65 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b 0a le.=.ncp_reply_byte(server,.0);.
16880 09 7d 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 .}..ncp_unlock_server(server);..
168a0 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 69 6e 74 20 6e 63 70 5f 64 69 72 68 61 6e return.result;.}..int.ncp_dirhan
168c0 64 6c 65 5f 66 72 65 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2a 20 73 65 72 76 dle_free(struct.ncp_server*.serv
168e0 65 72 2c 20 5f 5f 75 38 20 64 69 72 68 61 6e 64 6c 65 29 20 7b 0a 09 69 6e 74 20 72 65 73 75 6c er,.__u8.dirhandle).{..int.resul
16900 74 3b 0a 09 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 5f 73 28 73 65 72 76 65 72 2c t;....ncp_init_request_s(server,
16920 20 32 30 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 64 69 72 68 .20);..ncp_add_byte(server,.dirh
16940 61 6e 64 6c 65 29 3b 0a 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 andle);..result.=.ncp_request(se
16960 72 76 65 72 2c 20 32 32 29 3b 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 rver,.22);..ncp_unlock_server(se
16980 72 76 65 72 29 3b 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 76 6f 69 64 20 6e rver);..return.result;.}..void.n
169a0 63 70 5f 65 78 74 72 61 63 74 5f 66 69 6c 65 5f 69 6e 66 6f 28 63 6f 6e 73 74 20 76 6f 69 64 20 cp_extract_file_info(const.void.
169c0 2a 73 74 72 75 63 74 75 72 65 2c 20 73 74 72 75 63 74 20 6e 77 5f 69 6e 66 6f 5f 73 74 72 75 63 *structure,.struct.nw_info_struc
169e0 74 20 2a 74 61 72 67 65 74 29 0a 7b 0a 09 63 6f 6e 73 74 20 5f 5f 75 38 20 2a 6e 61 6d 65 5f 6c t.*target).{..const.__u8.*name_l
16a00 65 6e 3b 0a 09 63 6f 6e 73 74 20 69 6e 74 20 69 6e 66 6f 5f 73 74 72 75 63 74 5f 73 69 7a 65 20 en;..const.int.info_struct_size.
16a20 3d 20 6f 66 66 73 65 74 6f 66 28 73 74 72 75 63 74 20 6e 77 5f 69 6e 66 6f 5f 73 74 72 75 63 74 =.offsetof(struct.nw_info_struct
16a40 2c 20 6e 61 6d 65 4c 65 6e 29 3b 0a 0a 09 6d 65 6d 63 70 79 28 74 61 72 67 65 74 2c 20 73 74 72 ,.nameLen);...memcpy(target,.str
16a60 75 63 74 75 72 65 2c 20 69 6e 66 6f 5f 73 74 72 75 63 74 5f 73 69 7a 65 29 3b 0a 09 6e 61 6d 65 ucture,.info_struct_size);..name
16a80 5f 6c 65 6e 20 3d 20 73 74 72 75 63 74 75 72 65 20 2b 20 69 6e 66 6f 5f 73 74 72 75 63 74 5f 73 _len.=.structure.+.info_struct_s
16aa0 69 7a 65 3b 0a 09 74 61 72 67 65 74 2d 3e 6e 61 6d 65 4c 65 6e 20 3d 20 2a 6e 61 6d 65 5f 6c 65 ize;..target->nameLen.=.*name_le
16ac0 6e 3b 0a 09 6d 65 6d 63 70 79 28 74 61 72 67 65 74 2d 3e 65 6e 74 72 79 4e 61 6d 65 2c 20 6e 61 n;..memcpy(target->entryName,.na
16ae0 6d 65 5f 6c 65 6e 20 2b 20 31 2c 20 2a 6e 61 6d 65 5f 6c 65 6e 29 3b 0a 09 74 61 72 67 65 74 2d me_len.+.1,.*name_len);..target-
16b00 3e 65 6e 74 72 79 4e 61 6d 65 5b 2a 6e 61 6d 65 5f 6c 65 6e 5d 20 3d 20 27 5c 30 27 3b 0a 09 74 >entryName[*name_len].=.'\0';..t
16b20 61 72 67 65 74 2d 3e 76 6f 6c 4e 75 6d 62 65 72 20 3d 20 6c 65 33 32 5f 74 6f 5f 63 70 75 28 74 arget->volNumber.=.le32_to_cpu(t
16b40 61 72 67 65 74 2d 3e 76 6f 6c 4e 75 6d 62 65 72 29 3b 0a 09 72 65 74 75 72 6e 3b 0a 7d 0a 0a 23 arget->volNumber);..return;.}..#
16b60 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 0a 73 74 61 74 69 63 ifdef.CONFIG_NCPFS_NFS_NS.static
16b80 20 69 6e 6c 69 6e 65 20 76 6f 69 64 20 6e 63 70 5f 65 78 74 72 61 63 74 5f 6e 66 73 5f 69 6e 66 .inline.void.ncp_extract_nfs_inf
16ba0 6f 28 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 73 74 72 75 63 74 75 72 65 o(const.unsigned.char.*structure
16bc0 2c 0a 09 09 09 09 20 73 74 72 75 63 74 20 6e 77 5f 6e 66 73 5f 69 6e 66 6f 20 2a 74 61 72 67 65 ,......struct.nw_nfs_info.*targe
16be0 74 29 0a 7b 0a 09 74 61 72 67 65 74 2d 3e 6d 6f 64 65 20 3d 20 44 56 41 4c 5f 4c 48 28 73 74 72 t).{..target->mode.=.DVAL_LH(str
16c00 75 63 74 75 72 65 29 3b 0a 09 74 61 72 67 65 74 2d 3e 72 64 65 76 20 3d 20 44 56 41 4c 5f 4c 48 ucture);..target->rdev.=.DVAL_LH
16c20 28 73 74 72 75 63 74 75 72 65 20 2b 20 38 29 3b 0a 7d 0a 23 65 6e 64 69 66 0a 0a 69 6e 74 20 6e (structure.+.8);.}.#endif..int.n
16c40 63 70 5f 6f 62 74 61 69 6e 5f 6e 66 73 5f 69 6e 66 6f 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 cp_obtain_nfs_info(struct.ncp_se
16c60 72 76 65 72 20 2a 73 65 72 76 65 72 2c 0a 09 09 20 20 20 20 20 20 20 20 73 74 72 75 63 74 20 6e rver.*server,...........struct.n
16c80 77 5f 69 6e 66 6f 5f 73 74 72 75 63 74 20 2a 74 61 72 67 65 74 29 0a 0a 7b 0a 09 69 6e 74 20 72 w_info_struct.*target)..{..int.r
16ca0 65 73 75 6c 74 20 3d 20 30 3b 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e esult.=.0;.#ifdef.CONFIG_NCPFS_N
16cc0 46 53 5f 4e 53 0a 09 5f 5f 75 33 32 20 76 6f 6c 6e 75 6d 20 3d 20 74 61 72 67 65 74 2d 3e 76 6f FS_NS..__u32.volnum.=.target->vo
16ce0 6c 4e 75 6d 62 65 72 3b 0a 0a 09 69 66 20 28 6e 63 70 5f 69 73 5f 6e 66 73 5f 65 78 74 72 61 73 lNumber;...if.(ncp_is_nfs_extras
16d00 28 73 65 72 76 65 72 2c 20 76 6f 6c 6e 75 6d 29 29 20 7b 0a 09 09 6e 63 70 5f 69 6e 69 74 5f 72 (server,.volnum)).{...ncp_init_r
16d20 65 71 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a 09 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 equest(server);...ncp_add_byte(s
16d40 65 72 76 65 72 2c 20 31 39 29 3b 09 2f 2a 20 73 75 62 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 09 09 erver,.19);./*.subfunction.*/...
16d60 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 73 65 72 76 65 72 2d 3e 6e 61 6d ncp_add_byte(server,.server->nam
16d80 65 5f 73 70 61 63 65 5b 76 6f 6c 6e 75 6d 5d 29 3b 0a 09 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 e_space[volnum]);...ncp_add_byte
16da0 28 73 65 72 76 65 72 2c 20 4e 57 5f 4e 53 5f 4e 46 53 29 3b 0a 09 09 6e 63 70 5f 61 64 64 5f 62 (server,.NW_NS_NFS);...ncp_add_b
16dc0 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b 0a 09 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 yte(server,.0);...ncp_add_byte(s
16de0 65 72 76 65 72 2c 20 76 6f 6c 6e 75 6d 29 3b 0a 09 09 6e 63 70 5f 61 64 64 5f 64 77 6f 72 64 28 erver,.volnum);...ncp_add_dword(
16e00 73 65 72 76 65 72 2c 20 74 61 72 67 65 74 2d 3e 64 69 72 45 6e 74 4e 75 6d 29 3b 0a 09 09 2f 2a server,.target->dirEntNum);.../*
16e20 20 57 65 20 6d 75 73 74 20 72 65 74 72 69 65 76 65 20 62 6f 74 68 20 6e 6c 69 6e 6b 73 20 61 6e .We.must.retrieve.both.nlinks.an
16e40 64 20 72 64 65 76 2c 20 6f 74 68 65 72 77 69 73 65 20 73 6f 6d 65 20 73 65 72 76 65 72 20 76 65 d.rdev,.otherwise.some.server.ve
16e60 72 73 69 6f 6e 73 0a 09 09 20 20 20 72 65 70 6f 72 74 20 7a 65 72 6f 65 73 20 69 6e 73 74 65 61 rsions......report.zeroes.instea
16e80 64 20 6f 66 20 76 61 6c 69 64 20 64 61 74 61 20 2a 2f 0a 09 09 6e 63 70 5f 61 64 64 5f 64 77 6f d.of.valid.data.*/...ncp_add_dwo
16ea0 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 4e 53 49 42 4d 5f 4e 46 53 5f 4d 4f 44 45 20 7c 20 4e rd_lh(server,.NSIBM_NFS_MODE.|.N
16ec0 53 49 42 4d 5f 4e 46 53 5f 4e 4c 49 4e 4b 53 20 7c 20 4e 53 49 42 4d 5f 4e 46 53 5f 52 44 45 56 SIBM_NFS_NLINKS.|.NSIBM_NFS_RDEV
16ee0 29 3b 0a 0a 09 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 );....if.((result.=.ncp_request(
16f00 73 65 72 76 65 72 2c 20 38 37 29 29 20 3d 3d 20 30 29 20 7b 0a 09 09 09 6e 63 70 5f 65 78 74 72 server,.87)).==.0).{....ncp_extr
16f20 61 63 74 5f 6e 66 73 5f 69 6e 66 6f 28 6e 63 70 5f 72 65 70 6c 79 5f 64 61 74 61 28 73 65 72 76 act_nfs_info(ncp_reply_data(serv
16f40 65 72 2c 20 30 29 2c 20 26 74 61 72 67 65 74 2d 3e 6e 66 73 29 3b 0a 09 09 09 6e 63 70 5f 64 62 er,.0),.&target->nfs);....ncp_db
16f60 67 28 31 2c 20 22 28 25 73 29 20 6d 6f 64 65 3d 30 25 6f 2c 20 72 64 65 76 3d 30 78 25 78 5c 6e g(1,."(%s).mode=0%o,.rdev=0x%x\n
16f80 22 2c 0a 09 09 09 09 74 61 72 67 65 74 2d 3e 65 6e 74 72 79 4e 61 6d 65 2c 20 74 61 72 67 65 74 ",.....target->entryName,.target
16fa0 2d 3e 6e 66 73 2e 6d 6f 64 65 2c 0a 09 09 09 09 74 61 72 67 65 74 2d 3e 6e 66 73 2e 72 64 65 76 ->nfs.mode,.....target->nfs.rdev
16fc0 29 3b 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 74 61 72 67 65 74 2d 3e 6e 66 73 2e 6d 6f 64 );...}.else.{....target->nfs.mod
16fe0 65 20 3d 20 30 3b 0a 09 09 09 74 61 72 67 65 74 2d 3e 6e 66 73 2e 72 64 65 76 20 3d 20 30 3b 0a e.=.0;....target->nfs.rdev.=.0;.
17000 09 09 7d 0a 09 20 20 20 20 20 20 20 20 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 ..}..........ncp_unlock_server(s
17020 65 72 76 65 72 29 3b 0a 0a 09 7d 20 65 6c 73 65 0a 23 65 6e 64 69 66 0a 09 7b 0a 09 09 74 61 72 erver);...}.else.#endif..{...tar
17040 67 65 74 2d 3e 6e 66 73 2e 6d 6f 64 65 20 3d 20 30 3b 0a 09 09 74 61 72 67 65 74 2d 3e 6e 66 73 get->nfs.mode.=.0;...target->nfs
17060 2e 72 64 65 76 20 3d 20 30 3b 0a 09 7d 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a .rdev.=.0;..}..return.result;.}.
17080 0a 2f 2a 0a 20 2a 20 52 65 74 75 72 6e 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 6f 72 20 61 ./*..*.Returns.information.for.a
170a0 20 28 6f 6e 65 2d 63 6f 6d 70 6f 6e 65 6e 74 29 20 6e 61 6d 65 20 72 65 6c 61 74 69 76 65 20 74 .(one-component).name.relative.t
170c0 6f 0a 20 2a 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 64 69 72 65 63 74 6f 72 79 2e 0a 20 2a o..*.the.specified.directory...*
170e0 2f 0a 69 6e 74 20 6e 63 70 5f 6f 62 74 61 69 6e 5f 69 6e 66 6f 28 73 74 72 75 63 74 20 6e 63 70 /.int.ncp_obtain_info(struct.ncp
17100 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 64 _server.*server,.struct.inode.*d
17120 69 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 61 74 68 2c 0a 09 09 09 73 74 72 75 63 74 20 ir,.const.char.*path,....struct.
17140 6e 77 5f 69 6e 66 6f 5f 73 74 72 75 63 74 20 2a 74 61 72 67 65 74 29 0a 7b 0a 09 5f 5f 75 38 20 nw_info_struct.*target).{..__u8.
17160 20 76 6f 6c 6e 75 6d 20 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 64 69 72 29 2d 3e 76 6f 6c 4e 75 6d .volnum.=.NCP_FINFO(dir)->volNum
17180 62 65 72 3b 0a 09 5f 5f 6c 65 33 32 20 64 69 72 65 6e 74 20 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 ber;..__le32.dirent.=.NCP_FINFO(
171a0 64 69 72 29 2d 3e 64 69 72 45 6e 74 4e 75 6d 3b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 dir)->dirEntNum;..int.result;...
171c0 69 66 20 28 74 61 72 67 65 74 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 09 09 70 72 5f 65 72 72 28 22 if.(target.==.NULL).{...pr_err("
171e0 25 73 3a 20 69 6e 76 61 6c 69 64 20 63 61 6c 6c 5c 6e 22 2c 20 5f 5f 66 75 6e 63 5f 5f 29 3b 0a %s:.invalid.call\n",.__func__);.
17200 09 09 72 65 74 75 72 6e 20 2d 45 49 4e 56 41 4c 3b 0a 09 7d 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 ..return.-EINVAL;..}..ncp_init_r
17220 65 71 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 equest(server);..ncp_add_byte(se
17240 72 76 65 72 2c 20 36 29 3b 09 2f 2a 20 73 75 62 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 09 6e 63 70 rver,.6);./*.subfunction.*/..ncp
17260 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 73 65 72 76 65 72 2d 3e 6e 61 6d 65 5f 73 _add_byte(server,.server->name_s
17280 70 61 63 65 5b 76 6f 6c 6e 75 6d 5d 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 pace[volnum]);..ncp_add_byte(ser
172a0 76 65 72 2c 20 73 65 72 76 65 72 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 5b 76 6f 6c 6e 75 6d 5d 29 ver,.server->name_space[volnum])
172c0 3b 20 2f 2a 20 4e 2e 42 2e 20 74 77 69 63 65 20 3f 3f 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 77 ;./*.N.B..twice.??.*/..ncp_add_w
172e0 6f 72 64 28 73 65 72 76 65 72 2c 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 30 78 38 30 30 36 29 29 ord(server,.cpu_to_le16(0x8006))
17300 3b 09 2f 2a 20 67 65 74 20 61 6c 6c 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 64 77 6f 72 64 28 73 ;./*.get.all.*/..ncp_add_dword(s
17320 65 72 76 65 72 2c 20 52 49 4d 5f 41 4c 4c 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 68 61 6e 64 6c 65 erver,.RIM_ALL);..ncp_add_handle
17340 5f 70 61 74 68 28 73 65 72 76 65 72 2c 20 76 6f 6c 6e 75 6d 2c 20 64 69 72 65 6e 74 2c 20 31 2c _path(server,.volnum,.dirent,.1,
17360 20 70 61 74 68 29 3b 0a 0a 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 .path);...if.((result.=.ncp_requ
17380 65 73 74 28 73 65 72 76 65 72 2c 20 38 37 29 29 20 21 3d 20 30 29 0a 09 09 67 6f 74 6f 20 6f 75 est(server,.87)).!=.0)...goto.ou
173a0 74 3b 0a 09 6e 63 70 5f 65 78 74 72 61 63 74 5f 66 69 6c 65 5f 69 6e 66 6f 28 6e 63 70 5f 72 65 t;..ncp_extract_file_info(ncp_re
173c0 70 6c 79 5f 64 61 74 61 28 73 65 72 76 65 72 2c 20 30 29 2c 20 74 61 72 67 65 74 29 3b 0a 09 6e ply_data(server,.0),.target);..n
173e0 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 0a 09 72 65 73 cp_unlock_server(server);....res
17400 75 6c 74 20 3d 20 6e 63 70 5f 6f 62 74 61 69 6e 5f 6e 66 73 5f 69 6e 66 6f 28 73 65 72 76 65 72 ult.=.ncp_obtain_nfs_info(server
17420 2c 20 74 61 72 67 65 74 29 3b 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 0a 6f 75 74 3a ,.target);..return.result;..out:
17440 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 72 65 ..ncp_unlock_server(server);..re
17460 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 turn.result;.}..#ifdef.CONFIG_NC
17480 50 46 53 5f 4e 46 53 5f 4e 53 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 6f 62 74 61 69 6e PFS_NFS_NS.static.int.ncp_obtain
174a0 5f 44 4f 53 5f 64 69 72 5f 62 61 73 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 _DOS_dir_base(struct.ncp_server.
174c0 2a 73 65 72 76 65 72 2c 0a 09 09 5f 5f 75 38 20 6e 73 2c 20 5f 5f 75 38 20 76 6f 6c 6e 75 6d 2c *server,...__u8.ns,.__u8.volnum,
174e0 20 5f 5f 6c 65 33 32 20 64 69 72 65 6e 74 2c 0a 09 09 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 61 .__le32.dirent,...const.char.*pa
17500 74 68 2c 20 2f 2a 20 41 74 20 6d 6f 73 74 20 31 20 63 6f 6d 70 6f 6e 65 6e 74 20 2a 2f 0a 09 09 th,./*.At.most.1.component.*/...
17520 5f 5f 6c 65 33 32 20 2a 44 4f 53 5f 64 69 72 5f 62 61 73 65 29 0a 7b 0a 09 69 6e 74 20 72 65 73 __le32.*DOS_dir_base).{..int.res
17540 75 6c 74 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 29 3b ult;...ncp_init_request(server);
17560 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 36 29 3b 20 2f 2a 20 73 75 ..ncp_add_byte(server,.6);./*.su
17580 62 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 bfunction.*/..ncp_add_byte(serve
175a0 72 2c 20 6e 73 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 6e 73 r,.ns);..ncp_add_byte(server,.ns
175c0 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 77 6f 72 64 28 73 65 72 76 65 72 2c 20 63 70 75 5f 74 6f 5f );..ncp_add_word(server,.cpu_to_
175e0 6c 65 31 36 28 30 78 38 30 30 36 29 29 3b 20 2f 2a 20 67 65 74 20 61 6c 6c 20 2a 2f 0a 09 6e 63 le16(0x8006));./*.get.all.*/..nc
17600 70 5f 61 64 64 5f 64 77 6f 72 64 28 73 65 72 76 65 72 2c 20 52 49 4d 5f 44 49 52 45 43 54 4f 52 p_add_dword(server,.RIM_DIRECTOR
17620 59 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 68 61 6e 64 6c 65 5f 70 61 74 68 28 73 65 72 76 65 72 2c Y);..ncp_add_handle_path(server,
17640 20 76 6f 6c 6e 75 6d 2c 20 64 69 72 65 6e 74 2c 20 31 2c 20 70 61 74 68 29 3b 0a 0a 09 69 66 20 .volnum,.dirent,.1,.path);...if.
17660 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 38 ((result.=.ncp_request(server,.8
17680 37 29 29 20 3d 3d 20 30 29 0a 09 7b 0a 09 20 20 20 09 69 66 20 28 44 4f 53 5f 64 69 72 5f 62 61 7)).==.0)..{......if.(DOS_dir_ba
176a0 73 65 29 20 2a 44 4f 53 5f 64 69 72 5f 62 61 73 65 3d 6e 63 70 5f 72 65 70 6c 79 5f 64 77 6f 72 se).*DOS_dir_base=ncp_reply_dwor
176c0 64 28 73 65 72 76 65 72 2c 20 30 78 33 34 29 3b 0a 09 7d 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f d(server,.0x34);..}..ncp_unlock_
176e0 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a server(server);..return.result;.
17700 7d 0a 23 65 6e 64 69 66 20 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 20 }.#endif./*.CONFIG_NCPFS_NFS_NS.
17720 2a 2f 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 69 6e 74 0a 6e 63 70 5f 67 65 74 5f 6b 6e */..static.inline.int.ncp_get_kn
17740 6f 77 6e 5f 6e 61 6d 65 73 70 61 63 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 own_namespace(struct.ncp_server.
17760 2a 73 65 72 76 65 72 2c 20 5f 5f 75 38 20 76 6f 6c 75 6d 65 29 0a 7b 0a 23 69 66 20 64 65 66 69 *server,.__u8.volume).{.#if.defi
17780 6e 65 64 28 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4f 53 32 5f 4e 53 29 20 7c 7c 20 64 65 66 69 ned(CONFIG_NCPFS_OS2_NS).||.defi
177a0 6e 65 64 28 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 29 0a 09 69 6e 74 20 72 65 ned(CONFIG_NCPFS_NFS_NS)..int.re
177c0 73 75 6c 74 3b 0a 09 5f 5f 75 38 20 2a 6e 61 6d 65 73 70 61 63 65 3b 0a 09 5f 5f 75 31 36 20 6e sult;..__u8.*namespace;..__u16.n
177e0 6f 5f 6e 61 6d 65 73 70 61 63 65 73 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 o_namespaces;...ncp_init_request
17800 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 (server);..ncp_add_byte(server,.
17820 32 34 29 3b 09 2f 2a 20 53 75 62 66 75 6e 63 74 69 6f 6e 3a 20 47 65 74 20 4e 61 6d 65 20 53 70 24);./*.Subfunction:.Get.Name.Sp
17840 61 63 65 73 20 4c 6f 61 64 65 64 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 77 6f 72 64 28 73 65 72 aces.Loaded.*/..ncp_add_word(ser
17860 76 65 72 2c 20 30 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 76 ver,.0);..ncp_add_byte(server,.v
17880 6f 6c 75 6d 65 29 3b 0a 0a 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 olume);...if.((result.=.ncp_requ
178a0 65 73 74 28 73 65 72 76 65 72 2c 20 38 37 29 29 20 21 3d 20 30 29 20 7b 0a 09 09 6e 63 70 5f 75 est(server,.87)).!=.0).{...ncp_u
178c0 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 72 65 74 75 72 6e 20 4e nlock_server(server);...return.N
178e0 57 5f 4e 53 5f 44 4f 53 3b 20 2f 2a 20 6e 6f 74 20 72 65 73 75 6c 74 20 3f 3f 20 2a 2f 0a 09 7d W_NS_DOS;./*.not.result.??.*/..}
17900 0a 0a 09 72 65 73 75 6c 74 20 3d 20 4e 57 5f 4e 53 5f 44 4f 53 3b 0a 09 6e 6f 5f 6e 61 6d 65 73 ...result.=.NW_NS_DOS;..no_names
17920 70 61 63 65 73 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 6c 65 31 36 28 73 65 72 76 65 72 2c 20 30 paces.=.ncp_reply_le16(server,.0
17940 29 3b 0a 09 6e 61 6d 65 73 70 61 63 65 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 64 61 74 61 28 73 );..namespace.=.ncp_reply_data(s
17960 65 72 76 65 72 2c 20 32 29 3b 0a 0a 09 77 68 69 6c 65 20 28 6e 6f 5f 6e 61 6d 65 73 70 61 63 65 erver,.2);...while.(no_namespace
17980 73 20 3e 20 30 29 20 7b 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 66 6f 75 6e 64 20 25 64 20 s.>.0).{...ncp_dbg(1,."found.%d.
179a0 6f 6e 20 25 64 5c 6e 22 2c 20 2a 6e 61 6d 65 73 70 61 63 65 2c 20 76 6f 6c 75 6d 65 29 3b 0a 0a on.%d\n",.*namespace,.volume);..
179c0 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 0a 09 09 69 66 20 #ifdef.CONFIG_NCPFS_NFS_NS...if.
179e0 28 28 2a 6e 61 6d 65 73 70 61 63 65 20 3d 3d 20 4e 57 5f 4e 53 5f 4e 46 53 29 20 26 26 20 21 28 ((*namespace.==.NW_NS_NFS).&&.!(
17a00 73 65 72 76 65 72 2d 3e 6d 2e 66 6c 61 67 73 26 4e 43 50 5f 4d 4f 55 4e 54 5f 4e 4f 5f 4e 46 53 server->m.flags&NCP_MOUNT_NO_NFS
17a20 29 29 20 0a 09 09 7b 0a 09 09 09 72 65 73 75 6c 74 20 3d 20 4e 57 5f 4e 53 5f 4e 46 53 3b 0a 09 ))....{....result.=.NW_NS_NFS;..
17a40 09 09 62 72 65 61 6b 3b 0a 09 09 7d 0a 23 65 6e 64 69 66 09 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 ..break;...}.#endif./*.CONFIG_NC
17a60 50 46 53 5f 4e 46 53 5f 4e 53 20 2a 2f 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 PFS_NFS_NS.*/.#ifdef.CONFIG_NCPF
17a80 53 5f 4f 53 32 5f 4e 53 0a 09 09 69 66 20 28 28 2a 6e 61 6d 65 73 70 61 63 65 20 3d 3d 20 4e 57 S_OS2_NS...if.((*namespace.==.NW
17aa0 5f 4e 53 5f 4f 53 32 29 20 26 26 20 21 28 73 65 72 76 65 72 2d 3e 6d 2e 66 6c 61 67 73 26 4e 43 _NS_OS2).&&.!(server->m.flags&NC
17ac0 50 5f 4d 4f 55 4e 54 5f 4e 4f 5f 4f 53 32 29 29 0a 09 09 7b 0a 09 09 09 72 65 73 75 6c 74 20 3d P_MOUNT_NO_OS2))...{....result.=
17ae0 20 4e 57 5f 4e 53 5f 4f 53 32 3b 0a 09 09 7d 0a 23 65 6e 64 69 66 09 2f 2a 20 43 4f 4e 46 49 47 .NW_NS_OS2;...}.#endif./*.CONFIG
17b00 5f 4e 43 50 46 53 5f 4f 53 32 5f 4e 53 20 2a 2f 0a 09 09 6e 61 6d 65 73 70 61 63 65 20 2b 3d 20 _NCPFS_OS2_NS.*/...namespace.+=.
17b20 31 3b 0a 09 09 6e 6f 5f 6e 61 6d 65 73 70 61 63 65 73 20 2d 3d 20 31 3b 0a 09 7d 0a 09 6e 63 70 1;...no_namespaces.-=.1;..}..ncp
17b40 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 72 6e 20 _unlock_server(server);..return.
17b60 72 65 73 75 6c 74 3b 0a 23 65 6c 73 65 09 2f 2a 20 6e 65 69 74 68 65 72 20 4f 53 32 20 6e 6f 72 result;.#else./*.neither.OS2.nor
17b80 20 4e 46 53 20 2d 20 6f 6e 6c 79 20 44 4f 53 20 2a 2f 0a 09 72 65 74 75 72 6e 20 4e 57 5f 4e 53 .NFS.-.only.DOS.*/..return.NW_NS
17ba0 5f 44 4f 53 3b 0a 23 65 6e 64 69 66 09 2f 2a 20 64 65 66 69 6e 65 64 28 43 4f 4e 46 49 47 5f 4e _DOS;.#endif./*.defined(CONFIG_N
17bc0 43 50 46 53 5f 4f 53 32 5f 4e 53 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 43 4f 4e 46 49 47 5f 4e CPFS_OS2_NS).||.defined(CONFIG_N
17be0 43 50 46 53 5f 4e 46 53 5f 4e 53 29 20 2a 2f 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 75 70 64 61 74 CPFS_NFS_NS).*/.}..int.ncp_updat
17c00 65 5f 6b 6e 6f 77 6e 5f 6e 61 6d 65 73 70 61 63 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 e_known_namespace(struct.ncp_ser
17c20 76 65 72 20 2a 73 65 72 76 65 72 2c 20 5f 5f 75 38 20 76 6f 6c 75 6d 65 2c 20 69 6e 74 20 2a 72 ver.*server,.__u8.volume,.int.*r
17c40 65 74 5f 6e 73 29 0a 7b 0a 09 69 6e 74 20 6e 73 20 3d 20 6e 63 70 5f 67 65 74 5f 6b 6e 6f 77 6e et_ns).{..int.ns.=.ncp_get_known
17c60 5f 6e 61 6d 65 73 70 61 63 65 28 73 65 72 76 65 72 2c 20 76 6f 6c 75 6d 65 29 3b 0a 0a 09 69 66 _namespace(server,.volume);...if
17c80 20 28 72 65 74 5f 6e 73 29 0a 09 09 2a 72 65 74 5f 6e 73 20 3d 20 6e 73 3b 0a 0a 09 6e 63 70 5f .(ret_ns)...*ret_ns.=.ns;...ncp_
17ca0 64 62 67 28 31 2c 20 22 6e 61 6d 65 73 70 61 63 65 5b 25 64 5d 20 3d 20 25 64 5c 6e 22 2c 20 76 dbg(1,."namespace[%d].=.%d\n",.v
17cc0 6f 6c 75 6d 65 2c 20 73 65 72 76 65 72 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 5b 76 6f 6c 75 6d 65 olume,.server->name_space[volume
17ce0 5d 29 3b 0a 0a 09 69 66 20 28 73 65 72 76 65 72 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 5b 76 6f 6c ]);...if.(server->name_space[vol
17d00 75 6d 65 5d 20 3d 3d 20 6e 73 29 0a 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 73 65 72 76 65 72 2d ume].==.ns)...return.0;..server-
17d20 3e 6e 61 6d 65 5f 73 70 61 63 65 5b 76 6f 6c 75 6d 65 5d 20 3d 20 6e 73 3b 0a 09 72 65 74 75 72 >name_space[volume].=.ns;..retur
17d40 6e 20 31 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 4f 62 74 61 69 6e 53 70 65 n.1;.}..static.int.ncp_ObtainSpe
17d60 63 69 66 69 63 44 69 72 42 61 73 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a cificDirBase(struct.ncp_server.*
17d80 73 65 72 76 65 72 2c 0a 09 09 5f 5f 75 38 20 6e 73 53 72 63 2c 20 5f 5f 75 38 20 6e 73 44 73 74 server,...__u8.nsSrc,.__u8.nsDst
17da0 2c 20 5f 5f 75 38 20 76 6f 6c 5f 6e 75 6d 2c 20 5f 5f 6c 65 33 32 20 64 69 72 5f 62 61 73 65 2c ,.__u8.vol_num,.__le32.dir_base,
17dc0 0a 09 09 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 61 74 68 2c 20 2f 2a 20 41 74 20 6d 6f 73 74 20 ...const.char.*path,./*.At.most.
17de0 31 20 63 6f 6d 70 6f 6e 65 6e 74 20 2a 2f 0a 09 09 5f 5f 6c 65 33 32 20 2a 64 69 72 45 6e 74 4e 1.component.*/...__le32.*dirEntN
17e00 75 6d 2c 20 5f 5f 6c 65 33 32 20 2a 44 6f 73 44 69 72 4e 75 6d 29 0a 7b 0a 09 69 6e 74 20 72 65 um,.__le32.*DosDirNum).{..int.re
17e20 73 75 6c 74 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 29 sult;...ncp_init_request(server)
17e40 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 36 29 3b 20 2f 2a 20 73 ;..ncp_add_byte(server,.6);./*.s
17e60 75 62 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 ubfunction.*/..ncp_add_byte(serv
17e80 65 72 2c 20 6e 73 53 72 63 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 er,.nsSrc);..ncp_add_byte(server
17ea0 2c 20 6e 73 44 73 74 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 77 6f 72 64 28 73 65 72 76 65 72 2c 20 ,.nsDst);..ncp_add_word(server,.
17ec0 63 70 75 5f 74 6f 5f 6c 65 31 36 28 30 78 38 30 30 36 29 29 3b 20 2f 2a 20 67 65 74 20 61 6c 6c cpu_to_le16(0x8006));./*.get.all
17ee0 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 64 77 6f 72 64 28 73 65 72 76 65 72 2c 20 52 49 4d 5f 41 .*/..ncp_add_dword(server,.RIM_A
17f00 4c 4c 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 68 61 6e 64 6c 65 5f 70 61 74 68 28 73 65 72 76 65 72 LL);..ncp_add_handle_path(server
17f20 2c 20 76 6f 6c 5f 6e 75 6d 2c 20 64 69 72 5f 62 61 73 65 2c 20 31 2c 20 70 61 74 68 29 3b 0a 0a ,.vol_num,.dir_base,.1,.path);..
17f40 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 .if.((result.=.ncp_request(serve
17f60 72 2c 20 38 37 29 29 20 21 3d 20 30 29 0a 09 7b 0a 09 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 r,.87)).!=.0)..{...ncp_unlock_se
17f80 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 09 rver(server);...return.result;..
17fa0 7d 0a 0a 09 69 66 20 28 64 69 72 45 6e 74 4e 75 6d 29 0a 09 09 2a 64 69 72 45 6e 74 4e 75 6d 20 }...if.(dirEntNum)...*dirEntNum.
17fc0 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 64 77 6f 72 64 28 73 65 72 76 65 72 2c 20 30 78 33 30 29 3b =.ncp_reply_dword(server,.0x30);
17fe0 0a 09 69 66 20 28 44 6f 73 44 69 72 4e 75 6d 29 0a 09 09 2a 44 6f 73 44 69 72 4e 75 6d 20 3d 20 ..if.(DosDirNum)...*DosDirNum.=.
18000 6e 63 70 5f 72 65 70 6c 79 5f 64 77 6f 72 64 28 73 65 72 76 65 72 2c 20 30 78 33 34 29 3b 0a 09 ncp_reply_dword(server,.0x34);..
18020 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 ncp_unlock_server(server);..retu
18040 72 6e 20 30 3b 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 6d 6f 75 6e 74 5f 73 75 62 64 69 72 28 73 74 rn.0;.}..int.ncp_mount_subdir(st
18060 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 0a 09 09 20 5f 5f 75 38 ruct.ncp_server.*server,....__u8
18080 20 76 6f 6c 4e 75 6d 62 65 72 2c 20 5f 5f 75 38 20 73 72 63 4e 53 2c 20 5f 5f 6c 65 33 32 20 64 .volNumber,.__u8.srcNS,.__le32.d
180a0 69 72 45 6e 74 4e 75 6d 2c 0a 09 09 20 5f 5f 75 33 32 2a 20 76 6f 6c 75 6d 65 2c 20 5f 5f 6c 65 irEntNum,....__u32*.volume,.__le
180c0 33 32 2a 20 6e 65 77 44 69 72 45 6e 74 2c 20 5f 5f 6c 65 33 32 2a 20 6e 65 77 44 6f 73 45 6e 74 32*.newDirEnt,.__le32*.newDosEnt
180e0 29 0a 7b 0a 09 69 6e 74 20 64 73 74 4e 53 3b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 6e ).{..int.dstNS;..int.result;...n
18100 63 70 5f 75 70 64 61 74 65 5f 6b 6e 6f 77 6e 5f 6e 61 6d 65 73 70 61 63 65 28 73 65 72 76 65 72 cp_update_known_namespace(server
18120 2c 20 76 6f 6c 4e 75 6d 62 65 72 2c 20 26 64 73 74 4e 53 29 3b 0a 09 69 66 20 28 28 72 65 73 75 ,.volNumber,.&dstNS);..if.((resu
18140 6c 74 20 3d 20 6e 63 70 5f 4f 62 74 61 69 6e 53 70 65 63 69 66 69 63 44 69 72 42 61 73 65 28 73 lt.=.ncp_ObtainSpecificDirBase(s
18160 65 72 76 65 72 2c 20 73 72 63 4e 53 2c 20 64 73 74 4e 53 2c 20 76 6f 6c 4e 75 6d 62 65 72 2c 20 erver,.srcNS,.dstNS,.volNumber,.
18180 0a 09 09 09 09 20 20 20 20 20 20 64 69 72 45 6e 74 4e 75 6d 2c 20 4e 55 4c 4c 2c 20 6e 65 77 44 ...........dirEntNum,.NULL,.newD
181a0 69 72 45 6e 74 2c 20 6e 65 77 44 6f 73 45 6e 74 29 29 20 21 3d 20 30 29 0a 09 7b 0a 09 09 72 65 irEnt,.newDosEnt)).!=.0)..{...re
181c0 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 09 7d 0a 09 2a 76 6f 6c 75 6d 65 20 3d 20 76 6f 6c 4e 75 turn.result;..}..*volume.=.volNu
181e0 6d 62 65 72 3b 0a 09 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 76 6f 6c 5b 31 5d 20 mber;..server->m.mounted_vol[1].
18200 3d 20 30 3b 0a 09 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 76 6f 6c 5b 30 5d 20 3d =.0;..server->m.mounted_vol[0].=
18220 20 27 58 27 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 69 6e 74 20 0a 6e 63 70 5f 67 65 74 .'X';..return.0;.}..int..ncp_get
18240 5f 76 6f 6c 75 6d 65 5f 72 6f 6f 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a _volume_root(struct.ncp_server.*
18260 73 65 72 76 65 72 2c 0a 09 09 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 76 6f 6c 6e 61 6d server,.......const.char.*volnam
18280 65 2c 20 5f 5f 75 33 32 2a 20 76 6f 6c 75 6d 65 2c 20 5f 5f 6c 65 33 32 2a 20 64 69 72 65 6e 74 e,.__u32*.volume,.__le32*.dirent
182a0 2c 20 5f 5f 6c 65 33 32 2a 20 64 6f 73 64 69 72 65 6e 74 29 0a 7b 0a 09 69 6e 74 20 72 65 73 75 ,.__le32*.dosdirent).{..int.resu
182c0 6c 74 3b 0a 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 6c 6f 6f 6b 69 6e 67 20 75 70 20 76 6f 6c lt;...ncp_dbg(1,."looking.up.vol
182e0 20 25 73 5c 6e 22 2c 20 76 6f 6c 6e 61 6d 65 29 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 .%s\n",.volname);...ncp_init_req
18300 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 uest(server);..ncp_add_byte(serv
18320 65 72 2c 20 32 32 29 3b 09 2f 2a 20 53 75 62 66 75 6e 63 74 69 6f 6e 3a 20 47 65 6e 65 72 61 74 er,.22);./*.Subfunction:.Generat
18340 65 20 64 69 72 20 68 61 6e 64 6c 65 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 e.dir.handle.*/..ncp_add_byte(se
18360 72 76 65 72 2c 20 30 29 3b 09 2f 2a 20 44 4f 53 20 6e 61 6d 65 73 70 61 63 65 20 2a 2f 0a 09 6e rver,.0);./*.DOS.namespace.*/..n
18380 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b 09 2f 2a 20 72 65 73 65 72 cp_add_byte(server,.0);./*.reser
183a0 76 65 64 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b ved.*/..ncp_add_byte(server,.0);
183c0 09 2f 2a 20 72 65 73 65 72 76 65 64 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 ./*.reserved.*/..ncp_add_byte(se
183e0 72 76 65 72 2c 20 30 29 3b 09 2f 2a 20 72 65 73 65 72 76 65 64 20 2a 2f 0a 0a 09 6e 63 70 5f 61 rver,.0);./*.reserved.*/...ncp_a
18400 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b 09 2f 2a 20 66 61 6b 65 64 20 76 6f 6c dd_byte(server,.0);./*.faked.vol
18420 75 6d 65 20 6e 75 6d 62 65 72 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 64 77 6f 72 64 28 73 65 72 ume.number.*/..ncp_add_dword(ser
18440 76 65 72 2c 20 30 29 3b 09 2f 2a 20 66 61 6b 65 64 20 64 69 72 5f 62 61 73 65 20 2a 2f 0a 09 6e ver,.0);./*.faked.dir_base.*/..n
18460 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 78 66 66 29 3b 09 2f 2a 20 44 6f cp_add_byte(server,.0xff);./*.Do
18480 6e 27 74 20 68 61 76 65 20 61 20 64 69 72 5f 62 61 73 65 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f n't.have.a.dir_base.*/..ncp_add_
184a0 62 79 74 65 28 73 65 72 76 65 72 2c 20 31 29 3b 09 2f 2a 20 31 20 70 61 74 68 20 63 6f 6d 70 6f byte(server,.1);./*.1.path.compo
184c0 6e 65 6e 74 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 70 73 74 72 69 6e 67 28 73 65 72 76 65 72 2c nent.*/..ncp_add_pstring(server,
184e0 20 76 6f 6c 6e 61 6d 65 29 3b 0a 0a 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 .volname);...if.((result.=.ncp_r
18500 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 38 37 29 29 20 21 3d 20 30 29 20 7b 0a 09 09 6e 63 equest(server,.87)).!=.0).{...nc
18520 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 72 65 74 75 72 p_unlock_server(server);...retur
18540 6e 20 72 65 73 75 6c 74 3b 0a 09 7d 0a 09 2a 64 69 72 65 6e 74 20 3d 20 2a 64 6f 73 64 69 72 65 n.result;..}..*dirent.=.*dosdire
18560 6e 74 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 64 77 6f 72 64 28 73 65 72 76 65 72 2c 20 34 29 3b nt.=.ncp_reply_dword(server,.4);
18580 0a 09 2a 76 6f 6c 75 6d 65 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 62 79 74 65 28 73 65 72 76 65 ..*volume.=.ncp_reply_byte(serve
185a0 72 2c 20 38 29 3b 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 r,.8);..ncp_unlock_server(server
185c0 29 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 6c 6f 6f 6b 75 70 5f );..return.0;.}..int.ncp_lookup_
185e0 76 6f 6c 75 6d 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 volume(struct.ncp_server.*server
18600 2c 0a 09 09 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 76 6f 6c 6e 61 6d 65 2c 20 73 74 72 75 63 ,.....const.char.*volname,.struc
18620 74 20 6e 77 5f 69 6e 66 6f 5f 73 74 72 75 63 74 20 2a 74 61 72 67 65 74 29 0a 7b 0a 09 69 6e 74 t.nw_info_struct.*target).{..int
18640 20 72 65 73 75 6c 74 3b 0a 0a 09 6d 65 6d 73 65 74 28 74 61 72 67 65 74 2c 20 30 2c 20 73 69 7a .result;...memset(target,.0,.siz
18660 65 6f 66 28 2a 74 61 72 67 65 74 29 29 3b 0a 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 67 65 74 eof(*target));..result.=.ncp_get
18680 5f 76 6f 6c 75 6d 65 5f 72 6f 6f 74 28 73 65 72 76 65 72 2c 20 76 6f 6c 6e 61 6d 65 2c 0a 09 09 _volume_root(server,.volname,...
186a0 09 26 74 61 72 67 65 74 2d 3e 76 6f 6c 4e 75 6d 62 65 72 2c 20 26 74 61 72 67 65 74 2d 3e 64 69 .&target->volNumber,.&target->di
186c0 72 45 6e 74 4e 75 6d 2c 20 26 74 61 72 67 65 74 2d 3e 44 6f 73 44 69 72 4e 75 6d 29 3b 0a 09 69 rEntNum,.&target->DosDirNum);..i
186e0 66 20 28 72 65 73 75 6c 74 29 20 7b 0a 09 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 09 7d f.(result).{...return.result;..}
18700 0a 09 6e 63 70 5f 75 70 64 61 74 65 5f 6b 6e 6f 77 6e 5f 6e 61 6d 65 73 70 61 63 65 28 73 65 72 ..ncp_update_known_namespace(ser
18720 76 65 72 2c 20 74 61 72 67 65 74 2d 3e 76 6f 6c 4e 75 6d 62 65 72 2c 20 4e 55 4c 4c 29 3b 0a 09 ver,.target->volNumber,.NULL);..
18740 74 61 72 67 65 74 2d 3e 6e 61 6d 65 4c 65 6e 20 3d 20 73 74 72 6c 65 6e 28 76 6f 6c 6e 61 6d 65 target->nameLen.=.strlen(volname
18760 29 3b 0a 09 6d 65 6d 63 70 79 28 74 61 72 67 65 74 2d 3e 65 6e 74 72 79 4e 61 6d 65 2c 20 76 6f );..memcpy(target->entryName,.vo
18780 6c 6e 61 6d 65 2c 20 74 61 72 67 65 74 2d 3e 6e 61 6d 65 4c 65 6e 2b 31 29 3b 0a 09 74 61 72 67 lname,.target->nameLen+1);..targ
187a0 65 74 2d 3e 61 74 74 72 69 62 75 74 65 73 20 3d 20 61 44 49 52 3b 0a 09 2f 2a 20 73 65 74 20 64 et->attributes.=.aDIR;../*.set.d
187c0 61 74 65 73 20 74 6f 20 4a 61 6e 20 31 2c 20 31 39 38 36 20 20 30 30 3a 30 30 20 2a 2f 0a 09 74 ates.to.Jan.1,.1986..00:00.*/..t
187e0 61 72 67 65 74 2d 3e 63 72 65 61 74 69 6f 6e 54 69 6d 65 20 3d 20 74 61 72 67 65 74 2d 3e 6d 6f arget->creationTime.=.target->mo
18800 64 69 66 79 54 69 6d 65 20 3d 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 30 78 30 30 30 30 29 3b 0a difyTime.=.cpu_to_le16(0x0000);.
18820 09 74 61 72 67 65 74 2d 3e 63 72 65 61 74 69 6f 6e 44 61 74 65 20 3d 20 74 61 72 67 65 74 2d 3e .target->creationDate.=.target->
18840 6d 6f 64 69 66 79 44 61 74 65 20 3d 20 74 61 72 67 65 74 2d 3e 6c 61 73 74 41 63 63 65 73 73 44 modifyDate.=.target->lastAccessD
18860 61 74 65 20 3d 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 30 78 30 43 32 31 29 3b 0a 09 74 61 72 67 ate.=.cpu_to_le16(0x0C21);..targ
18880 65 74 2d 3e 6e 66 73 2e 6d 6f 64 65 20 3d 20 30 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a et->nfs.mode.=.0;..return.0;.}..
188a0 69 6e 74 20 6e 63 70 5f 6d 6f 64 69 66 79 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 5f 64 6f int.ncp_modify_file_or_subdir_do
188c0 73 5f 69 6e 66 6f 5f 70 61 74 68 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 s_info_path(struct.ncp_server.*s
188e0 65 72 76 65 72 2c 0a 09 09 09 09 09 20 20 20 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 erver,..........struct.inode.*di
18900 72 2c 0a 09 09 09 09 09 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 61 74 68 2c 0a 09 09 r,..........const.char.*path,...
18920 09 09 09 20 20 20 20 5f 5f 6c 65 33 32 20 69 6e 66 6f 5f 6d 61 73 6b 2c 0a 09 09 09 09 09 20 20 .......__le32.info_mask,........
18940 20 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 6e 77 5f 6d 6f 64 69 66 79 5f 64 6f 73 5f 69 6e 66 ..const.struct.nw_modify_dos_inf
18960 6f 20 2a 69 6e 66 6f 29 0a 7b 0a 09 5f 5f 75 38 20 20 76 6f 6c 6e 75 6d 20 3d 20 4e 43 50 5f 46 o.*info).{..__u8..volnum.=.NCP_F
18980 49 4e 46 4f 28 64 69 72 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 5f 5f 6c 65 33 32 20 64 69 INFO(dir)->volNumber;..__le32.di
189a0 72 65 6e 74 20 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 64 69 72 29 2d 3e 64 69 72 45 6e 74 4e 75 6d rent.=.NCP_FINFO(dir)->dirEntNum
189c0 3b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 ;..int.result;...ncp_init_reques
189e0 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c t(server);..ncp_add_byte(server,
18a00 20 37 29 3b 09 2f 2a 20 73 75 62 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f .7);./*.subfunction.*/..ncp_add_
18a20 62 79 74 65 28 73 65 72 76 65 72 2c 20 73 65 72 76 65 72 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 5b byte(server,.server->name_space[
18a40 76 6f 6c 6e 75 6d 5d 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 volnum]);..ncp_add_byte(server,.
18a60 30 29 3b 09 2f 2a 20 72 65 73 65 72 76 65 64 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 77 6f 72 64 0);./*.reserved.*/..ncp_add_word
18a80 28 73 65 72 76 65 72 2c 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 30 78 38 30 30 36 29 29 3b 09 2f (server,.cpu_to_le16(0x8006));./
18aa0 2a 20 73 65 61 72 63 68 20 61 74 74 72 69 62 73 3a 20 61 6c 6c 20 2a 2f 0a 0a 09 6e 63 70 5f 61 *.search.attribs:.all.*/...ncp_a
18ac0 64 64 5f 64 77 6f 72 64 28 73 65 72 76 65 72 2c 20 69 6e 66 6f 5f 6d 61 73 6b 29 3b 0a 09 6e 63 dd_dword(server,.info_mask);..nc
18ae0 70 5f 61 64 64 5f 6d 65 6d 28 73 65 72 76 65 72 2c 20 69 6e 66 6f 2c 20 73 69 7a 65 6f 66 28 2a p_add_mem(server,.info,.sizeof(*
18b00 69 6e 66 6f 29 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 68 61 6e 64 6c 65 5f 70 61 74 68 28 73 65 72 info));..ncp_add_handle_path(ser
18b20 76 65 72 2c 20 76 6f 6c 6e 75 6d 2c 20 64 69 72 65 6e 74 2c 20 31 2c 20 70 61 74 68 29 3b 0a 0a ver,.volnum,.dirent,.1,.path);..
18b40 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 38 37 .result.=.ncp_request(server,.87
18b60 29 3b 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 );..ncp_unlock_server(server);..
18b80 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 69 6e 74 20 6e 63 70 5f 6d 6f 64 69 66 79 return.result;.}..int.ncp_modify
18ba0 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 5f 64 6f 73 5f 69 6e 66 6f 28 73 74 72 75 63 74 20 _file_or_subdir_dos_info(struct.
18bc0 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 0a 09 09 09 09 20 20 20 20 20 20 20 73 ncp_server.*server,............s
18be0 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 2c 0a 09 09 09 09 20 20 20 20 20 20 20 5f 5f 6c truct.inode.*dir,............__l
18c00 65 33 32 20 69 6e 66 6f 5f 6d 61 73 6b 2c 0a 09 09 09 09 20 20 20 20 20 20 20 63 6f 6e 73 74 20 e32.info_mask,............const.
18c20 73 74 72 75 63 74 20 6e 77 5f 6d 6f 64 69 66 79 5f 64 6f 73 5f 69 6e 66 6f 20 2a 69 6e 66 6f 29 struct.nw_modify_dos_info.*info)
18c40 0a 7b 0a 09 72 65 74 75 72 6e 20 6e 63 70 5f 6d 6f 64 69 66 79 5f 66 69 6c 65 5f 6f 72 5f 73 75 .{..return.ncp_modify_file_or_su
18c60 62 64 69 72 5f 64 6f 73 5f 69 6e 66 6f 5f 70 61 74 68 28 73 65 72 76 65 72 2c 20 64 69 72 2c 20 bdir_dos_info_path(server,.dir,.
18c80 4e 55 4c 4c 2c 0a 09 09 69 6e 66 6f 5f 6d 61 73 6b 2c 20 69 6e 66 6f 29 3b 0a 7d 0a 0a 23 69 66 NULL,...info_mask,.info);.}..#if
18ca0 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 0a 69 6e 74 20 6e 63 70 5f def.CONFIG_NCPFS_NFS_NS.int.ncp_
18cc0 6d 6f 64 69 66 79 5f 6e 66 73 5f 69 6e 66 6f 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 modify_nfs_info(struct.ncp_serve
18ce0 72 20 2a 73 65 72 76 65 72 2c 20 5f 5f 75 38 20 76 6f 6c 6e 75 6d 2c 20 5f 5f 6c 65 33 32 20 64 r.*server,.__u8.volnum,.__le32.d
18d00 69 72 65 6e 74 2c 0a 09 09 09 20 20 20 20 20 20 20 5f 5f 75 33 32 20 6d 6f 64 65 2c 20 5f 5f 75 irent,...........__u32.mode,.__u
18d20 33 32 20 72 64 65 76 29 0a 0a 7b 0a 09 69 6e 74 20 72 65 73 75 6c 74 20 3d 20 30 3b 0a 0a 09 6e 32.rdev)..{..int.result.=.0;...n
18d40 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a 09 69 66 20 28 73 65 cp_init_request(server);..if.(se
18d60 72 76 65 72 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 5b 76 6f 6c 6e 75 6d 5d 20 3d 3d 20 4e 57 5f 4e rver->name_space[volnum].==.NW_N
18d80 53 5f 4e 46 53 29 20 7b 0a 09 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 S_NFS).{...ncp_add_byte(server,.
18da0 32 35 29 3b 09 2f 2a 20 73 75 62 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 09 09 6e 63 70 5f 61 64 64 25);./*.subfunction.*/...ncp_add
18dc0 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 73 65 72 76 65 72 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 _byte(server,.server->name_space
18de0 5b 76 6f 6c 6e 75 6d 5d 29 3b 0a 09 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 [volnum]);...ncp_add_byte(server
18e00 2c 20 4e 57 5f 4e 53 5f 4e 46 53 29 3b 0a 09 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 ,.NW_NS_NFS);...ncp_add_byte(ser
18e20 76 65 72 2c 20 76 6f 6c 6e 75 6d 29 3b 0a 09 09 6e 63 70 5f 61 64 64 5f 64 77 6f 72 64 28 73 65 ver,.volnum);...ncp_add_dword(se
18e40 72 76 65 72 2c 20 64 69 72 65 6e 74 29 3b 0a 09 09 2f 2a 20 77 65 20 6d 75 73 74 20 61 6c 77 61 rver,.dirent);.../*.we.must.alwa
18e60 79 73 20 6f 70 65 72 61 74 65 20 6f 6e 20 62 6f 74 68 20 6e 6c 69 6e 6b 73 20 61 6e 64 20 72 64 ys.operate.on.both.nlinks.and.rd
18e80 65 76 2c 20 6f 74 68 65 72 77 69 73 65 0a 09 09 20 20 20 72 64 65 76 20 69 73 20 6e 6f 74 20 73 ev,.otherwise......rdev.is.not.s
18ea0 65 74 20 2a 2f 0a 09 09 6e 63 70 5f 61 64 64 5f 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c et.*/...ncp_add_dword_lh(server,
18ec0 20 4e 53 49 42 4d 5f 4e 46 53 5f 4d 4f 44 45 20 7c 20 4e 53 49 42 4d 5f 4e 46 53 5f 4e 4c 49 4e .NSIBM_NFS_MODE.|.NSIBM_NFS_NLIN
18ee0 4b 53 20 7c 20 4e 53 49 42 4d 5f 4e 46 53 5f 52 44 45 56 29 3b 0a 09 09 6e 63 70 5f 61 64 64 5f KS.|.NSIBM_NFS_RDEV);...ncp_add_
18f00 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 6d 6f 64 65 29 3b 0a 09 09 6e 63 70 5f 61 64 dword_lh(server,.mode);...ncp_ad
18f20 64 5f 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 31 29 3b 09 2f 2a 20 6e 6c 69 6e 6b 73 d_dword_lh(server,.1);./*.nlinks
18f40 20 2a 2f 0a 09 09 6e 63 70 5f 61 64 64 5f 64 77 6f 72 64 5f 6c 68 28 73 65 72 76 65 72 2c 20 72 .*/...ncp_add_dword_lh(server,.r
18f60 64 65 76 29 3b 0a 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 72 dev);...result.=.ncp_request(ser
18f80 76 65 72 2c 20 38 37 29 3b 0a 09 7d 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 ver,.87);..}..ncp_unlock_server(
18fa0 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 23 65 6e 64 69 server);..return.result;.}.#endi
18fc0 66 0a 0a 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 44 65 6c 65 74 65 4e 53 45 6e 74 72 79 f...static.int.ncp_DeleteNSEntry
18fe0 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 0a 09 09 20 20 (struct.ncp_server.*server,.....
19000 5f 5f 75 38 20 68 61 76 65 5f 64 69 72 5f 62 61 73 65 2c 20 5f 5f 75 38 20 76 6f 6c 6e 75 6d 2c __u8.have_dir_base,.__u8.volnum,
19020 20 5f 5f 6c 65 33 32 20 64 69 72 65 6e 74 2c 0a 09 09 20 20 63 6f 6e 73 74 20 63 68 61 72 2a 20 .__le32.dirent,.....const.char*.
19040 6e 61 6d 65 2c 20 5f 5f 75 38 20 6e 73 2c 20 5f 5f 6c 65 31 36 20 61 74 74 72 29 0a 7b 0a 09 69 name,.__u8.ns,.__le16.attr).{..i
19060 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 nt.result;...ncp_init_request(se
19080 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 38 29 3b rver);..ncp_add_byte(server,.8);
190a0 09 2f 2a 20 73 75 62 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 ./*.subfunction.*/..ncp_add_byte
190c0 28 73 65 72 76 65 72 2c 20 6e 73 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 (server,.ns);..ncp_add_byte(serv
190e0 65 72 2c 20 30 29 3b 09 2f 2a 20 72 65 73 65 72 76 65 64 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f er,.0);./*.reserved.*/..ncp_add_
19100 77 6f 72 64 28 73 65 72 76 65 72 2c 20 61 74 74 72 29 3b 09 2f 2a 20 73 65 61 72 63 68 20 61 74 word(server,.attr);./*.search.at
19120 74 72 69 62 73 3a 20 61 6c 6c 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 68 61 6e 64 6c 65 5f 70 61 tribs:.all.*/..ncp_add_handle_pa
19140 74 68 28 73 65 72 76 65 72 2c 20 76 6f 6c 6e 75 6d 2c 20 64 69 72 65 6e 74 2c 20 68 61 76 65 5f th(server,.volnum,.dirent,.have_
19160 64 69 72 5f 62 61 73 65 2c 20 6e 61 6d 65 29 3b 0a 0a 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f dir_base,.name);...result.=.ncp_
19180 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 38 37 29 3b 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b request(server,.87);..ncp_unlock
191a0 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b _server(server);..return.result;
191c0 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 64 65 6c 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 32 28 .}..int.ncp_del_file_or_subdir2(
191e0 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 0a 09 09 09 73 74 struct.ncp_server.*server,....st
19200 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 ruct.dentry.*dentry).{..struct.i
19220 6e 6f 64 65 20 2a 69 6e 6f 64 65 20 3d 20 64 5f 69 6e 6f 64 65 28 64 65 6e 74 72 79 29 3b 0a 09 node.*inode.=.d_inode(dentry);..
19240 5f 5f 75 38 20 20 76 6f 6c 6e 75 6d 3b 0a 09 5f 5f 6c 65 33 32 20 64 69 72 65 6e 74 3b 0a 0a 09 __u8..volnum;..__le32.dirent;...
19260 69 66 20 28 21 69 6e 6f 64 65 29 20 7b 0a 09 09 72 65 74 75 72 6e 20 30 78 46 46 3b 09 2f 2a 20 if.(!inode).{...return.0xFF;./*.
19280 41 6e 79 20 65 72 72 6f 72 20 2a 2f 0a 09 7d 0a 09 76 6f 6c 6e 75 6d 20 3d 20 4e 43 50 5f 46 49 Any.error.*/..}..volnum.=.NCP_FI
192a0 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 64 69 72 65 6e 74 20 3d NFO(inode)->volNumber;..dirent.=
192c0 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 44 6f 73 44 69 72 4e 75 6d 3b 0a 09 72 .NCP_FINFO(inode)->DosDirNum;..r
192e0 65 74 75 72 6e 20 6e 63 70 5f 44 65 6c 65 74 65 4e 53 45 6e 74 72 79 28 73 65 72 76 65 72 2c 20 eturn.ncp_DeleteNSEntry(server,.
19300 31 2c 20 76 6f 6c 6e 75 6d 2c 20 64 69 72 65 6e 74 2c 20 4e 55 4c 4c 2c 20 4e 57 5f 4e 53 5f 44 1,.volnum,.dirent,.NULL,.NW_NS_D
19320 4f 53 2c 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 30 78 38 30 30 36 29 29 3b 0a 7d 0a 0a 69 6e 74 OS,.cpu_to_le16(0x8006));.}..int
19340 0a 6e 63 70 5f 64 65 6c 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 73 74 72 75 63 74 20 6e .ncp_del_file_or_subdir(struct.n
19360 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 0a 09 09 20 20 20 20 20 20 20 73 74 72 75 cp_server.*server,..........stru
19380 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 6e 61 6d 65 29 ct.inode.*dir,.const.char.*name)
193a0 0a 7b 0a 09 5f 5f 75 38 20 20 76 6f 6c 6e 75 6d 20 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 64 69 72 .{..__u8..volnum.=.NCP_FINFO(dir
193c0 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 5f 5f 6c 65 33 32 20 64 69 72 65 6e 74 20 3d 20 4e )->volNumber;..__le32.dirent.=.N
193e0 43 50 5f 46 49 4e 46 4f 28 64 69 72 29 2d 3e 64 69 72 45 6e 74 4e 75 6d 3b 0a 09 69 6e 74 20 6e CP_FINFO(dir)->dirEntNum;..int.n
19400 61 6d 65 5f 73 70 61 63 65 3b 0a 0a 09 6e 61 6d 65 5f 73 70 61 63 65 20 3d 20 73 65 72 76 65 72 ame_space;...name_space.=.server
19420 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 5b 76 6f 6c 6e 75 6d 5d 3b 0a 23 69 66 64 65 66 20 43 4f 4e ->name_space[volnum];.#ifdef.CON
19440 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 0a 09 69 66 20 28 6e 61 6d 65 5f 73 70 61 63 65 FIG_NCPFS_NFS_NS..if.(name_space
19460 20 3d 3d 20 4e 57 5f 4e 53 5f 4e 46 53 29 0a 20 09 7b 0a 20 09 09 69 6e 74 20 72 65 73 75 6c 74 .==.NW_NS_NFS)...{....int.result
19480 3b 0a 20 0a 09 09 72 65 73 75 6c 74 3d 6e 63 70 5f 6f 62 74 61 69 6e 5f 44 4f 53 5f 64 69 72 5f ;.....result=ncp_obtain_DOS_dir_
194a0 62 61 73 65 28 73 65 72 76 65 72 2c 20 6e 61 6d 65 5f 73 70 61 63 65 2c 20 76 6f 6c 6e 75 6d 2c base(server,.name_space,.volnum,
194c0 20 64 69 72 65 6e 74 2c 20 6e 61 6d 65 2c 20 26 64 69 72 65 6e 74 29 3b 0a 20 09 09 69 66 20 28 .dirent,.name,.&dirent);....if.(
194e0 72 65 73 75 6c 74 29 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 09 09 6e 61 6d 65 20 3d 20 result).return.result;...name.=.
19500 4e 55 4c 4c 3b 0a 09 09 6e 61 6d 65 5f 73 70 61 63 65 20 3d 20 4e 57 5f 4e 53 5f 44 4f 53 3b 0a NULL;...name_space.=.NW_NS_DOS;.
19520 20 09 7d 0a 23 65 6e 64 69 66 09 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e ..}.#endif./*.CONFIG_NCPFS_NFS_N
19540 53 20 2a 2f 0a 09 72 65 74 75 72 6e 20 6e 63 70 5f 44 65 6c 65 74 65 4e 53 45 6e 74 72 79 28 73 S.*/..return.ncp_DeleteNSEntry(s
19560 65 72 76 65 72 2c 20 31 2c 20 76 6f 6c 6e 75 6d 2c 20 64 69 72 65 6e 74 2c 20 6e 61 6d 65 2c 20 erver,.1,.volnum,.dirent,.name,.
19580 6e 61 6d 65 5f 73 70 61 63 65 2c 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 30 78 38 30 30 36 29 29 name_space,.cpu_to_le16(0x8006))
195a0 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 20 43 6f 6e 76 65 72 74 54 ;.}..static.inline.void.ConvertT
195c0 6f 4e 57 66 72 6f 6d 44 57 4f 52 44 28 5f 5f 75 31 36 20 76 30 2c 20 5f 5f 75 31 36 20 76 31 2c oNWfromDWORD(__u16.v0,.__u16.v1,
195e0 20 5f 5f 75 38 20 72 65 74 5b 36 5d 29 0a 7b 0a 09 5f 5f 6c 65 31 36 20 2a 64 65 73 74 20 3d 20 .__u8.ret[6]).{..__le16.*dest.=.
19600 28 5f 5f 6c 65 31 36 20 2a 29 20 72 65 74 3b 0a 09 64 65 73 74 5b 31 5d 20 3d 20 63 70 75 5f 74 (__le16.*).ret;..dest[1].=.cpu_t
19620 6f 5f 6c 65 31 36 28 76 30 29 3b 0a 09 64 65 73 74 5b 32 5d 20 3d 20 63 70 75 5f 74 6f 5f 6c 65 o_le16(v0);..dest[2].=.cpu_to_le
19640 31 36 28 76 31 29 3b 0a 09 64 65 73 74 5b 30 5d 20 3d 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 76 16(v1);..dest[0].=.cpu_to_le16(v
19660 30 20 2b 20 31 29 3b 0a 09 72 65 74 75 72 6e 3b 0a 7d 0a 0a 2f 2a 20 49 66 20 62 6f 74 68 20 64 0.+.1);..return;.}../*.If.both.d
19680 69 72 20 61 6e 64 20 6e 61 6d 65 20 61 72 65 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 69 6e 20 74 61 ir.and.name.are.NULL,.then.in.ta
196a0 72 67 65 74 20 74 68 65 72 65 27 73 20 61 6c 72 65 61 64 79 20 61 0a 20 20 20 6c 6f 6f 6b 65 64 rget.there's.already.a....looked
196c0 2d 75 70 20 65 6e 74 72 79 20 74 68 61 74 20 77 61 6e 74 73 20 74 6f 20 62 65 20 6f 70 65 6e 65 -up.entry.that.wants.to.be.opene
196e0 64 2e 20 2a 2f 0a 69 6e 74 20 6e 63 70 5f 6f 70 65 6e 5f 63 72 65 61 74 65 5f 66 69 6c 65 5f 6f d..*/.int.ncp_open_create_file_o
19700 72 5f 73 75 62 64 69 72 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 r_subdir(struct.ncp_server.*serv
19720 65 72 2c 0a 09 09 09 09 20 20 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 2c 20 63 6f er,........struct.inode.*dir,.co
19740 6e 73 74 20 63 68 61 72 20 2a 6e 61 6d 65 2c 0a 09 09 09 09 20 20 20 69 6e 74 20 6f 70 65 6e 5f nst.char.*name,........int.open_
19760 63 72 65 61 74 65 5f 6d 6f 64 65 2c 0a 09 09 09 09 20 20 20 5f 5f 6c 65 33 32 20 63 72 65 61 74 create_mode,........__le32.creat
19780 65 5f 61 74 74 72 69 62 75 74 65 73 2c 0a 09 09 09 09 20 20 20 5f 5f 6c 65 31 36 20 64 65 73 69 e_attributes,........__le16.desi
197a0 72 65 64 5f 61 63 63 5f 72 69 67 68 74 73 2c 0a 09 09 09 09 20 20 20 73 74 72 75 63 74 20 6e 63 red_acc_rights,........struct.nc
197c0 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 2a 74 61 72 67 65 74 29 0a 7b 0a 09 5f 5f 6c 65 31 36 20 p_entry_info.*target).{..__le16.
197e0 73 65 61 72 63 68 5f 61 74 74 72 69 62 73 20 3d 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 30 78 30 search_attribs.=.cpu_to_le16(0x0
19800 30 30 36 29 3b 0a 09 5f 5f 75 38 20 20 76 6f 6c 6e 75 6d 3b 0a 09 5f 5f 6c 65 33 32 20 64 69 72 006);..__u8..volnum;..__le32.dir
19820 65 6e 74 3b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 76 6f 6c 6e 75 6d 20 3d 20 4e 43 50 ent;..int.result;...volnum.=.NCP
19840 5f 46 49 4e 46 4f 28 64 69 72 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 64 69 72 65 6e 74 20 _FINFO(dir)->volNumber;..dirent.
19860 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 64 69 72 29 2d 3e 64 69 72 45 6e 74 4e 75 6d 3b 0a 0a 09 69 =.NCP_FINFO(dir)->dirEntNum;...i
19880 66 20 28 28 63 72 65 61 74 65 5f 61 74 74 72 69 62 75 74 65 73 20 26 20 61 44 49 52 29 20 21 3d f.((create_attributes.&.aDIR).!=
198a0 20 30 29 20 7b 0a 09 09 73 65 61 72 63 68 5f 61 74 74 72 69 62 73 20 7c 3d 20 63 70 75 5f 74 6f .0).{...search_attribs.|=.cpu_to
198c0 5f 6c 65 31 36 28 30 78 38 30 30 30 29 3b 0a 09 7d 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 _le16(0x8000);..}..ncp_init_requ
198e0 65 73 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 est(server);..ncp_add_byte(serve
19900 72 2c 20 31 29 3b 09 2f 2a 20 73 75 62 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 09 6e 63 70 5f 61 64 r,.1);./*.subfunction.*/..ncp_ad
19920 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 73 65 72 76 65 72 2d 3e 6e 61 6d 65 5f 73 70 61 63 d_byte(server,.server->name_spac
19940 65 5b 76 6f 6c 6e 75 6d 5d 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 e[volnum]);..ncp_add_byte(server
19960 2c 20 6f 70 65 6e 5f 63 72 65 61 74 65 5f 6d 6f 64 65 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 77 6f ,.open_create_mode);..ncp_add_wo
19980 72 64 28 73 65 72 76 65 72 2c 20 73 65 61 72 63 68 5f 61 74 74 72 69 62 73 29 3b 0a 09 6e 63 70 rd(server,.search_attribs);..ncp
199a0 5f 61 64 64 5f 64 77 6f 72 64 28 73 65 72 76 65 72 2c 20 52 49 4d 5f 41 4c 4c 29 3b 0a 09 6e 63 _add_dword(server,.RIM_ALL);..nc
199c0 70 5f 61 64 64 5f 64 77 6f 72 64 28 73 65 72 76 65 72 2c 20 63 72 65 61 74 65 5f 61 74 74 72 69 p_add_dword(server,.create_attri
199e0 62 75 74 65 73 29 3b 0a 09 2f 2a 20 54 68 65 20 64 65 73 69 72 65 64 20 61 63 63 20 72 69 67 68 butes);../*.The.desired.acc.righ
19a00 74 73 20 73 65 65 6d 20 74 6f 20 62 65 20 74 68 65 20 69 6e 68 65 72 69 74 65 64 20 72 69 67 68 ts.seem.to.be.the.inherited.righ
19a20 74 73 20 6d 61 73 6b 0a 09 20 20 20 66 6f 72 20 64 69 72 65 63 74 6f 72 69 65 73 20 2a 2f 0a 09 ts.mask.....for.directories.*/..
19a40 6e 63 70 5f 61 64 64 5f 77 6f 72 64 28 73 65 72 76 65 72 2c 20 64 65 73 69 72 65 64 5f 61 63 63 ncp_add_word(server,.desired_acc
19a60 5f 72 69 67 68 74 73 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 68 61 6e 64 6c 65 5f 70 61 74 68 28 73 _rights);..ncp_add_handle_path(s
19a80 65 72 76 65 72 2c 20 76 6f 6c 6e 75 6d 2c 20 64 69 72 65 6e 74 2c 20 31 2c 20 6e 61 6d 65 29 3b erver,.volnum,.dirent,.1,.name);
19aa0 0a 0a 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 72 ...if.((result.=.ncp_request(ser
19ac0 76 65 72 2c 20 38 37 29 29 20 21 3d 20 30 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 69 66 20 ver,.87)).!=.0)...goto.out;..if.
19ae0 28 21 28 63 72 65 61 74 65 5f 61 74 74 72 69 62 75 74 65 73 20 26 20 61 44 49 52 29 29 0a 09 09 (!(create_attributes.&.aDIR))...
19b00 74 61 72 67 65 74 2d 3e 6f 70 65 6e 65 64 20 3d 20 31 3b 0a 0a 09 2f 2a 20 69 6e 20 74 61 72 67 target->opened.=.1;.../*.in.targ
19b20 65 74 20 74 68 65 72 65 27 73 20 61 20 6e 65 77 20 66 69 6e 66 6f 20 74 6f 20 66 69 6c 6c 20 2a et.there's.a.new.finfo.to.fill.*
19b40 2f 0a 09 6e 63 70 5f 65 78 74 72 61 63 74 5f 66 69 6c 65 5f 69 6e 66 6f 28 6e 63 70 5f 72 65 70 /..ncp_extract_file_info(ncp_rep
19b60 6c 79 5f 64 61 74 61 28 73 65 72 76 65 72 2c 20 36 29 2c 20 26 28 74 61 72 67 65 74 2d 3e 69 29 ly_data(server,.6),.&(target->i)
19b80 29 3b 0a 09 74 61 72 67 65 74 2d 3e 76 6f 6c 75 6d 65 20 3d 20 74 61 72 67 65 74 2d 3e 69 2e 76 );..target->volume.=.target->i.v
19ba0 6f 6c 4e 75 6d 62 65 72 3b 0a 09 43 6f 6e 76 65 72 74 54 6f 4e 57 66 72 6f 6d 44 57 4f 52 44 28 olNumber;..ConvertToNWfromDWORD(
19bc0 6e 63 70 5f 72 65 70 6c 79 5f 6c 65 31 36 28 73 65 72 76 65 72 2c 20 30 29 2c 0a 09 09 09 20 20 ncp_reply_le16(server,.0),......
19be0 20 20 20 6e 63 70 5f 72 65 70 6c 79 5f 6c 65 31 36 28 73 65 72 76 65 72 2c 20 32 29 2c 0a 09 09 ...ncp_reply_le16(server,.2),...
19c00 09 20 20 20 20 20 74 61 72 67 65 74 2d 3e 66 69 6c 65 5f 68 61 6e 64 6c 65 29 3b 0a 09 0a 09 6e ......target->file_handle);....n
19c20 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 0a 09 28 76 6f 69 cp_unlock_server(server);...(voi
19c40 64 29 6e 63 70 5f 6f 62 74 61 69 6e 5f 6e 66 73 5f 69 6e 66 6f 28 73 65 72 76 65 72 2c 20 26 28 d)ncp_obtain_nfs_info(server,.&(
19c60 74 61 72 67 65 74 2d 3e 69 29 29 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 0a 6f 75 74 3a 0a 09 6e target->i));..return.0;..out:..n
19c80 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 72 cp_unlock_server(server);..retur
19ca0 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 69 6e 69 74 69 61 6c 69 7a 65 5f n.result;.}..int.ncp_initialize_
19cc0 73 65 61 72 63 68 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 search(struct.ncp_server.*server
19ce0 2c 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 2c 0a 09 09 09 73 74 72 75 63 74 20 6e ,.struct.inode.*dir,....struct.n
19d00 77 5f 73 65 61 72 63 68 5f 73 65 71 75 65 6e 63 65 20 2a 74 61 72 67 65 74 29 0a 7b 0a 09 5f 5f w_search_sequence.*target).{..__
19d20 75 38 20 20 76 6f 6c 6e 75 6d 20 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 64 69 72 29 2d 3e 76 6f 6c u8..volnum.=.NCP_FINFO(dir)->vol
19d40 4e 75 6d 62 65 72 3b 0a 09 5f 5f 6c 65 33 32 20 64 69 72 65 6e 74 20 3d 20 4e 43 50 5f 46 49 4e Number;..__le32.dirent.=.NCP_FIN
19d60 46 4f 28 64 69 72 29 2d 3e 64 69 72 45 6e 74 4e 75 6d 3b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b FO(dir)->dirEntNum;..int.result;
19d80 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 ...ncp_init_request(server);..nc
19da0 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 32 29 3b 09 2f 2a 20 73 75 62 66 75 6e p_add_byte(server,.2);./*.subfun
19dc0 63 74 69 6f 6e 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 73 ction.*/..ncp_add_byte(server,.s
19de0 65 72 76 65 72 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 5b 76 6f 6c 6e 75 6d 5d 29 3b 0a 09 6e 63 70 erver->name_space[volnum]);..ncp
19e00 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b 09 2f 2a 20 72 65 73 65 72 76 65 _add_byte(server,.0);./*.reserve
19e20 64 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 68 61 6e 64 6c 65 5f 70 61 74 68 28 73 65 72 76 65 72 d.*/..ncp_add_handle_path(server
19e40 2c 20 76 6f 6c 6e 75 6d 2c 20 64 69 72 65 6e 74 2c 20 31 2c 20 4e 55 4c 4c 29 3b 0a 0a 09 72 65 ,.volnum,.dirent,.1,.NULL);...re
19e60 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 38 37 29 3b 0a sult.=.ncp_request(server,.87);.
19e80 09 69 66 20 28 72 65 73 75 6c 74 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 6d 65 6d 63 70 79 .if.(result)...goto.out;..memcpy
19ea0 28 74 61 72 67 65 74 2c 20 6e 63 70 5f 72 65 70 6c 79 5f 64 61 74 61 28 73 65 72 76 65 72 2c 20 (target,.ncp_reply_data(server,.
19ec0 30 29 2c 20 73 69 7a 65 6f 66 28 2a 74 61 72 67 65 74 29 29 3b 0a 0a 6f 75 74 3a 0a 09 6e 63 70 0),.sizeof(*target));..out:..ncp
19ee0 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 72 6e 20 _unlock_server(server);..return.
19f00 72 65 73 75 6c 74 3b 0a 7d 0a 0a 69 6e 74 20 6e 63 70 5f 73 65 61 72 63 68 5f 66 6f 72 5f 66 69 result;.}..int.ncp_search_for_fi
19f20 6c 65 73 65 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c leset(struct.ncp_server.*server,
19f40 0a 09 09 09 20 20 20 73 74 72 75 63 74 20 6e 77 5f 73 65 61 72 63 68 5f 73 65 71 75 65 6e 63 65 .......struct.nw_search_sequence
19f60 20 2a 73 65 71 2c 0a 09 09 09 20 20 20 69 6e 74 2a 20 6d 6f 72 65 2c 0a 09 09 09 20 20 20 69 6e .*seq,.......int*.more,.......in
19f80 74 2a 20 63 6e 74 2c 0a 09 09 09 20 20 20 63 68 61 72 2a 20 62 75 66 66 65 72 2c 0a 09 09 09 20 t*.cnt,.......char*.buffer,.....
19fa0 20 20 73 69 7a 65 5f 74 20 62 75 66 73 69 7a 65 2c 0a 09 09 09 20 20 20 63 68 61 72 2a 2a 20 72 ..size_t.bufsize,.......char**.r
19fc0 62 75 66 2c 0a 09 09 09 20 20 20 73 69 7a 65 5f 74 2a 20 72 73 69 7a 65 29 0a 7b 0a 09 69 6e 74 buf,.......size_t*.rsize).{..int
19fe0 20 72 65 73 75 6c 74 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 .result;...ncp_init_request(serv
1a000 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 32 30 29 3b 0a er);..ncp_add_byte(server,.20);.
1a020 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 73 65 72 76 65 72 2d 3e 6e 61 .ncp_add_byte(server,.server->na
1a040 6d 65 5f 73 70 61 63 65 5b 73 65 71 2d 3e 76 6f 6c 4e 75 6d 62 65 72 5d 29 3b 0a 09 6e 63 70 5f me_space[seq->volNumber]);..ncp_
1a060 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b 09 09 2f 2a 20 64 61 74 61 73 74 72 add_byte(server,.0);../*.datastr
1a080 65 61 6d 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 77 6f 72 64 28 73 65 72 76 65 72 2c 20 63 70 75 eam.*/..ncp_add_word(server,.cpu
1a0a0 5f 74 6f 5f 6c 65 31 36 28 30 78 38 30 30 36 29 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 64 77 6f 72 _to_le16(0x8006));..ncp_add_dwor
1a0c0 64 28 73 65 72 76 65 72 2c 20 52 49 4d 5f 41 4c 4c 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 77 6f 72 d(server,.RIM_ALL);..ncp_add_wor
1a0e0 64 28 73 65 72 76 65 72 2c 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 33 32 37 36 37 29 29 3b 09 2f d(server,.cpu_to_le16(32767));./
1a100 2a 20 6d 61 78 20 72 65 74 75 72 6e 65 64 20 69 74 65 6d 73 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 *.max.returned.items.*/..ncp_add
1a120 5f 6d 65 6d 28 73 65 72 76 65 72 2c 20 73 65 71 2c 20 39 29 3b 0a 23 69 66 64 65 66 20 43 4f 4e _mem(server,.seq,.9);.#ifdef.CON
1a140 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 0a 09 69 66 20 28 73 65 72 76 65 72 2d 3e 6e 61 FIG_NCPFS_NFS_NS..if.(server->na
1a160 6d 65 5f 73 70 61 63 65 5b 73 65 71 2d 3e 76 6f 6c 4e 75 6d 62 65 72 5d 20 3d 3d 20 4e 57 5f 4e me_space[seq->volNumber].==.NW_N
1a180 53 5f 4e 46 53 29 20 7b 0a 09 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 S_NFS).{...ncp_add_byte(server,.
1a1a0 30 29 3b 09 2f 2a 20 30 20 62 79 74 65 20 70 61 74 74 65 72 6e 20 2a 2f 0a 09 7d 20 65 6c 73 65 0);./*.0.byte.pattern.*/..}.else
1a1c0 20 0a 23 65 6e 64 69 66 0a 09 7b 0a 09 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 ..#endif..{...ncp_add_byte(serve
1a1e0 72 2c 20 32 29 3b 09 2f 2a 20 32 20 62 79 74 65 20 70 61 74 74 65 72 6e 20 2a 2f 0a 09 09 6e 63 r,.2);./*.2.byte.pattern.*/...nc
1a200 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 78 66 66 29 3b 09 2f 2a 20 66 6f 6c p_add_byte(server,.0xff);./*.fol
1a220 6c 6f 77 69 6e 67 20 69 73 20 61 20 77 69 6c 64 63 61 72 64 20 2a 2f 0a 09 09 6e 63 70 5f 61 64 lowing.is.a.wildcard.*/...ncp_ad
1a240 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 27 2a 27 29 3b 0a 09 7d 0a 09 72 65 73 75 6c 74 20 d_byte(server,.'*');..}..result.
1a260 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 32 28 73 65 72 76 65 72 2c 20 38 37 2c 20 62 75 66 66 65 =.ncp_request2(server,.87,.buffe
1a280 72 2c 20 62 75 66 73 69 7a 65 29 3b 0a 09 69 66 20 28 72 65 73 75 6c 74 29 20 7b 0a 09 09 6e 63 r,.bufsize);..if.(result).{...nc
1a2a0 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 72 65 74 75 72 p_unlock_server(server);...retur
1a2c0 6e 20 72 65 73 75 6c 74 3b 0a 09 7d 0a 09 69 66 20 28 73 65 72 76 65 72 2d 3e 6e 63 70 5f 72 65 n.result;..}..if.(server->ncp_re
1a2e0 70 6c 79 5f 73 69 7a 65 20 3c 20 31 32 29 20 7b 0a 09 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 ply_size.<.12).{...ncp_unlock_se
1a300 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 72 65 74 75 72 6e 20 30 78 46 46 3b 0a 09 7d 0a rver(server);...return.0xFF;..}.
1a320 09 2a 72 73 69 7a 65 20 3d 20 73 65 72 76 65 72 2d 3e 6e 63 70 5f 72 65 70 6c 79 5f 73 69 7a 65 .*rsize.=.server->ncp_reply_size
1a340 20 2d 20 31 32 3b 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 .-.12;..ncp_unlock_server(server
1a360 29 3b 0a 09 62 75 66 66 65 72 20 3d 20 62 75 66 66 65 72 20 2b 20 73 69 7a 65 6f 66 28 73 74 72 );..buffer.=.buffer.+.sizeof(str
1a380 75 63 74 20 6e 63 70 5f 72 65 70 6c 79 5f 68 65 61 64 65 72 29 3b 0a 09 2a 72 62 75 66 20 3d 20 uct.ncp_reply_header);..*rbuf.=.
1a3a0 62 75 66 66 65 72 20 2b 20 31 32 3b 0a 09 2a 63 6e 74 20 3d 20 57 56 41 4c 5f 4c 48 28 62 75 66 buffer.+.12;..*cnt.=.WVAL_LH(buf
1a3c0 66 65 72 20 2b 20 31 30 29 3b 0a 09 2a 6d 6f 72 65 20 3d 20 42 56 41 4c 28 62 75 66 66 65 72 20 fer.+.10);..*more.=.BVAL(buffer.
1a3e0 2b 20 39 29 3b 0a 09 6d 65 6d 63 70 79 28 73 65 71 2c 20 62 75 66 66 65 72 2c 20 39 29 3b 0a 09 +.9);..memcpy(seq,.buffer,.9);..
1a400 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 52 65 6e 61 return.0;.}..static.int.ncp_Rena
1a420 6d 65 4e 53 45 6e 74 72 79 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 meNSEntry(struct.ncp_server.*ser
1a440 76 65 72 2c 0a 09 09 20 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 6f 6c 64 5f 64 69 72 2c 20 ver,.....struct.inode.*old_dir,.
1a460 63 6f 6e 73 74 20 63 68 61 72 20 2a 6f 6c 64 5f 6e 61 6d 65 2c 20 5f 5f 6c 65 31 36 20 6f 6c 64 const.char.*old_name,.__le16.old
1a480 5f 74 79 70 65 2c 0a 09 09 20 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 6e 65 77 5f 64 69 72 _type,.....struct.inode.*new_dir
1a4a0 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 6e 65 77 5f 6e 61 6d 65 29 0a 7b 0a 09 69 6e 74 20 72 ,.const.char.*new_name).{..int.r
1a4c0 65 73 75 6c 74 20 3d 20 2d 45 49 4e 56 41 4c 3b 0a 0a 09 69 66 20 28 28 6f 6c 64 5f 64 69 72 20 esult.=.-EINVAL;...if.((old_dir.
1a4e0 3d 3d 20 4e 55 4c 4c 29 20 7c 7c 20 28 6f 6c 64 5f 6e 61 6d 65 20 3d 3d 20 4e 55 4c 4c 29 20 7c ==.NULL).||.(old_name.==.NULL).|
1a500 7c 0a 09 20 20 20 20 28 6e 65 77 5f 64 69 72 20 3d 3d 20 4e 55 4c 4c 29 20 7c 7c 20 28 6e 65 77 |......(new_dir.==.NULL).||.(new
1a520 5f 6e 61 6d 65 20 3d 3d 20 4e 55 4c 4c 29 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 6e 63 _name.==.NULL))...goto.out;...nc
1a540 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 p_init_request(server);..ncp_add
1a560 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 34 29 3b 09 2f 2a 20 73 75 62 66 75 6e 63 74 69 6f 6e _byte(server,.4);./*.subfunction
1a580 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 73 65 72 76 65 72 .*/..ncp_add_byte(server,.server
1a5a0 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 5b 4e 43 50 5f 46 49 4e 46 4f 28 6f 6c 64 5f 64 69 72 29 2d ->name_space[NCP_FINFO(old_dir)-
1a5c0 3e 76 6f 6c 4e 75 6d 62 65 72 5d 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 >volNumber]);..ncp_add_byte(serv
1a5e0 65 72 2c 20 31 29 3b 09 2f 2a 20 72 65 6e 61 6d 65 20 66 6c 61 67 20 2a 2f 0a 09 6e 63 70 5f 61 er,.1);./*.rename.flag.*/..ncp_a
1a600 64 64 5f 77 6f 72 64 28 73 65 72 76 65 72 2c 20 6f 6c 64 5f 74 79 70 65 29 3b 09 2f 2a 20 73 65 dd_word(server,.old_type);./*.se
1a620 61 72 63 68 20 61 74 74 72 69 62 75 74 65 73 20 2a 2f 0a 0a 09 2f 2a 20 73 6f 75 72 63 65 20 48 arch.attributes.*/.../*.source.H
1a640 61 6e 64 6c 65 20 50 61 74 68 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 andle.Path.*/..ncp_add_byte(serv
1a660 65 72 2c 20 4e 43 50 5f 46 49 4e 46 4f 28 6f 6c 64 5f 64 69 72 29 2d 3e 76 6f 6c 4e 75 6d 62 65 er,.NCP_FINFO(old_dir)->volNumbe
1a680 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 64 77 6f 72 64 28 73 65 72 76 65 72 2c 20 4e 43 50 5f 46 r);..ncp_add_dword(server,.NCP_F
1a6a0 49 4e 46 4f 28 6f 6c 64 5f 64 69 72 29 2d 3e 64 69 72 45 6e 74 4e 75 6d 29 3b 0a 09 6e 63 70 5f INFO(old_dir)->dirEntNum);..ncp_
1a6c0 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 31 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 add_byte(server,.1);..ncp_add_by
1a6e0 74 65 28 73 65 72 76 65 72 2c 20 31 29 3b 09 2f 2a 20 31 20 73 6f 75 72 63 65 20 63 6f 6d 70 6f te(server,.1);./*.1.source.compo
1a700 6e 65 6e 74 20 2a 2f 0a 0a 09 2f 2a 20 64 65 73 74 20 48 61 6e 64 6c 65 20 50 61 74 68 20 2a 2f nent.*/.../*.dest.Handle.Path.*/
1a720 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 4e 43 50 5f 46 49 4e 46 4f ..ncp_add_byte(server,.NCP_FINFO
1a740 28 6e 65 77 5f 64 69 72 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f (new_dir)->volNumber);..ncp_add_
1a760 64 77 6f 72 64 28 73 65 72 76 65 72 2c 20 4e 43 50 5f 46 49 4e 46 4f 28 6e 65 77 5f 64 69 72 29 dword(server,.NCP_FINFO(new_dir)
1a780 2d 3e 64 69 72 45 6e 74 4e 75 6d 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 ->dirEntNum);..ncp_add_byte(serv
1a7a0 65 72 2c 20 31 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 31 29 er,.1);..ncp_add_byte(server,.1)
1a7c0 3b 09 2f 2a 20 31 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 63 6f 6d 70 6f 6e 65 6e 74 20 2a 2f 0a ;./*.1.destination.component.*/.
1a7e0 0a 09 2f 2a 20 73 6f 75 72 63 65 20 70 61 74 68 20 73 74 72 69 6e 67 20 2a 2f 0a 09 6e 63 70 5f ../*.source.path.string.*/..ncp_
1a800 61 64 64 5f 70 73 74 72 69 6e 67 28 73 65 72 76 65 72 2c 20 6f 6c 64 5f 6e 61 6d 65 29 3b 0a 09 add_pstring(server,.old_name);..
1a820 2f 2a 20 64 65 73 74 20 70 61 74 68 20 73 74 72 69 6e 67 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f /*.dest.path.string.*/..ncp_add_
1a840 70 73 74 72 69 6e 67 28 73 65 72 76 65 72 2c 20 6e 65 77 5f 6e 61 6d 65 29 3b 0a 0a 09 72 65 73 pstring(server,.new_name);...res
1a860 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 38 37 29 3b 0a 09 ult.=.ncp_request(server,.87);..
1a880 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 6f 75 74 3a 0a ncp_unlock_server(server);.out:.
1a8a0 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 69 6e 74 20 6e 63 70 5f 72 65 6e 5f 6f .return.result;.}..int.ncp_ren_o
1a8c0 72 5f 6d 6f 76 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 73 74 72 75 63 74 20 6e 63 70 5f r_mov_file_or_subdir(struct.ncp_
1a8e0 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 0a 09 09 09 09 73 74 72 75 63 74 20 69 6e 6f 64 65 server.*server,.....struct.inode
1a900 20 2a 6f 6c 64 5f 64 69 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 6f 6c 64 5f 6e 61 6d 65 2c .*old_dir,.const.char.*old_name,
1a920 0a 09 09 09 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 6e 65 77 5f 64 69 72 2c 20 63 6f 6e 73 .....struct.inode.*new_dir,.cons
1a940 74 20 63 68 61 72 20 2a 6e 65 77 5f 6e 61 6d 65 29 0a 7b 0a 20 20 20 20 20 20 20 20 69 6e 74 20 t.char.*new_name).{.........int.
1a960 72 65 73 75 6c 74 3b 0a 20 20 20 20 20 20 20 20 5f 5f 6c 65 31 36 20 6f 6c 64 5f 74 79 70 65 20 result;.........__le16.old_type.
1a980 3d 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 30 78 30 36 29 3b 0a 0a 2f 2a 20 49 66 20 73 6f 6d 65 =.cpu_to_le16(0x06);../*.If.some
1a9a0 62 6f 64 79 20 63 61 6e 20 64 6f 20 69 74 20 61 74 6f 6d 69 63 2c 20 63 61 6c 6c 20 6d 65 2e 2e body.can.do.it.atomic,.call.me..
1a9c0 2e 20 76 61 6e 64 72 6f 76 65 40 76 63 2e 63 76 75 74 2e 63 7a 20 2a 2f 0a 09 72 65 73 75 6c 74 ..vandrove@vc.cvut.cz.*/..result
1a9e0 20 3d 20 6e 63 70 5f 52 65 6e 61 6d 65 4e 53 45 6e 74 72 79 28 73 65 72 76 65 72 2c 20 6f 6c 64 .=.ncp_RenameNSEntry(server,.old
1aa00 5f 64 69 72 2c 20 6f 6c 64 5f 6e 61 6d 65 2c 20 6f 6c 64 5f 74 79 70 65 2c 0a 09 20 20 20 20 20 _dir,.old_name,.old_type,.......
1aa20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 ..............................ne
1aa40 77 5f 64 69 72 2c 20 6e 65 77 5f 6e 61 6d 65 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 72 65 w_dir,.new_name);.........if.(re
1aa60 73 75 6c 74 20 3d 3d 20 30 78 46 46 29 09 2f 2a 20 46 69 6c 65 20 4e 6f 74 20 46 6f 75 6e 64 2c sult.==.0xFF)./*.File.Not.Found,
1aa80 20 74 72 79 20 64 69 72 65 63 74 6f 72 79 20 2a 2f 0a 09 7b 0a 09 09 6f 6c 64 5f 74 79 70 65 20 .try.directory.*/..{...old_type.
1aaa0 3d 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 30 78 31 36 29 3b 0a 09 09 72 65 73 75 6c 74 20 3d 20 =.cpu_to_le16(0x16);...result.=.
1aac0 6e 63 70 5f 52 65 6e 61 6d 65 4e 53 45 6e 74 72 79 28 73 65 72 76 65 72 2c 20 6f 6c 64 5f 64 69 ncp_RenameNSEntry(server,.old_di
1aae0 72 2c 20 6f 6c 64 5f 6e 61 6d 65 2c 20 6f 6c 64 5f 74 79 70 65 2c 0a 09 09 09 09 09 09 20 20 20 r,.old_name,.old_type,..........
1ab00 6e 65 77 5f 64 69 72 2c 20 6e 65 77 5f 6e 61 6d 65 29 3b 0a 09 7d 0a 09 69 66 20 28 72 65 73 75 new_dir,.new_name);..}..if.(resu
1ab20 6c 74 20 21 3d 20 30 78 39 32 29 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 09 2f 2a 20 41 6c lt.!=.0x92).return.result;./*.Al
1ab40 6c 20 65 78 63 65 70 74 20 4e 4f 5f 46 49 4c 45 53 5f 52 45 4e 41 4d 45 44 20 2a 2f 0a 09 72 65 l.except.NO_FILES_RENAMED.*/..re
1ab60 73 75 6c 74 20 3d 20 6e 63 70 5f 64 65 6c 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 73 65 sult.=.ncp_del_file_or_subdir(se
1ab80 72 76 65 72 2c 20 6e 65 77 5f 64 69 72 2c 20 6e 65 77 5f 6e 61 6d 65 29 3b 0a 09 69 66 20 28 72 rver,.new_dir,.new_name);..if.(r
1aba0 65 73 75 6c 74 20 21 3d 20 30 29 20 72 65 74 75 72 6e 20 2d 45 41 43 43 45 53 3b 0a 09 72 65 73 esult.!=.0).return.-EACCES;..res
1abc0 75 6c 74 20 3d 20 6e 63 70 5f 52 65 6e 61 6d 65 4e 53 45 6e 74 72 79 28 73 65 72 76 65 72 2c 20 ult.=.ncp_RenameNSEntry(server,.
1abe0 6f 6c 64 5f 64 69 72 2c 20 6f 6c 64 5f 6e 61 6d 65 2c 20 6f 6c 64 5f 74 79 70 65 2c 0a 09 09 09 old_dir,.old_name,.old_type,....
1ac00 09 09 20 20 20 6e 65 77 5f 64 69 72 2c 20 6e 65 77 5f 6e 61 6d 65 29 3b 0a 09 72 65 74 75 72 6e .....new_dir,.new_name);..return
1ac20 20 72 65 73 75 6c 74 3b 0a 7d 0a 09 0a 0a 2f 2a 20 57 65 20 68 61 76 65 20 74 6f 20 74 72 61 6e .result;.}..../*.We.have.to.tran
1ac40 73 66 65 72 20 74 6f 2f 66 72 6f 6d 20 75 73 65 72 20 73 70 61 63 65 20 2a 2f 0a 69 6e 74 0a 6e sfer.to/from.user.space.*/.int.n
1ac60 63 70 5f 72 65 61 64 5f 6b 65 72 6e 65 6c 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 cp_read_kernel(struct.ncp_server
1ac80 20 2a 73 65 72 76 65 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 69 6c 65 5f 69 64 2c 0a 09 .*server,.const.char.*file_id,..
1aca0 20 20 20 20 20 5f 5f 75 33 32 20 6f 66 66 73 65 74 2c 20 5f 5f 75 31 36 20 74 6f 5f 72 65 61 64 .....__u32.offset,.__u16.to_read
1acc0 2c 20 63 68 61 72 20 2a 74 61 72 67 65 74 2c 20 69 6e 74 20 2a 62 79 74 65 73 5f 72 65 61 64 29 ,.char.*target,.int.*bytes_read)
1ace0 0a 7b 0a 09 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 6f 75 72 63 65 3b 0a 09 69 6e 74 20 72 65 73 .{..const.char.*source;..int.res
1ad00 75 6c 74 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 29 3b ult;...ncp_init_request(server);
1ad20 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b 0a 09 6e 63 70 5f ..ncp_add_byte(server,.0);..ncp_
1ad40 61 64 64 5f 6d 65 6d 28 73 65 72 76 65 72 2c 20 66 69 6c 65 5f 69 64 2c 20 36 29 3b 0a 09 6e 63 add_mem(server,.file_id,.6);..nc
1ad60 70 5f 61 64 64 5f 62 65 33 32 28 73 65 72 76 65 72 2c 20 6f 66 66 73 65 74 29 3b 0a 09 6e 63 70 p_add_be32(server,.offset);..ncp
1ad80 5f 61 64 64 5f 62 65 31 36 28 73 65 72 76 65 72 2c 20 74 6f 5f 72 65 61 64 29 3b 0a 0a 09 69 66 _add_be16(server,.to_read);...if
1ada0 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 .((result.=.ncp_request(server,.
1adc0 37 32 29 29 20 21 3d 20 30 29 20 7b 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 7d 0a 09 2a 62 79 72)).!=.0).{...goto.out;..}..*by
1ade0 74 65 73 5f 72 65 61 64 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 62 65 31 36 28 73 65 72 76 65 72 tes_read.=.ncp_reply_be16(server
1ae00 2c 20 30 29 3b 0a 09 73 6f 75 72 63 65 20 3d 20 6e 63 70 5f 72 65 70 6c 79 5f 64 61 74 61 28 73 ,.0);..source.=.ncp_reply_data(s
1ae20 65 72 76 65 72 2c 20 32 20 2b 20 28 6f 66 66 73 65 74 20 26 20 31 29 29 3b 0a 0a 09 6d 65 6d 63 erver,.2.+.(offset.&.1));...memc
1ae40 70 79 28 74 61 72 67 65 74 2c 20 73 6f 75 72 63 65 2c 20 2a 62 79 74 65 73 5f 72 65 61 64 29 3b py(target,.source,.*bytes_read);
1ae60 0a 6f 75 74 3a 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 .out:..ncp_unlock_server(server)
1ae80 3b 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 2f 2a 20 54 68 65 72 65 20 69 73 ;..return.result;.}../*.There.is
1aea0 20 61 20 70 72 6f 62 6c 65 6d 2e 2e 2e 20 65 67 72 65 70 20 61 6e 64 20 73 6f 6d 65 20 6f 74 68 .a.problem....egrep.and.some.oth
1aec0 65 72 20 73 69 6c 6c 79 20 74 6f 6f 6c 73 20 64 6f 3a 0a 09 78 20 3d 20 6d 6d 61 70 28 4e 55 4c er.silly.tools.do:..x.=.mmap(NUL
1aee0 4c 2c 20 4d 41 50 5f 50 52 49 56 41 54 45 2c 20 50 52 4f 54 5f 52 45 41 44 7c 50 52 4f 54 5f 57 L,.MAP_PRIVATE,.PROT_READ|PROT_W
1af00 52 49 54 45 2c 20 3c 6e 63 70 66 73 20 66 64 3e 2c 20 33 32 37 36 38 29 3b 0a 09 72 65 61 64 28 RITE,.<ncpfs.fd>,.32768);..read(
1af20 3c 6e 63 70 66 73 20 66 64 3e 2c 20 78 2c 20 33 32 37 36 38 29 3b 0a 20 20 20 4e 6f 77 20 63 6f <ncpfs.fd>,.x,.32768);....Now.co
1af40 70 79 69 6e 67 20 72 65 61 64 20 72 65 73 75 6c 74 20 62 79 20 63 6f 70 79 5f 74 6f 5f 75 73 65 pying.read.result.by.copy_to_use
1af60 72 20 63 61 75 73 65 73 20 70 61 67 65 66 61 75 6c 74 2e 20 54 68 69 73 20 70 61 67 65 66 61 75 r.causes.pagefault..This.pagefau
1af80 6c 74 0a 20 20 20 63 6f 75 6c 64 20 6e 6f 74 20 62 65 20 68 61 6e 64 6c 65 64 20 62 65 63 61 75 lt....could.not.be.handled.becau
1afa0 73 65 20 6f 66 20 73 65 72 76 65 72 20 77 61 73 20 6c 6f 63 6b 65 64 20 64 75 65 20 74 6f 20 72 se.of.server.was.locked.due.to.r
1afc0 65 61 64 2e 20 53 6f 20 77 65 20 68 61 76 65 0a 20 20 20 74 6f 20 75 73 65 20 74 65 6d 70 6f 72 ead..So.we.have....to.use.tempor
1afe0 61 72 79 20 62 75 66 66 65 72 2e 20 53 6f 20 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 ary.buffer..So.ncp_unlock_server
1b000 20 6d 75 73 74 20 62 65 20 64 6f 6e 65 20 62 65 66 6f 72 65 0a 20 20 20 63 6f 70 79 5f 74 6f 5f .must.be.done.before....copy_to_
1b020 75 73 65 72 20 28 61 6e 64 20 66 6f 72 20 77 72 69 74 65 2c 20 63 6f 70 79 5f 66 72 6f 6d 5f 75 user.(and.for.write,.copy_from_u
1b040 73 65 72 20 6d 75 73 74 20 62 65 20 64 6f 6e 65 20 62 65 66 6f 72 65 20 0a 20 20 20 6e 63 70 5f ser.must.be.done.before.....ncp_
1b060 69 6e 69 74 5f 72 65 71 75 65 73 74 2e 2e 2e 20 73 61 6d 65 20 61 70 70 6c 69 65 73 20 66 6f 72 init_request....same.applies.for
1b080 20 73 65 6e 64 20 72 61 77 20 70 61 63 6b 65 74 20 69 6f 63 74 6c 29 2e 20 42 65 63 61 75 73 65 .send.raw.packet.ioctl)..Because
1b0a0 20 6f 66 0a 20 20 20 66 69 6c 65 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20 72 65 61 64 20 69 6e 20 .of....file.is.normally.read.in.
1b0c0 62 69 67 67 65 72 20 63 68 75 6e 6b 73 2c 20 63 61 6c 6c 65 72 20 70 72 6f 76 69 64 65 73 20 6b bigger.chunks,.caller.provides.k
1b0e0 6d 61 6c 6c 6f 63 65 64 20 0a 20 20 20 28 76 6d 61 6c 6c 6f 63 65 64 29 20 63 68 75 6e 6b 20 6f malloced.....(vmalloced).chunk.o
1b100 66 20 6d 65 6d 6f 72 79 20 77 69 74 68 20 73 69 7a 65 20 3e 3d 20 74 6f 5f 72 65 61 64 2e 2e 2e f.memory.with.size.>=.to_read...
1b120 0a 20 2a 2f 0a 69 6e 74 0a 6e 63 70 5f 72 65 61 64 5f 62 6f 75 6e 63 65 28 73 74 72 75 63 74 20 ..*/.int.ncp_read_bounce(struct.
1b140 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a ncp_server.*server,.const.char.*
1b160 66 69 6c 65 5f 69 64 2c 0a 09 20 5f 5f 75 33 32 20 6f 66 66 73 65 74 2c 20 5f 5f 75 31 36 20 74 file_id,...__u32.offset,.__u16.t
1b180 6f 5f 72 65 61 64 2c 20 73 74 72 75 63 74 20 69 6f 76 5f 69 74 65 72 20 2a 74 6f 2c 0a 09 20 69 o_read,.struct.iov_iter.*to,...i
1b1a0 6e 74 20 2a 62 79 74 65 73 5f 72 65 61 64 2c 20 76 6f 69 64 20 2a 62 6f 75 6e 63 65 2c 20 5f 5f nt.*bytes_read,.void.*bounce,.__
1b1c0 75 33 32 20 62 75 66 73 69 7a 65 29 0a 7b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 6e 63 u32.bufsize).{..int.result;...nc
1b1e0 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 p_init_request(server);..ncp_add
1b200 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 6d 65 6d 28 73 _byte(server,.0);..ncp_add_mem(s
1b220 65 72 76 65 72 2c 20 66 69 6c 65 5f 69 64 2c 20 36 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 65 33 erver,.file_id,.6);..ncp_add_be3
1b240 32 28 73 65 72 76 65 72 2c 20 6f 66 66 73 65 74 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 65 31 36 2(server,.offset);..ncp_add_be16
1b260 28 73 65 72 76 65 72 2c 20 74 6f 5f 72 65 61 64 29 3b 0a 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 (server,.to_read);..result.=.ncp
1b280 5f 72 65 71 75 65 73 74 32 28 73 65 72 76 65 72 2c 20 37 32 2c 20 62 6f 75 6e 63 65 2c 20 62 75 _request2(server,.72,.bounce,.bu
1b2a0 66 73 69 7a 65 29 3b 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 fsize);..ncp_unlock_server(serve
1b2c0 72 29 3b 0a 09 69 66 20 28 21 72 65 73 75 6c 74 29 20 7b 0a 09 09 69 6e 74 20 6c 65 6e 20 3d 20 r);..if.(!result).{...int.len.=.
1b2e0 67 65 74 5f 75 6e 61 6c 69 67 6e 65 64 5f 62 65 31 36 28 28 63 68 61 72 20 2a 29 62 6f 75 6e 63 get_unaligned_be16((char.*)bounc
1b300 65 20 2b 0a 09 09 09 20 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 70 6c 79 e.+......sizeof(struct.ncp_reply
1b320 5f 68 65 61 64 65 72 29 29 3b 0a 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 49 4f 3b 0a 09 09 69 66 _header));...result.=.-EIO;...if
1b340 20 28 6c 65 6e 20 3c 3d 20 74 6f 5f 72 65 61 64 29 20 7b 0a 09 09 09 63 68 61 72 2a 20 73 6f 75 .(len.<=.to_read).{....char*.sou
1b360 72 63 65 3b 0a 0a 09 09 09 73 6f 75 72 63 65 20 3d 20 28 63 68 61 72 2a 29 62 6f 75 6e 63 65 20 rce;.....source.=.(char*)bounce.
1b380 2b 20 0a 09 09 09 20 20 20 20 20 20 20 20 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 6e 63 70 +..............sizeof(struct.ncp
1b3a0 5f 72 65 70 6c 79 5f 68 65 61 64 65 72 29 20 2b 20 32 20 2b 20 0a 09 09 09 20 20 20 20 20 20 20 _reply_header).+.2.+............
1b3c0 20 20 28 6f 66 66 73 65 74 20 26 20 31 29 3b 0a 09 09 09 2a 62 79 74 65 73 5f 72 65 61 64 20 3d ..(offset.&.1);....*bytes_read.=
1b3e0 20 6c 65 6e 3b 0a 09 09 09 72 65 73 75 6c 74 20 3d 20 30 3b 0a 09 09 09 69 66 20 28 63 6f 70 79 .len;....result.=.0;....if.(copy
1b400 5f 74 6f 5f 69 74 65 72 28 73 6f 75 72 63 65 2c 20 6c 65 6e 2c 20 74 6f 29 20 21 3d 20 6c 65 6e _to_iter(source,.len,.to).!=.len
1b420 29 0a 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 46 41 55 4c 54 3b 0a 09 09 7d 0a 09 7d 0a 09 ).....result.=.-EFAULT;...}..}..
1b440 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 77 72 69 74 65 5f return.result;.}..int.ncp_write_
1b460 6b 65 72 6e 65 6c 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 kernel(struct.ncp_server.*server
1b480 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 69 6c 65 5f 69 64 2c 0a 09 09 20 5f 5f 75 33 32 20 ,.const.char.*file_id,....__u32.
1b4a0 6f 66 66 73 65 74 2c 20 5f 5f 75 31 36 20 74 6f 5f 77 72 69 74 65 2c 0a 09 09 20 63 6f 6e 73 74 offset,.__u16.to_write,....const
1b4c0 20 63 68 61 72 20 2a 73 6f 75 72 63 65 2c 20 69 6e 74 20 2a 62 79 74 65 73 5f 77 72 69 74 74 65 .char.*source,.int.*bytes_writte
1b4e0 6e 29 0a 7b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 n).{..int.result;...ncp_init_req
1b500 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 uest(server);..ncp_add_byte(serv
1b520 65 72 2c 20 30 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 6d 65 6d 28 73 65 72 76 65 72 2c 20 66 69 6c er,.0);..ncp_add_mem(server,.fil
1b540 65 5f 69 64 2c 20 36 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 65 33 32 28 73 65 72 76 65 72 2c 20 e_id,.6);..ncp_add_be32(server,.
1b560 6f 66 66 73 65 74 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 65 31 36 28 73 65 72 76 65 72 2c 20 74 offset);..ncp_add_be16(server,.t
1b580 6f 5f 77 72 69 74 65 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 6d 65 6d 28 73 65 72 76 65 72 2c 20 73 o_write);..ncp_add_mem(server,.s
1b5a0 6f 75 72 63 65 2c 20 74 6f 5f 77 72 69 74 65 29 3b 0a 09 0a 09 69 66 20 28 28 72 65 73 75 6c 74 ource,.to_write);....if.((result
1b5c0 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 37 33 29 29 20 3d 3d 20 30 .=.ncp_request(server,.73)).==.0
1b5e0 29 0a 09 09 2a 62 79 74 65 73 5f 77 72 69 74 74 65 6e 20 3d 20 74 6f 5f 77 72 69 74 65 3b 0a 09 )...*bytes_written.=.to_write;..
1b600 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 ncp_unlock_server(server);..retu
1b620 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 rn.result;.}..#ifdef.CONFIG_NCPF
1b640 53 5f 49 4f 43 54 4c 5f 4c 4f 43 4b 49 4e 47 0a 69 6e 74 0a 6e 63 70 5f 4c 6f 67 50 68 79 73 69 S_IOCTL_LOCKING.int.ncp_LogPhysi
1b660 63 61 6c 52 65 63 6f 72 64 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 calRecord(struct.ncp_server.*ser
1b680 76 65 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 69 6c 65 5f 69 64 2c 0a 09 20 20 5f 5f 75 ver,.const.char.*file_id,....__u
1b6a0 38 20 6c 6f 63 6b 74 79 70 65 2c 20 5f 5f 75 33 32 20 6f 66 66 73 65 74 2c 20 5f 5f 75 33 32 20 8.locktype,.__u32.offset,.__u32.
1b6c0 6c 65 6e 67 74 68 2c 20 5f 5f 75 31 36 20 74 69 6d 65 6f 75 74 29 0a 7b 0a 09 69 6e 74 20 72 65 length,.__u16.timeout).{..int.re
1b6e0 73 75 6c 74 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 29 sult;...ncp_init_request(server)
1b700 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 6c 6f 63 6b 74 79 70 65 ;..ncp_add_byte(server,.locktype
1b720 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 6d 65 6d 28 73 65 72 76 65 72 2c 20 66 69 6c 65 5f 69 64 2c );..ncp_add_mem(server,.file_id,
1b740 20 36 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 65 33 32 28 73 65 72 76 65 72 2c 20 6f 66 66 73 65 .6);..ncp_add_be32(server,.offse
1b760 74 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 65 33 32 28 73 65 72 76 65 72 2c 20 6c 65 6e 67 74 68 t);..ncp_add_be32(server,.length
1b780 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 65 31 36 28 73 65 72 76 65 72 2c 20 74 69 6d 65 6f 75 74 );..ncp_add_be16(server,.timeout
1b7a0 29 3b 0a 0a 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 75 65 73 74 28 73 );...if.((result.=.ncp_request(s
1b7c0 65 72 76 65 72 2c 20 30 78 31 41 29 29 20 21 3d 20 30 29 0a 09 7b 0a 09 09 6e 63 70 5f 75 6e 6c erver,.0x1A)).!=.0)..{...ncp_unl
1b7e0 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 72 65 74 75 72 6e 20 72 65 73 ock_server(server);...return.res
1b800 75 6c 74 3b 0a 09 7d 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 ult;..}..ncp_unlock_server(serve
1b820 72 29 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 43 6c 65 61 72 50 r);..return.0;.}..int.ncp_ClearP
1b840 68 79 73 69 63 61 6c 52 65 63 6f 72 64 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 hysicalRecord(struct.ncp_server.
1b860 2a 73 65 72 76 65 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 69 6c 65 5f 69 64 2c 0a 09 20 *server,.const.char.*file_id,...
1b880 20 5f 5f 75 33 32 20 6f 66 66 73 65 74 2c 20 5f 5f 75 33 32 20 6c 65 6e 67 74 68 29 0a 7b 0a 09 .__u32.offset,.__u32.length).{..
1b8a0 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 72 65 71 75 65 73 74 28 73 int.result;...ncp_init_request(s
1b8c0 65 72 76 65 72 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 79 74 65 28 73 65 72 76 65 72 2c 20 30 29 erver);..ncp_add_byte(server,.0)
1b8e0 3b 09 2f 2a 20 77 68 6f 20 6b 6e 6f 77 73 2e 2e 2e 20 6c 61 6e 61 6c 79 7a 65 72 20 73 61 79 73 ;./*.who.knows....lanalyzer.says
1b900 20 74 68 61 74 20 2a 2f 0a 09 6e 63 70 5f 61 64 64 5f 6d 65 6d 28 73 65 72 76 65 72 2c 20 66 69 .that.*/..ncp_add_mem(server,.fi
1b920 6c 65 5f 69 64 2c 20 36 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 65 33 32 28 73 65 72 76 65 72 2c le_id,.6);..ncp_add_be32(server,
1b940 20 6f 66 66 73 65 74 29 3b 0a 09 6e 63 70 5f 61 64 64 5f 62 65 33 32 28 73 65 72 76 65 72 2c 20 .offset);..ncp_add_be32(server,.
1b960 6c 65 6e 67 74 68 29 3b 0a 0a 09 69 66 20 28 28 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 72 65 71 length);...if.((result.=.ncp_req
1b980 75 65 73 74 28 73 65 72 76 65 72 2c 20 30 78 31 45 29 29 20 21 3d 20 30 29 0a 09 7b 0a 09 09 6e uest(server,.0x1E)).!=.0)..{...n
1b9a0 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 29 3b 0a 09 09 72 65 74 75 cp_unlock_server(server);...retu
1b9c0 72 6e 20 72 65 73 75 6c 74 3b 0a 09 7d 0a 09 6e 63 70 5f 75 6e 6c 6f 63 6b 5f 73 65 72 76 65 72 rn.result;..}..ncp_unlock_server
1b9e0 28 73 65 72 76 65 72 29 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 23 65 6e 64 69 66 09 2f 2a (server);..return.0;.}.#endif./*
1ba00 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 49 4f 43 54 4c 5f 4c 4f 43 4b 49 4e 47 20 2a 2f 0a 0a .CONFIG_NCPFS_IOCTL_LOCKING.*/..
1ba20 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 4c 53 0a 2f 2a 20 54 68 69 73 20 #ifdef.CONFIG_NCPFS_NLS./*.This.
1ba40 61 72 65 20 74 68 65 20 4e 4c 53 20 63 6f 6e 76 65 72 73 69 6f 6e 20 72 6f 75 74 69 6e 65 73 20 are.the.NLS.conversion.routines.
1ba60 77 69 74 68 20 69 6e 73 70 69 72 61 74 69 6f 6e 73 20 61 6e 64 20 63 6f 64 65 20 70 61 72 74 73 with.inspirations.and.code.parts
1ba80 0a 20 2a 20 66 72 6f 6d 20 74 68 65 20 76 66 61 74 20 66 69 6c 65 20 73 79 73 74 65 6d 20 61 6e ..*.from.the.vfat.file.system.an
1baa0 64 20 68 69 6e 74 73 20 66 72 6f 6d 20 50 65 74 72 20 56 61 6e 64 72 6f 76 65 63 2e 0a 20 2a 2f d.hints.from.Petr.Vandrovec...*/
1bac0 0a 0a 69 6e 74 0a 6e 63 70 5f 5f 69 6f 32 76 6f 6c 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 ..int.ncp__io2vol(struct.ncp_ser
1bae0 76 65 72 20 2a 73 65 72 76 65 72 2c 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 76 6e 61 6d ver.*server,.unsigned.char.*vnam
1bb00 65 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 2a 76 6c 65 6e 2c 0a 09 09 63 6f 6e 73 74 20 75 e,.unsigned.int.*vlen,...const.u
1bb20 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 69 6e 61 6d 65 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e nsigned.char.*iname,.unsigned.in
1bb40 74 20 69 6c 65 6e 2c 20 69 6e 74 20 63 63 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 6c 73 5f 74 61 t.ilen,.int.cc).{..struct.nls_ta
1bb60 62 6c 65 20 2a 69 6e 20 3d 20 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 69 6f 3b 0a 09 73 74 72 75 63 ble.*in.=.server->nls_io;..struc
1bb80 74 20 6e 6c 73 5f 74 61 62 6c 65 20 2a 6f 75 74 20 3d 20 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 76 t.nls_table.*out.=.server->nls_v
1bba0 6f 6c 3b 0a 09 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 76 6e 61 6d 65 5f 73 74 61 72 74 3b ol;..unsigned.char.*vname_start;
1bbc0 0a 09 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 76 6e 61 6d 65 5f 65 6e 64 3b 0a 09 63 6f 6e ..unsigned.char.*vname_end;..con
1bbe0 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 69 6e 61 6d 65 5f 65 6e 64 3b 0a 0a 09 69 st.unsigned.char.*iname_end;...i
1bc00 6e 61 6d 65 5f 65 6e 64 20 3d 20 69 6e 61 6d 65 20 2b 20 69 6c 65 6e 3b 0a 09 76 6e 61 6d 65 5f name_end.=.iname.+.ilen;..vname_
1bc20 73 74 61 72 74 20 3d 20 76 6e 61 6d 65 3b 0a 09 76 6e 61 6d 65 5f 65 6e 64 20 3d 20 76 6e 61 6d start.=.vname;..vname_end.=.vnam
1bc40 65 20 2b 20 2a 76 6c 65 6e 20 2d 20 31 3b 0a 0a 09 77 68 69 6c 65 20 28 69 6e 61 6d 65 20 3c 20 e.+.*vlen.-.1;...while.(iname.<.
1bc60 69 6e 61 6d 65 5f 65 6e 64 29 20 7b 0a 09 09 69 6e 74 20 63 68 6c 3b 0a 09 09 77 63 68 61 72 5f iname_end).{...int.chl;...wchar_
1bc80 74 20 65 63 3b 0a 0a 09 09 69 66 20 28 4e 43 50 5f 49 53 5f 46 4c 41 47 28 73 65 72 76 65 72 2c t.ec;....if.(NCP_IS_FLAG(server,
1bca0 20 4e 43 50 5f 46 4c 41 47 5f 55 54 46 38 29 29 20 7b 0a 09 09 09 69 6e 74 20 6b 3b 0a 09 09 09 .NCP_FLAG_UTF8)).{....int.k;....
1bcc0 75 6e 69 63 6f 64 65 5f 74 20 75 3b 0a 0a 09 09 09 6b 20 3d 20 75 74 66 38 5f 74 6f 5f 75 74 66 unicode_t.u;.....k.=.utf8_to_utf
1bce0 33 32 28 69 6e 61 6d 65 2c 20 69 6e 61 6d 65 5f 65 6e 64 20 2d 20 69 6e 61 6d 65 2c 20 26 75 29 32(iname,.iname_end.-.iname,.&u)
1bd00 3b 0a 09 09 09 69 66 20 28 6b 20 3c 20 30 20 7c 7c 20 75 20 3e 20 4d 41 58 5f 57 43 48 41 52 5f ;....if.(k.<.0.||.u.>.MAX_WCHAR_
1bd20 54 29 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 49 4e 56 41 4c 3b 0a 09 09 09 69 6e 61 6d 65 20 T).....return.-EINVAL;....iname.
1bd40 2b 3d 20 6b 3b 0a 09 09 09 65 63 20 3d 20 75 3b 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 69 +=.k;....ec.=.u;...}.else.{....i
1bd60 66 20 28 2a 69 6e 61 6d 65 20 3d 3d 20 4e 43 50 5f 45 53 43 29 20 7b 0a 09 09 09 09 69 6e 74 20 f.(*iname.==.NCP_ESC).{.....int.
1bd80 6b 3b 0a 0a 09 09 09 09 69 66 20 28 69 6e 61 6d 65 5f 65 6e 64 20 2d 20 69 6e 61 6d 65 20 3c 20 k;......if.(iname_end.-.iname.<.
1bda0 35 29 0a 09 09 09 09 09 67 6f 74 6f 20 6e 6f 73 70 65 63 3b 0a 0a 09 09 09 09 65 63 20 3d 20 30 5)......goto.nospec;......ec.=.0
1bdc0 3b 0a 09 09 09 09 66 6f 72 20 28 6b 20 3d 20 31 3b 20 6b 20 3c 20 35 3b 20 6b 2b 2b 29 20 7b 0a ;.....for.(k.=.1;.k.<.5;.k++).{.
1bde0 09 09 09 09 09 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 6e 63 3b 0a 0a 09 09 09 09 09 6e 63 20 .....unsigned.char.nc;.......nc.
1be00 3d 20 69 6e 61 6d 65 5b 6b 5d 20 2d 20 27 30 27 3b 0a 09 09 09 09 09 69 66 20 28 6e 63 20 3e 3d =.iname[k].-.'0';......if.(nc.>=
1be20 20 31 30 29 20 7b 0a 09 09 09 09 09 09 6e 63 20 2d 3d 20 27 41 27 20 2d 20 27 30 27 20 2d 20 31 .10).{.......nc.-=.'A'.-.'0'.-.1
1be40 30 3b 0a 09 09 09 09 09 09 69 66 20 28 28 6e 63 20 3c 20 31 30 29 20 7c 7c 20 28 6e 63 20 3e 20 0;.......if.((nc.<.10).||.(nc.>.
1be60 31 35 29 29 20 7b 0a 09 09 09 09 09 09 09 67 6f 74 6f 20 6e 6f 73 70 65 63 3b 0a 09 09 09 09 09 15)).{........goto.nospec;......
1be80 09 7d 0a 09 09 09 09 09 7d 0a 09 09 09 09 09 65 63 20 3d 20 28 65 63 20 3c 3c 20 34 29 20 7c 20 .}......}......ec.=.(ec.<<.4).|.
1bea0 6e 63 3b 0a 09 09 09 09 7d 0a 09 09 09 09 69 6e 61 6d 65 20 2b 3d 20 35 3b 0a 09 09 09 7d 20 65 nc;.....}.....iname.+=.5;....}.e
1bec0 6c 73 65 20 7b 0a 6e 6f 73 70 65 63 3a 3b 09 09 09 0a 09 09 09 09 69 66 20 28 20 28 63 68 6c 20 lse.{.nospec:;........if.(.(chl.
1bee0 3d 20 69 6e 2d 3e 63 68 61 72 32 75 6e 69 28 69 6e 61 6d 65 2c 20 69 6e 61 6d 65 5f 65 6e 64 20 =.in->char2uni(iname,.iname_end.
1bf00 2d 20 69 6e 61 6d 65 2c 20 26 65 63 29 29 20 3c 20 30 29 0a 09 09 09 09 09 72 65 74 75 72 6e 20 -.iname,.&ec)).<.0)......return.
1bf20 63 68 6c 3b 0a 09 09 09 09 69 6e 61 6d 65 20 2b 3d 20 63 68 6c 3b 0a 09 09 09 7d 0a 09 09 7d 0a chl;.....iname.+=.chl;....}...}.
1bf40 0a 09 09 2f 2a 20 75 6e 69 74 6f 75 70 70 65 72 20 73 68 6f 75 6c 64 20 62 65 20 68 65 72 65 21 .../*.unitoupper.should.be.here!
1bf60 20 2a 2f 0a 0a 09 09 63 68 6c 20 3d 20 6f 75 74 2d 3e 75 6e 69 32 63 68 61 72 28 65 63 2c 20 76 .*/....chl.=.out->uni2char(ec,.v
1bf80 6e 61 6d 65 2c 20 76 6e 61 6d 65 5f 65 6e 64 20 2d 20 76 6e 61 6d 65 29 3b 0a 09 09 69 66 20 28 name,.vname_end.-.vname);...if.(
1bfa0 63 68 6c 20 3c 20 30 29 0a 09 09 09 72 65 74 75 72 6e 20 63 68 6c 3b 0a 0a 09 09 2f 2a 20 74 68 chl.<.0)....return.chl;..../*.th
1bfc0 69 73 20 69 73 20 77 72 6f 6e 67 2e 2e 2e 20 2a 2f 0a 09 09 69 66 20 28 63 63 29 20 7b 0a 09 09 is.is.wrong....*/...if.(cc).{...
1bfe0 09 69 6e 74 20 63 68 69 3b 0a 0a 09 09 09 66 6f 72 20 28 63 68 69 20 3d 20 30 3b 20 63 68 69 20 .int.chi;.....for.(chi.=.0;.chi.
1c000 3c 20 63 68 6c 3b 20 63 68 69 2b 2b 29 7b 0a 09 09 09 09 76 6e 61 6d 65 5b 63 68 69 5d 20 3d 20 <.chl;.chi++){.....vname[chi].=.
1c020 6e 63 70 5f 74 6f 75 70 70 65 72 28 6f 75 74 2c 20 76 6e 61 6d 65 5b 63 68 69 5d 29 3b 0a 09 09 ncp_toupper(out,.vname[chi]);...
1c040 09 7d 0a 09 09 7d 0a 09 09 76 6e 61 6d 65 20 2b 3d 20 63 68 6c 3b 0a 09 7d 0a 0a 09 2a 76 6e 61 .}...}...vname.+=.chl;..}...*vna
1c060 6d 65 20 3d 20 30 3b 0a 09 2a 76 6c 65 6e 20 3d 20 76 6e 61 6d 65 20 2d 20 76 6e 61 6d 65 5f 73 me.=.0;..*vlen.=.vname.-.vname_s
1c080 74 61 72 74 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 5f 76 6f 6c tart;..return.0;.}..int.ncp__vol
1c0a0 32 69 6f 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 75 2io(struct.ncp_server.*server,.u
1c0c0 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 69 6e 61 6d 65 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e nsigned.char.*iname,.unsigned.in
1c0e0 74 20 2a 69 6c 65 6e 2c 0a 09 09 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a t.*ilen,...const.unsigned.char.*
1c100 76 6e 61 6d 65 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 76 6c 65 6e 2c 20 69 6e 74 20 63 63 vname,.unsigned.int.vlen,.int.cc
1c120 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 6c 73 5f 74 61 62 6c 65 20 2a 69 6e 20 3d 20 73 65 72 76 ).{..struct.nls_table.*in.=.serv
1c140 65 72 2d 3e 6e 6c 73 5f 76 6f 6c 3b 0a 09 73 74 72 75 63 74 20 6e 6c 73 5f 74 61 62 6c 65 20 2a er->nls_vol;..struct.nls_table.*
1c160 6f 75 74 20 3d 20 73 65 72 76 65 72 2d 3e 6e 6c 73 5f 69 6f 3b 0a 09 63 6f 6e 73 74 20 75 6e 73 out.=.server->nls_io;..const.uns
1c180 69 67 6e 65 64 20 63 68 61 72 20 2a 76 6e 61 6d 65 5f 65 6e 64 3b 0a 09 75 6e 73 69 67 6e 65 64 igned.char.*vname_end;..unsigned
1c1a0 20 63 68 61 72 20 2a 69 6e 61 6d 65 5f 73 74 61 72 74 3b 0a 09 75 6e 73 69 67 6e 65 64 20 63 68 .char.*iname_start;..unsigned.ch
1c1c0 61 72 20 2a 69 6e 61 6d 65 5f 65 6e 64 3b 0a 09 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 76 ar.*iname_end;..unsigned.char.*v
1c1e0 6e 61 6d 65 5f 63 63 3b 0a 09 69 6e 74 20 65 72 72 3b 0a 0a 09 76 6e 61 6d 65 5f 63 63 20 3d 20 name_cc;..int.err;...vname_cc.=.
1c200 4e 55 4c 4c 3b 0a 0a 09 69 66 20 28 63 63 29 20 7b 0a 09 09 69 6e 74 20 69 3b 0a 0a 09 09 2f 2a NULL;...if.(cc).{...int.i;..../*
1c220 20 74 68 69 73 20 69 73 20 77 72 6f 6e 67 21 20 2a 2f 0a 09 09 76 6e 61 6d 65 5f 63 63 20 3d 20 .this.is.wrong!.*/...vname_cc.=.
1c240 6b 6d 61 6c 6c 6f 63 28 76 6c 65 6e 2c 20 47 46 50 5f 4b 45 52 4e 45 4c 29 3b 0a 09 09 69 66 20 kmalloc(vlen,.GFP_KERNEL);...if.
1c260 28 21 76 6e 61 6d 65 5f 63 63 29 0a 09 09 09 72 65 74 75 72 6e 20 2d 45 4e 4f 4d 45 4d 3b 0a 09 (!vname_cc)....return.-ENOMEM;..
1c280 09 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 76 6c 65 6e 3b 20 69 2b 2b 29 0a 09 09 09 76 .for.(i.=.0;.i.<.vlen;.i++)....v
1c2a0 6e 61 6d 65 5f 63 63 5b 69 5d 20 3d 20 6e 63 70 5f 74 6f 6c 6f 77 65 72 28 69 6e 2c 20 76 6e 61 name_cc[i].=.ncp_tolower(in,.vna
1c2c0 6d 65 5b 69 5d 29 3b 0a 09 09 76 6e 61 6d 65 20 3d 20 76 6e 61 6d 65 5f 63 63 3b 0a 09 7d 0a 0a me[i]);...vname.=.vname_cc;..}..
1c2e0 09 69 6e 61 6d 65 5f 73 74 61 72 74 20 3d 20 69 6e 61 6d 65 3b 0a 09 69 6e 61 6d 65 5f 65 6e 64 .iname_start.=.iname;..iname_end
1c300 20 3d 20 69 6e 61 6d 65 20 2b 20 2a 69 6c 65 6e 20 2d 20 31 3b 0a 09 76 6e 61 6d 65 5f 65 6e 64 .=.iname.+.*ilen.-.1;..vname_end
1c320 20 3d 20 76 6e 61 6d 65 20 2b 20 76 6c 65 6e 3b 0a 0a 09 77 68 69 6c 65 20 28 76 6e 61 6d 65 20 .=.vname.+.vlen;...while.(vname.
1c340 3c 20 76 6e 61 6d 65 5f 65 6e 64 29 20 7b 0a 09 09 77 63 68 61 72 5f 74 20 65 63 3b 0a 09 09 69 <.vname_end).{...wchar_t.ec;...i
1c360 6e 74 20 63 68 6c 3b 0a 0a 09 09 69 66 20 28 20 28 63 68 6c 20 3d 20 69 6e 2d 3e 63 68 61 72 32 nt.chl;....if.(.(chl.=.in->char2
1c380 75 6e 69 28 76 6e 61 6d 65 2c 20 76 6e 61 6d 65 5f 65 6e 64 20 2d 20 76 6e 61 6d 65 2c 20 26 65 uni(vname,.vname_end.-.vname,.&e
1c3a0 63 29 29 20 3c 20 30 29 20 7b 0a 09 09 09 65 72 72 20 3d 20 63 68 6c 3b 0a 09 09 09 67 6f 74 6f c)).<.0).{....err.=.chl;....goto
1c3c0 20 71 75 69 74 3b 0a 09 09 7d 0a 09 09 76 6e 61 6d 65 20 2b 3d 20 63 68 6c 3b 0a 0a 09 09 2f 2a .quit;...}...vname.+=.chl;..../*
1c3e0 20 75 6e 69 74 6f 6c 6f 77 65 72 20 73 68 6f 75 6c 64 20 62 65 20 68 65 72 65 21 20 2a 2f 0a 0a .unitolower.should.be.here!.*/..
1c400 09 09 69 66 20 28 4e 43 50 5f 49 53 5f 46 4c 41 47 28 73 65 72 76 65 72 2c 20 4e 43 50 5f 46 4c ..if.(NCP_IS_FLAG(server,.NCP_FL
1c420 41 47 5f 55 54 46 38 29 29 20 7b 0a 09 09 09 69 6e 74 20 6b 3b 0a 0a 09 09 09 6b 20 3d 20 75 74 AG_UTF8)).{....int.k;.....k.=.ut
1c440 66 33 32 5f 74 6f 5f 75 74 66 38 28 65 63 2c 20 69 6e 61 6d 65 2c 20 69 6e 61 6d 65 5f 65 6e 64 f32_to_utf8(ec,.iname,.iname_end
1c460 20 2d 20 69 6e 61 6d 65 29 3b 0a 09 09 09 69 66 20 28 6b 20 3c 20 30 29 20 7b 0a 09 09 09 09 65 .-.iname);....if.(k.<.0).{.....e
1c480 72 72 20 3d 20 2d 45 4e 41 4d 45 54 4f 4f 4c 4f 4e 47 3b 0a 09 09 09 09 67 6f 74 6f 20 71 75 69 rr.=.-ENAMETOOLONG;.....goto.qui
1c4a0 74 3b 0a 09 09 09 7d 0a 09 09 09 69 6e 61 6d 65 20 2b 3d 20 6b 3b 0a 09 09 7d 20 65 6c 73 65 20 t;....}....iname.+=.k;...}.else.
1c4c0 7b 0a 09 09 09 69 66 20 28 20 28 63 68 6c 20 3d 20 6f 75 74 2d 3e 75 6e 69 32 63 68 61 72 28 65 {....if.(.(chl.=.out->uni2char(e
1c4e0 63 2c 20 69 6e 61 6d 65 2c 20 69 6e 61 6d 65 5f 65 6e 64 20 2d 20 69 6e 61 6d 65 29 29 20 3e 3d c,.iname,.iname_end.-.iname)).>=
1c500 20 30 29 20 7b 0a 09 09 09 09 69 6e 61 6d 65 20 2b 3d 20 63 68 6c 3b 0a 09 09 09 7d 20 65 6c 73 .0).{.....iname.+=.chl;....}.els
1c520 65 20 7b 0a 09 09 09 09 69 6e 74 20 6b 3b 0a 0a 09 09 09 09 69 66 20 28 69 6e 61 6d 65 5f 65 6e e.{.....int.k;......if.(iname_en
1c540 64 20 2d 20 69 6e 61 6d 65 20 3c 20 35 29 20 7b 0a 09 09 09 09 09 65 72 72 20 3d 20 2d 45 4e 41 d.-.iname.<.5).{......err.=.-ENA
1c560 4d 45 54 4f 4f 4c 4f 4e 47 3b 0a 09 09 09 09 09 67 6f 74 6f 20 71 75 69 74 3b 0a 09 09 09 09 7d METOOLONG;......goto.quit;.....}
1c580 0a 09 09 09 09 2a 69 6e 61 6d 65 20 3d 20 4e 43 50 5f 45 53 43 3b 0a 09 09 09 09 66 6f 72 20 28 .....*iname.=.NCP_ESC;.....for.(
1c5a0 6b 20 3d 20 34 3b 20 6b 20 3e 20 30 3b 20 6b 2d 2d 29 20 7b 0a 09 09 09 09 09 75 6e 73 69 67 6e k.=.4;.k.>.0;.k--).{......unsign
1c5c0 65 64 20 63 68 61 72 20 76 3b 0a 09 09 09 09 09 0a 09 09 09 09 09 76 20 3d 20 28 65 63 20 26 20 ed.char.v;............v.=.(ec.&.
1c5e0 30 78 46 29 20 2b 20 27 30 27 3b 0a 09 09 09 09 09 69 66 20 28 76 20 3e 20 27 39 27 29 20 7b 0a 0xF).+.'0';......if.(v.>.'9').{.
1c600 09 09 09 09 09 09 76 20 2b 3d 20 27 41 27 20 2d 20 27 39 27 20 2d 20 31 3b 0a 09 09 09 09 09 7d ......v.+=.'A'.-.'9'.-.1;......}
1c620 0a 09 09 09 09 09 69 6e 61 6d 65 5b 6b 5d 20 3d 20 76 3b 0a 09 09 09 09 09 65 63 20 3e 3e 3d 20 ......iname[k].=.v;......ec.>>=.
1c640 34 3b 0a 09 09 09 09 7d 0a 09 09 09 09 69 6e 61 6d 65 20 2b 3d 20 35 3b 0a 09 09 09 7d 0a 09 09 4;.....}.....iname.+=.5;....}...
1c660 7d 0a 09 7d 0a 0a 09 2a 69 6e 61 6d 65 20 3d 20 30 3b 0a 09 2a 69 6c 65 6e 20 3d 20 69 6e 61 6d }..}...*iname.=.0;..*ilen.=.inam
1c680 65 20 2d 20 69 6e 61 6d 65 5f 73 74 61 72 74 3b 0a 09 65 72 72 20 3d 20 30 3b 0a 71 75 69 74 3a e.-.iname_start;..err.=.0;.quit:
1c6a0 3b 0a 09 69 66 20 28 63 63 29 0a 09 09 6b 66 72 65 65 28 76 6e 61 6d 65 5f 63 63 29 3b 0a 09 72 ;..if.(cc)...kfree(vname_cc);..r
1c6c0 65 74 75 72 6e 20 65 72 72 3b 0a 7d 0a 0a 23 65 6c 73 65 0a 0a 69 6e 74 0a 6e 63 70 5f 5f 69 6f eturn.err;.}..#else..int.ncp__io
1c6e0 32 76 6f 6c 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 76 6e 61 6d 65 2c 20 75 6e 73 69 67 2vol(unsigned.char.*vname,.unsig
1c700 6e 65 64 20 69 6e 74 20 2a 76 6c 65 6e 2c 0a 09 09 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 ned.int.*vlen,...const.unsigned.
1c720 63 68 61 72 20 2a 69 6e 61 6d 65 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 69 6c 65 6e 2c 20 char.*iname,.unsigned.int.ilen,.
1c740 69 6e 74 20 63 63 29 0a 7b 0a 09 69 6e 74 20 69 3b 0a 0a 09 69 66 20 28 2a 76 6c 65 6e 20 3c 3d int.cc).{..int.i;...if.(*vlen.<=
1c760 20 69 6c 65 6e 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 4e 41 4d 45 54 4f 4f 4c 4f 4e 47 3b 0a 0a .ilen)...return.-ENAMETOOLONG;..
1c780 09 69 66 20 28 63 63 29 0a 09 09 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 69 6c 65 6e 3b .if.(cc)...for.(i.=.0;.i.<.ilen;
1c7a0 20 69 2b 2b 29 20 7b 0a 09 09 09 2a 76 6e 61 6d 65 20 3d 20 74 6f 75 70 70 65 72 28 2a 69 6e 61 .i++).{....*vname.=.toupper(*ina
1c7c0 6d 65 29 3b 0a 09 09 09 76 6e 61 6d 65 2b 2b 3b 0a 09 09 09 69 6e 61 6d 65 2b 2b 3b 0a 09 09 7d me);....vname++;....iname++;...}
1c7e0 0a 09 65 6c 73 65 20 7b 0a 09 09 6d 65 6d 6d 6f 76 65 28 76 6e 61 6d 65 2c 20 69 6e 61 6d 65 2c ..else.{...memmove(vname,.iname,
1c800 20 69 6c 65 6e 29 3b 0a 09 09 76 6e 61 6d 65 20 2b 3d 20 69 6c 65 6e 3b 0a 09 7d 0a 0a 09 2a 76 .ilen);...vname.+=.ilen;..}...*v
1c820 6c 65 6e 20 3d 20 69 6c 65 6e 3b 0a 09 2a 76 6e 61 6d 65 20 3d 20 30 3b 0a 09 72 65 74 75 72 6e len.=.ilen;..*vname.=.0;..return
1c840 20 30 3b 0a 7d 0a 0a 69 6e 74 0a 6e 63 70 5f 5f 76 6f 6c 32 69 6f 28 75 6e 73 69 67 6e 65 64 20 .0;.}..int.ncp__vol2io(unsigned.
1c860 63 68 61 72 20 2a 69 6e 61 6d 65 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 2a 69 6c 65 6e 2c char.*iname,.unsigned.int.*ilen,
1c880 0a 09 09 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 76 6e 61 6d 65 2c 20 75 ...const.unsigned.char.*vname,.u
1c8a0 6e 73 69 67 6e 65 64 20 69 6e 74 20 76 6c 65 6e 2c 20 69 6e 74 20 63 63 29 0a 7b 0a 09 69 6e 74 nsigned.int.vlen,.int.cc).{..int
1c8c0 20 69 3b 0a 0a 09 69 66 20 28 2a 69 6c 65 6e 20 3c 3d 20 76 6c 65 6e 29 0a 09 09 72 65 74 75 72 .i;...if.(*ilen.<=.vlen)...retur
1c8e0 6e 20 2d 45 4e 41 4d 45 54 4f 4f 4c 4f 4e 47 3b 0a 0a 09 69 66 20 28 63 63 29 0a 09 09 66 6f 72 n.-ENAMETOOLONG;...if.(cc)...for
1c900 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 76 6c 65 6e 3b 20 69 2b 2b 29 20 7b 0a 09 09 09 2a 69 6e .(i.=.0;.i.<.vlen;.i++).{....*in
1c920 61 6d 65 20 3d 20 74 6f 6c 6f 77 65 72 28 2a 76 6e 61 6d 65 29 3b 0a 09 09 09 69 6e 61 6d 65 2b ame.=.tolower(*vname);....iname+
1c940 2b 3b 0a 09 09 09 76 6e 61 6d 65 2b 2b 3b 0a 09 09 7d 0a 09 65 6c 73 65 20 7b 0a 09 09 6d 65 6d +;....vname++;...}..else.{...mem
1c960 6d 6f 76 65 28 69 6e 61 6d 65 2c 20 76 6e 61 6d 65 2c 20 76 6c 65 6e 29 3b 0a 09 09 69 6e 61 6d move(iname,.vname,.vlen);...inam
1c980 65 20 2b 3d 20 76 6c 65 6e 3b 0a 09 7d 0a 0a 09 2a 69 6c 65 6e 20 3d 20 76 6c 65 6e 3b 0a 09 2a e.+=.vlen;..}...*ilen.=.vlen;..*
1c9a0 69 6e 61 6d 65 20 3d 20 30 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 23 65 6e 64 69 66 0a iname.=.0;..return.0;.}..#endif.
1c9c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c9e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ca00 6e 63 70 66 73 2f 6e 63 70 6c 69 62 5f 6b 65 72 6e 65 6c 2e 68 00 00 00 00 00 00 00 00 00 00 00 ncpfs/ncplib_kernel.h...........
1ca20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ca40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ca60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 ....0000644.0001750.0001750.0000
1ca80 30 30 31 35 34 32 36 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 34 31 35 36 00 20 30 00 00 00 0015426.13023323142.014156..0...
1caa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cb00 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...kubax..................
1cb20 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........kubax..................
1cb40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cb60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cb80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cbc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cbe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cc00 2f 2a 0a 20 2a 20 20 6e 63 70 6c 69 62 5f 6b 65 72 6e 65 6c 2e 68 0a 20 2a 0a 20 2a 20 20 43 6f /*..*..ncplib_kernel.h..*..*..Co
1cc20 70 79 72 69 67 68 74 20 28 43 29 20 31 39 39 35 2c 20 31 39 39 36 20 62 79 20 56 6f 6c 6b 65 72 pyright.(C).1995,.1996.by.Volker
1cc40 20 4c 65 6e 64 65 63 6b 65 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 66 6f 72 20 62 69 67 20 65 .Lendecke..*..Modified.for.big.e
1cc60 6e 64 69 61 6e 20 62 79 20 4a 2e 46 2e 20 43 68 61 64 69 6d 61 20 61 6e 64 20 44 61 76 69 64 20 ndian.by.J.F..Chadima.and.David.
1cc80 53 2e 20 4d 69 6c 6c 65 72 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 37 20 50 65 74 65 S..Miller..*..Modified.1997.Pete
1cca0 72 20 57 61 6c 74 65 6e 62 65 72 67 2c 20 42 69 6c 6c 20 48 61 77 65 73 2c 20 44 61 76 69 64 20 r.Waltenberg,.Bill.Hawes,.David.
1ccc0 57 6f 6f 64 68 6f 75 73 65 20 66 6f 72 20 32 2e 31 20 64 63 61 63 68 65 0a 20 2a 20 20 4d 6f 64 Woodhouse.for.2.1.dcache..*..Mod
1cce0 69 66 69 65 64 20 31 39 39 38 2c 20 31 39 39 39 20 57 6f 6c 66 72 61 6d 20 50 69 65 6e 6b 6f 73 ified.1998,.1999.Wolfram.Pienkos
1cd00 73 20 66 6f 72 20 4e 4c 53 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 39 20 57 6f 6c 66 s.for.NLS..*..Modified.1999.Wolf
1cd20 72 61 6d 20 50 69 65 6e 6b 6f 73 73 20 66 6f 72 20 64 69 72 65 63 74 6f 72 79 20 63 61 63 68 69 ram.Pienkoss.for.directory.cachi
1cd40 6e 67 0a 20 2a 0a 20 2a 2f 0a 0a 23 69 66 6e 64 65 66 20 5f 4e 43 50 4c 49 42 5f 48 0a 23 64 65 ng..*..*/..#ifndef._NCPLIB_H.#de
1cd60 66 69 6e 65 20 5f 4e 43 50 4c 49 42 5f 48 0a 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 fine._NCPLIB_H...#include.<linux
1cd80 2f 66 73 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 74 79 70 65 73 2e 68 3e 0a /fs.h>.#include.<linux/types.h>.
1cda0 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 65 72 72 6e 6f 2e 68 3e 0a 23 69 6e 63 6c 75 64 #include.<linux/errno.h>.#includ
1cdc0 65 20 3c 6c 69 6e 75 78 2f 73 6c 61 62 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 e.<linux/slab.h>.#include.<linux
1cde0 2f 73 74 61 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 66 63 6e 74 6c 2e 68 /stat.h>.#include.<linux/fcntl.h
1ce00 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 70 61 67 65 6d 61 70 2e 68 3e 0a 0a 23 69 >.#include.<linux/pagemap.h>..#i
1ce20 6e 63 6c 75 64 65 20 3c 61 73 6d 2f 75 61 63 63 65 73 73 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 nclude.<asm/uaccess.h>.#include.
1ce40 3c 61 73 6d 2f 62 79 74 65 6f 72 64 65 72 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 61 73 6d 2f <asm/byteorder.h>.#include.<asm/
1ce60 75 6e 61 6c 69 67 6e 65 64 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 61 73 6d 2f 73 74 72 69 6e unaligned.h>.#include.<asm/strin
1ce80 67 2e 68 3e 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 4c 53 0a 23 69 g.h>..#ifdef.CONFIG_NCPFS_NLS.#i
1cea0 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6e 6c 73 2e 68 3e 0a 23 65 6c 73 65 0a 23 69 6e 63 6c nclude.<linux/nls.h>.#else.#incl
1cec0 75 64 65 20 3c 6c 69 6e 75 78 2f 63 74 79 70 65 2e 68 3e 0a 23 65 6e 64 69 66 20 2f 2a 20 43 4f ude.<linux/ctype.h>.#endif./*.CO
1cee0 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 4c 53 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 4d NFIG_NCPFS_NLS.*/..#define.NCP_M
1cf00 49 4e 5f 53 59 4d 4c 49 4e 4b 5f 53 49 5a 45 09 38 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 4d 41 IN_SYMLINK_SIZE.8.#define.NCP_MA
1cf20 58 5f 53 59 4d 4c 49 4e 4b 5f 53 49 5a 45 09 35 31 32 0a 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f X_SYMLINK_SIZE.512..#define.NCP_
1cf40 42 4c 4f 43 4b 5f 53 48 49 46 54 09 09 39 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 42 4c 4f 43 4b BLOCK_SHIFT..9.#define.NCP_BLOCK
1cf60 5f 53 49 5a 45 09 09 28 31 20 3c 3c 20 28 4e 43 50 5f 42 4c 4f 43 4b 5f 53 48 49 46 54 29 29 0a _SIZE..(1.<<.(NCP_BLOCK_SHIFT)).
1cf80 0a 69 6e 74 20 6e 63 70 5f 6e 65 67 6f 74 69 61 74 65 5f 62 75 66 66 65 72 73 69 7a 65 28 73 74 .int.ncp_negotiate_buffersize(st
1cfa0 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 69 6e 74 2c 20 69 6e 74 20 2a 29 3b 0a ruct.ncp_server.*,.int,.int.*);.
1cfc0 69 6e 74 20 6e 63 70 5f 6e 65 67 6f 74 69 61 74 65 5f 73 69 7a 65 5f 61 6e 64 5f 6f 70 74 69 6f int.ncp_negotiate_size_and_optio
1cfe0 6e 73 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 69 6e ns(struct.ncp_server.*server,.in
1d000 74 20 73 69 7a 65 2c 0a 20 20 09 09 09 20 20 69 6e 74 20 6f 70 74 69 6f 6e 73 2c 20 69 6e 74 20 t.size,........int.options,.int.
1d020 2a 72 65 74 5f 73 69 7a 65 2c 20 69 6e 74 20 2a 72 65 74 5f 6f 70 74 69 6f 6e 73 29 3b 0a 0a 69 *ret_size,.int.*ret_options);..i
1d040 6e 74 20 6e 63 70 5f 67 65 74 5f 76 6f 6c 75 6d 65 5f 69 6e 66 6f 5f 77 69 74 68 5f 6e 75 6d 62 nt.ncp_get_volume_info_with_numb
1d060 65 72 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2a 20 73 65 72 76 65 72 2c 20 69 6e er(struct.ncp_server*.server,.in
1d080 74 20 6e 2c 0a 09 09 09 09 20 20 20 20 73 74 72 75 63 74 20 6e 63 70 5f 76 6f 6c 75 6d 65 5f 69 t.n,.........struct.ncp_volume_i
1d0a0 6e 66 6f 20 2a 74 61 72 67 65 74 29 3b 0a 0a 69 6e 74 20 6e 63 70 5f 67 65 74 5f 64 69 72 65 63 nfo.*target);..int.ncp_get_direc
1d0c0 74 6f 72 79 5f 69 6e 66 6f 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2a 20 73 65 72 tory_info(struct.ncp_server*.ser
1d0e0 76 65 72 2c 20 5f 5f 75 38 20 64 69 72 68 61 6e 64 6c 65 2c 0a 09 09 09 20 20 20 73 74 72 75 63 ver,.__u8.dirhandle,.......struc
1d100 74 20 6e 63 70 5f 76 6f 6c 75 6d 65 5f 69 6e 66 6f 2a 20 74 61 72 67 65 74 29 3b 0a 0a 69 6e 74 t.ncp_volume_info*.target);..int
1d120 20 6e 63 70 5f 63 6c 6f 73 65 5f 66 69 6c 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 .ncp_close_file(struct.ncp_serve
1d140 72 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 29 3b 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e r.*,.const.char.*);.static.inlin
1d160 65 20 69 6e 74 20 6e 63 70 5f 72 65 61 64 5f 62 6f 75 6e 63 65 5f 73 69 7a 65 28 5f 5f 75 33 32 e.int.ncp_read_bounce_size(__u32
1d180 20 73 69 7a 65 29 20 7b 0a 09 72 65 74 75 72 6e 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 6e .size).{..return.sizeof(struct.n
1d1a0 63 70 5f 72 65 70 6c 79 5f 68 65 61 64 65 72 29 20 2b 20 32 20 2b 20 32 20 2b 20 73 69 7a 65 20 cp_reply_header).+.2.+.2.+.size.
1d1c0 2b 20 38 3b 0a 7d 3b 0a 69 6e 74 20 6e 63 70 5f 72 65 61 64 5f 62 6f 75 6e 63 65 28 73 74 72 75 +.8;.};.int.ncp_read_bounce(stru
1d1e0 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c 20 5f ct.ncp_server.*,.const.char.*,._
1d200 5f 75 33 32 2c 20 5f 5f 75 31 36 2c 20 0a 09 09 73 74 72 75 63 74 20 69 6f 76 5f 69 74 65 72 20 _u32,.__u16,....struct.iov_iter.
1d220 2a 2c 20 69 6e 74 20 2a 2c 20 76 6f 69 64 20 2a 62 6f 75 6e 63 65 2c 20 5f 5f 75 33 32 20 62 6f *,.int.*,.void.*bounce,.__u32.bo
1d240 75 6e 63 65 6c 65 6e 29 3b 0a 69 6e 74 20 6e 63 70 5f 72 65 61 64 5f 6b 65 72 6e 65 6c 28 73 74 uncelen);.int.ncp_read_kernel(st
1d260 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c ruct.ncp_server.*,.const.char.*,
1d280 20 5f 5f 75 33 32 2c 20 5f 5f 75 31 36 2c 20 0a 09 09 63 68 61 72 20 2a 2c 20 69 6e 74 20 2a 29 .__u32,.__u16,....char.*,.int.*)
1d2a0 3b 0a 69 6e 74 20 6e 63 70 5f 77 72 69 74 65 5f 6b 65 72 6e 65 6c 28 73 74 72 75 63 74 20 6e 63 ;.int.ncp_write_kernel(struct.nc
1d2c0 70 5f 73 65 72 76 65 72 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c 20 5f 5f 75 33 32 2c p_server.*,.const.char.*,.__u32,
1d2e0 20 5f 5f 75 31 36 2c 0a 09 09 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c 20 69 6e 74 20 2a 29 3b 0a .__u16,...const.char.*,.int.*);.
1d300 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 20 6e 63 70 5f 69 6e 6f 64 65 5f 63 6c .static.inline.void.ncp_inode_cl
1d320 6f 73 65 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 29 20 7b 0a 09 61 74 6f 6d ose(struct.inode.*inode).{..atom
1d340 69 63 5f 64 65 63 28 26 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6f 70 65 6e 65 64 ic_dec(&NCP_FINFO(inode)->opened
1d360 29 3b 0a 7d 0a 0a 76 6f 69 64 20 6e 63 70 5f 65 78 74 72 61 63 74 5f 66 69 6c 65 5f 69 6e 66 6f );.}..void.ncp_extract_file_info
1d380 28 63 6f 6e 73 74 20 76 6f 69 64 2a 20 73 72 63 2c 20 73 74 72 75 63 74 20 6e 77 5f 69 6e 66 6f (const.void*.src,.struct.nw_info
1d3a0 5f 73 74 72 75 63 74 2a 20 74 61 72 67 65 74 29 3b 0a 69 6e 74 20 6e 63 70 5f 6f 62 74 61 69 6e _struct*.target);.int.ncp_obtain
1d3c0 5f 69 6e 66 6f 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c _info(struct.ncp_server.*server,
1d3e0 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c 0a 09 .struct.inode.*,.const.char.*,..
1d400 09 73 74 72 75 63 74 20 6e 77 5f 69 6e 66 6f 5f 73 74 72 75 63 74 20 2a 74 61 72 67 65 74 29 3b .struct.nw_info_struct.*target);
1d420 0a 69 6e 74 20 6e 63 70 5f 6f 62 74 61 69 6e 5f 6e 66 73 5f 69 6e 66 6f 28 73 74 72 75 63 74 20 .int.ncp_obtain_nfs_info(struct.
1d440 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 73 74 72 75 63 74 20 6e 77 5f 69 6e ncp_server.*server,.struct.nw_in
1d460 66 6f 5f 73 74 72 75 63 74 20 2a 74 61 72 67 65 74 29 3b 0a 69 6e 74 20 6e 63 70 5f 75 70 64 61 fo_struct.*target);.int.ncp_upda
1d480 74 65 5f 6b 6e 6f 77 6e 5f 6e 61 6d 65 73 70 61 63 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 te_known_namespace(struct.ncp_se
1d4a0 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 5f 5f 75 38 20 76 6f 6c 75 6d 65 2c 20 69 6e 74 20 2a rver.*server,.__u8.volume,.int.*
1d4c0 72 65 74 5f 6e 73 29 3b 0a 69 6e 74 20 6e 63 70 5f 67 65 74 5f 76 6f 6c 75 6d 65 5f 72 6f 6f 74 ret_ns);.int.ncp_get_volume_root
1d4e0 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 63 6f 6e 73 (struct.ncp_server.*server,.cons
1d500 74 20 63 68 61 72 20 2a 76 6f 6c 6e 61 6d 65 2c 0a 09 09 09 5f 5f 75 33 32 20 2a 76 6f 6c 75 6d t.char.*volname,....__u32.*volum
1d520 65 2c 20 5f 5f 6c 65 33 32 20 2a 64 69 72 65 6e 74 2c 20 5f 5f 6c 65 33 32 20 2a 64 6f 73 64 69 e,.__le32.*dirent,.__le32.*dosdi
1d540 72 65 6e 74 29 3b 0a 69 6e 74 20 6e 63 70 5f 6c 6f 6f 6b 75 70 5f 76 6f 6c 75 6d 65 28 73 74 72 rent);.int.ncp_lookup_volume(str
1d560 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c 20 uct.ncp_server.*,.const.char.*,.
1d580 73 74 72 75 63 74 20 6e 77 5f 69 6e 66 6f 5f 73 74 72 75 63 74 20 2a 29 3b 0a 69 6e 74 20 6e 63 struct.nw_info_struct.*);.int.nc
1d5a0 70 5f 6d 6f 64 69 66 79 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 5f 64 6f 73 5f 69 6e 66 6f p_modify_file_or_subdir_dos_info
1d5c0 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 73 74 72 75 63 74 20 69 6e 6f (struct.ncp_server.*,.struct.ino
1d5e0 64 65 20 2a 2c 0a 09 20 5f 5f 6c 65 33 32 2c 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 6e 77 5f de.*,...__le32,.const.struct.nw_
1d600 6d 6f 64 69 66 79 5f 64 6f 73 5f 69 6e 66 6f 20 2a 69 6e 66 6f 29 3b 0a 69 6e 74 20 6e 63 70 5f modify_dos_info.*info);.int.ncp_
1d620 6d 6f 64 69 66 79 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 5f 64 6f 73 5f 69 6e 66 6f 5f 70 modify_file_or_subdir_dos_info_p
1d640 61 74 68 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 73 74 72 75 63 74 20 ath(struct.ncp_server.*,.struct.
1d660 69 6e 6f 64 65 20 2a 2c 0a 09 20 63 6f 6e 73 74 20 63 68 61 72 2a 20 70 61 74 68 2c 20 5f 5f 6c inode.*,...const.char*.path,.__l
1d680 65 33 32 2c 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 6e 77 5f 6d 6f 64 69 66 79 5f 64 6f 73 5f e32,.const.struct.nw_modify_dos_
1d6a0 69 6e 66 6f 20 2a 69 6e 66 6f 29 3b 0a 69 6e 74 20 6e 63 70 5f 6d 6f 64 69 66 79 5f 6e 66 73 5f info.*info);.int.ncp_modify_nfs_
1d6c0 69 6e 66 6f 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 5f 5f 75 38 20 76 info(struct.ncp_server.*,.__u8.v
1d6e0 6f 6c 6e 75 6d 2c 20 5f 5f 6c 65 33 32 20 64 69 72 65 6e 74 2c 0a 09 09 09 5f 5f 75 33 32 20 6d olnum,.__le32.dirent,....__u32.m
1d700 6f 64 65 2c 20 5f 5f 75 33 32 20 72 64 65 76 29 3b 0a 0a 69 6e 74 20 6e 63 70 5f 64 65 6c 5f 66 ode,.__u32.rdev);..int.ncp_del_f
1d720 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 32 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 ile_or_subdir2(struct.ncp_server
1d740 20 2a 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 2a 29 3b 0a 69 6e 74 20 6e 63 70 5f 64 65 6c .*,.struct.dentry*);.int.ncp_del
1d760 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 _file_or_subdir(struct.ncp_serve
1d780 72 20 2a 2c 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 r.*,.struct.inode.*,.const.char.
1d7a0 2a 29 3b 0a 69 6e 74 20 6e 63 70 5f 6f 70 65 6e 5f 63 72 65 61 74 65 5f 66 69 6c 65 5f 6f 72 5f *);.int.ncp_open_create_file_or_
1d7c0 73 75 62 64 69 72 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 73 74 72 75 subdir(struct.ncp_server.*,.stru
1d7e0 63 74 20 69 6e 6f 64 65 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c 0a 09 09 09 09 69 6e ct.inode.*,.const.char.*,.....in
1d800 74 2c 20 5f 5f 6c 65 33 32 2c 20 5f 5f 6c 65 31 36 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 65 6e t,.__le32,.__le16,.struct.ncp_en
1d820 74 72 79 5f 69 6e 66 6f 20 2a 29 3b 0a 0a 69 6e 74 20 6e 63 70 5f 69 6e 69 74 69 61 6c 69 7a 65 try_info.*);..int.ncp_initialize
1d840 5f 73 65 61 72 63 68 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 73 74 72 _search(struct.ncp_server.*,.str
1d860 75 63 74 20 69 6e 6f 64 65 20 2a 2c 0a 09 09 20 20 20 20 20 20 73 74 72 75 63 74 20 6e 77 5f 73 uct.inode.*,.........struct.nw_s
1d880 65 61 72 63 68 5f 73 65 71 75 65 6e 63 65 20 2a 74 61 72 67 65 74 29 3b 0a 69 6e 74 20 6e 63 70 earch_sequence.*target);.int.ncp
1d8a0 5f 73 65 61 72 63 68 5f 66 6f 72 5f 66 69 6c 65 73 65 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 _search_for_fileset(struct.ncp_s
1d8c0 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 0a 09 09 09 20 20 20 73 74 72 75 63 74 20 6e 77 5f 73 erver.*server,.......struct.nw_s
1d8e0 65 61 72 63 68 5f 73 65 71 75 65 6e 63 65 20 2a 73 65 71 2c 0a 09 09 09 20 20 20 69 6e 74 2a 20 earch_sequence.*seq,.......int*.
1d900 6d 6f 72 65 2c 20 69 6e 74 2a 20 63 6e 74 2c 0a 09 09 09 20 20 20 63 68 61 72 2a 20 62 75 66 66 more,.int*.cnt,.......char*.buff
1d920 65 72 2c 20 73 69 7a 65 5f 74 20 62 75 66 73 69 7a 65 2c 0a 09 09 09 20 20 20 63 68 61 72 2a 2a er,.size_t.bufsize,.......char**
1d940 20 72 62 75 66 2c 20 73 69 7a 65 5f 74 2a 20 72 73 69 7a 65 29 3b 0a 0a 69 6e 74 20 6e 63 70 5f .rbuf,.size_t*.rsize);..int.ncp_
1d960 72 65 6e 5f 6f 72 5f 6d 6f 76 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 73 74 72 75 63 74 ren_or_mov_file_or_subdir(struct
1d980 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 0a 09 09 09 20 20 20 20 20 20 73 74 .ncp_server.*server,..........st
1d9a0 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c 20 73 74 72 75 ruct.inode.*,.const.char.*,.stru
1d9c0 63 74 20 69 6e 6f 64 65 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 29 3b 0a 0a 0a 69 6e 74 ct.inode.*,.const.char.*);...int
1d9e0 0a 6e 63 70 5f 4c 6f 67 50 68 79 73 69 63 61 6c 52 65 63 6f 72 64 28 73 74 72 75 63 74 20 6e 63 .ncp_LogPhysicalRecord(struct.nc
1da00 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 0a 09 09 20 20 20 20 20 20 63 6f 6e 73 74 20 p_server.*server,.........const.
1da20 63 68 61 72 20 2a 66 69 6c 65 5f 69 64 2c 20 5f 5f 75 38 20 6c 6f 63 6b 74 79 70 65 2c 0a 09 09 char.*file_id,.__u8.locktype,...
1da40 20 20 20 20 20 20 5f 5f 75 33 32 20 6f 66 66 73 65 74 2c 20 5f 5f 75 33 32 20 6c 65 6e 67 74 68 ......__u32.offset,.__u32.length
1da60 2c 20 5f 5f 75 31 36 20 74 69 6d 65 6f 75 74 29 3b 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 ,.__u16.timeout);..#ifdef.CONFIG
1da80 5f 4e 43 50 46 53 5f 49 4f 43 54 4c 5f 4c 4f 43 4b 49 4e 47 0a 69 6e 74 0a 6e 63 70 5f 43 6c 65 _NCPFS_IOCTL_LOCKING.int.ncp_Cle
1daa0 61 72 50 68 79 73 69 63 61 6c 52 65 63 6f 72 64 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 arPhysicalRecord(struct.ncp_serv
1dac0 65 72 20 2a 73 65 72 76 65 72 2c 0a 09 09 09 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 69 6c 65 5f er.*server,....const.char.*file_
1dae0 69 64 2c 0a 09 09 09 5f 5f 75 33 32 20 6f 66 66 73 65 74 2c 20 5f 5f 75 33 32 20 6c 65 6e 67 74 id,....__u32.offset,.__u32.lengt
1db00 68 29 3b 0a 23 65 6e 64 69 66 09 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 49 4f 43 54 4c h);.#endif./*.CONFIG_NCPFS_IOCTL
1db20 5f 4c 4f 43 4b 49 4e 47 20 2a 2f 0a 0a 69 6e 74 0a 6e 63 70 5f 6d 6f 75 6e 74 5f 73 75 62 64 69 _LOCKING.*/..int.ncp_mount_subdi
1db40 72 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 5f 5f 75 38 2c 20 5f 5f 75 r(struct.ncp_server.*,.__u8,.__u
1db60 38 2c 20 5f 5f 6c 65 33 32 2c 0a 09 09 20 5f 5f 75 33 32 2a 20 76 6f 6c 75 6d 65 2c 20 5f 5f 6c 8,.__le32,....__u32*.volume,.__l
1db80 65 33 32 2a 20 64 69 72 65 6e 74 2c 20 5f 5f 6c 65 33 32 2a 20 64 6f 73 64 69 72 65 6e 74 29 3b e32*.dirent,.__le32*.dosdirent);
1dba0 0a 69 6e 74 20 6e 63 70 5f 64 69 72 68 61 6e 64 6c 65 5f 61 6c 6c 6f 63 28 73 74 72 75 63 74 20 .int.ncp_dirhandle_alloc(struct.
1dbc0 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 5f 5f 75 38 20 76 6f 6c 2c 20 5f 5f 6c 65 33 32 20 64 ncp_server.*,.__u8.vol,.__le32.d
1dbe0 69 72 65 6e 74 2c 20 5f 5f 75 38 20 2a 64 69 72 68 61 6e 64 6c 65 29 3b 0a 69 6e 74 20 6e 63 70 irent,.__u8.*dirhandle);.int.ncp
1dc00 5f 64 69 72 68 61 6e 64 6c 65 5f 66 72 65 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 _dirhandle_free(struct.ncp_serve
1dc20 72 20 2a 2c 20 5f 5f 75 38 20 64 69 72 68 61 6e 64 6c 65 29 3b 0a 0a 69 6e 74 20 6e 63 70 5f 63 r.*,.__u8.dirhandle);..int.ncp_c
1dc40 72 65 61 74 65 5f 6e 65 77 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 2c 20 73 74 72 reate_new(struct.inode.*dir,.str
1dc60 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 uct.dentry.*dentry,.............
1dc80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6d 6f 64 65 5f 74 20 6d 6f 64 65 2c 20 64 65 76 5f ..............umode_t.mode,.dev_
1dca0 74 20 72 64 65 76 2c 20 5f 5f 6c 65 33 32 20 61 74 74 72 69 62 75 74 65 73 29 3b 0a 0a 73 74 61 t.rdev,.__le32.attributes);..sta
1dcc0 74 69 63 20 69 6e 6c 69 6e 65 20 69 6e 74 20 6e 63 70 5f 69 73 5f 6e 66 73 5f 65 78 74 72 61 73 tic.inline.int.ncp_is_nfs_extras
1dce0 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2a 20 73 65 72 76 65 72 2c 20 75 6e 73 69 (struct.ncp_server*.server,.unsi
1dd00 67 6e 65 64 20 69 6e 74 20 76 6f 6c 6e 75 6d 29 20 7b 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 gned.int.volnum).{.#ifdef.CONFIG
1dd20 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 0a 09 72 65 74 75 72 6e 20 28 73 65 72 76 65 72 2d 3e 6d _NCPFS_NFS_NS..return.(server->m
1dd40 2e 66 6c 61 67 73 20 26 20 4e 43 50 5f 4d 4f 55 4e 54 5f 4e 46 53 5f 45 58 54 52 41 53 29 20 26 .flags.&.NCP_MOUNT_NFS_EXTRAS).&
1dd60 26 0a 09 20 20 20 20 20 20 20 28 73 65 72 76 65 72 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 5b 76 6f &.........(server->name_space[vo
1dd80 6c 6e 75 6d 5d 20 3d 3d 20 4e 57 5f 4e 53 5f 4e 46 53 29 3b 0a 23 65 6c 73 65 0a 09 72 65 74 75 lnum].==.NW_NS_NFS);.#else..retu
1dda0 72 6e 20 30 3b 0a 23 65 6e 64 69 66 0a 7d 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 rn.0;.#endif.}..#ifdef.CONFIG_NC
1ddc0 50 46 53 5f 4e 4c 53 0a 0a 69 6e 74 20 6e 63 70 5f 5f 69 6f 32 76 6f 6c 28 73 74 72 75 63 74 20 PFS_NLS..int.ncp__io2vol(struct.
1dde0 6e 63 70 5f 73 65 72 76 65 72 20 2a 2c 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 2c 20 75 ncp_server.*,.unsigned.char.*,.u
1de00 6e 73 69 67 6e 65 64 20 69 6e 74 20 2a 2c 0a 09 09 09 09 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 nsigned.int.*,.....const.unsigne
1de20 64 20 63 68 61 72 20 2a 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 2c 20 69 6e 74 29 3b 0a 69 6e d.char.*,.unsigned.int,.int);.in
1de40 74 20 6e 63 70 5f 5f 76 6f 6c 32 69 6f 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 t.ncp__vol2io(struct.ncp_server.
1de60 2a 2c 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 *,.unsigned.char.*,.unsigned.int
1de80 20 2a 2c 0a 09 09 09 09 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 2c 20 75 .*,.....const.unsigned.char.*,.u
1dea0 6e 73 69 67 6e 65 64 20 69 6e 74 2c 20 69 6e 74 29 3b 0a 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f nsigned.int,.int);..#define.NCP_
1dec0 45 53 43 09 09 09 27 3a 27 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 49 4f 5f 54 41 42 4c 45 28 73 ESC...':'.#define.NCP_IO_TABLE(s
1dee0 62 29 09 28 4e 43 50 5f 53 42 50 28 73 62 29 2d 3e 6e 6c 73 5f 69 6f 29 0a 23 64 65 66 69 6e 65 b).(NCP_SBP(sb)->nls_io).#define
1df00 20 6e 63 70 5f 74 6f 6c 6f 77 65 72 28 74 2c 20 63 29 09 6e 6c 73 5f 74 6f 6c 6f 77 65 72 28 74 .ncp_tolower(t,.c).nls_tolower(t
1df20 2c 20 63 29 0a 23 64 65 66 69 6e 65 20 6e 63 70 5f 74 6f 75 70 70 65 72 28 74 2c 20 63 29 09 6e ,.c).#define.ncp_toupper(t,.c).n
1df40 6c 73 5f 74 6f 75 70 70 65 72 28 74 2c 20 63 29 0a 23 64 65 66 69 6e 65 20 6e 63 70 5f 73 74 72 ls_toupper(t,.c).#define.ncp_str
1df60 6e 69 63 6d 70 28 74 2c 20 73 31 2c 20 73 32 2c 20 6c 65 6e 29 20 5c 0a 09 6e 6c 73 5f 73 74 72 nicmp(t,.s1,.s2,.len).\..nls_str
1df80 6e 69 63 6d 70 28 74 2c 20 73 31 2c 20 73 32 2c 20 6c 65 6e 29 0a 23 64 65 66 69 6e 65 20 6e 63 nicmp(t,.s1,.s2,.len).#define.nc
1dfa0 70 5f 69 6f 32 76 6f 6c 28 53 2c 6d 2c 69 2c 6e 2c 6b 2c 55 29 09 6e 63 70 5f 5f 69 6f 32 76 6f p_io2vol(S,m,i,n,k,U).ncp__io2vo
1dfc0 6c 28 53 2c 6d 2c 69 2c 6e 2c 6b 2c 55 29 0a 23 64 65 66 69 6e 65 20 6e 63 70 5f 76 6f 6c 32 69 l(S,m,i,n,k,U).#define.ncp_vol2i
1dfe0 6f 28 53 2c 6d 2c 69 2c 6e 2c 6b 2c 55 29 09 6e 63 70 5f 5f 76 6f 6c 32 69 6f 28 53 2c 6d 2c 69 o(S,m,i,n,k,U).ncp__vol2io(S,m,i
1e000 2c 6e 2c 6b 2c 55 29 0a 0a 23 65 6c 73 65 0a 0a 69 6e 74 20 6e 63 70 5f 5f 69 6f 32 76 6f 6c 28 ,n,k,U)..#else..int.ncp__io2vol(
1e020 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 2a 2c unsigned.char.*,.unsigned.int.*,
1e040 0a 09 09 09 09 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 2c 20 75 6e 73 69 .....const.unsigned.char.*,.unsi
1e060 67 6e 65 64 20 69 6e 74 2c 20 69 6e 74 29 3b 0a 69 6e 74 20 6e 63 70 5f 5f 76 6f 6c 32 69 6f 28 gned.int,.int);.int.ncp__vol2io(
1e080 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 2a 2c unsigned.char.*,.unsigned.int.*,
1e0a0 0a 09 09 09 09 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 2c 20 75 6e 73 69 .....const.unsigned.char.*,.unsi
1e0c0 67 6e 65 64 20 69 6e 74 2c 20 69 6e 74 29 3b 0a 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 49 4f 5f gned.int,.int);..#define.NCP_IO_
1e0e0 54 41 42 4c 45 28 73 62 29 09 4e 55 4c 4c 0a 23 64 65 66 69 6e 65 20 6e 63 70 5f 74 6f 6c 6f 77 TABLE(sb).NULL.#define.ncp_tolow
1e100 65 72 28 74 2c 20 63 29 09 74 6f 6c 6f 77 65 72 28 63 29 0a 23 64 65 66 69 6e 65 20 6e 63 70 5f er(t,.c).tolower(c).#define.ncp_
1e120 74 6f 75 70 70 65 72 28 74 2c 20 63 29 09 74 6f 75 70 70 65 72 28 63 29 0a 23 64 65 66 69 6e 65 toupper(t,.c).toupper(c).#define
1e140 20 6e 63 70 5f 69 6f 32 76 6f 6c 28 53 2c 6d 2c 69 2c 6e 2c 6b 2c 55 29 09 6e 63 70 5f 5f 69 6f .ncp_io2vol(S,m,i,n,k,U).ncp__io
1e160 32 76 6f 6c 28 6d 2c 69 2c 6e 2c 6b 2c 55 29 0a 23 64 65 66 69 6e 65 20 6e 63 70 5f 76 6f 6c 32 2vol(m,i,n,k,U).#define.ncp_vol2
1e180 69 6f 28 53 2c 6d 2c 69 2c 6e 2c 6b 2c 55 29 09 6e 63 70 5f 5f 76 6f 6c 32 69 6f 28 6d 2c 69 2c io(S,m,i,n,k,U).ncp__vol2io(m,i,
1e1a0 6e 2c 6b 2c 55 29 0a 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 69 6e 74 20 6e 63 70 5f 73 n,k,U)...static.inline.int.ncp_s
1e1c0 74 72 6e 69 63 6d 70 28 63 6f 6e 73 74 20 73 74 72 75 63 74 20 6e 6c 73 5f 74 61 62 6c 65 20 2a trnicmp(const.struct.nls_table.*
1e1e0 74 2c 0a 09 09 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 73 31 2c 20 63 6f t,...const.unsigned.char.*s1,.co
1e200 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 73 32 2c 20 69 6e 74 20 6c 65 6e 29 0a nst.unsigned.char.*s2,.int.len).
1e220 7b 0a 09 77 68 69 6c 65 20 28 6c 65 6e 2d 2d 29 20 7b 0a 09 09 69 66 20 28 74 6f 6c 6f 77 65 72 {..while.(len--).{...if.(tolower
1e240 28 2a 73 31 2b 2b 29 20 21 3d 20 74 6f 6c 6f 77 65 72 28 2a 73 32 2b 2b 29 29 0a 09 09 09 72 65 (*s1++).!=.tolower(*s2++))....re
1e260 74 75 72 6e 20 31 3b 0a 09 7d 0a 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 23 65 6e 64 69 66 turn.1;..}...return.0;.}..#endif
1e280 20 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 4c 53 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 ./*.CONFIG_NCPFS_NLS.*/..#define
1e2a0 20 4e 43 50 5f 47 45 54 5f 41 47 45 28 64 65 6e 74 72 79 29 09 28 6a 69 66 66 69 65 73 20 2d 20 .NCP_GET_AGE(dentry).(jiffies.-.
1e2c0 28 64 65 6e 74 72 79 29 2d 3e 64 5f 74 69 6d 65 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 4d 41 (dentry)->d_time).#define.NCP_MA
1e2e0 58 5f 41 47 45 28 73 65 72 76 65 72 29 09 61 74 6f 6d 69 63 5f 72 65 61 64 28 26 28 73 65 72 76 X_AGE(server).atomic_read(&(serv
1e300 65 72 29 2d 3e 64 65 6e 74 72 79 5f 74 74 6c 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 54 45 53 er)->dentry_ttl).#define.NCP_TES
1e320 54 5f 41 47 45 28 73 65 72 76 65 72 2c 64 65 6e 74 72 79 29 09 28 4e 43 50 5f 47 45 54 5f 41 47 T_AGE(server,dentry).(NCP_GET_AG
1e340 45 28 64 65 6e 74 72 79 29 20 3c 20 4e 43 50 5f 4d 41 58 5f 41 47 45 28 73 65 72 76 65 72 29 29 E(dentry).<.NCP_MAX_AGE(server))
1e360 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 0a 6e 63 70 5f 61 67 65 5f 64 65 6e ..static.inline.void.ncp_age_den
1e380 74 72 79 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2a 20 73 65 72 76 65 72 2c 20 73 try(struct.ncp_server*.server,.s
1e3a0 74 72 75 63 74 20 64 65 6e 74 72 79 2a 20 64 65 6e 74 72 79 29 0a 7b 0a 09 64 65 6e 74 72 79 2d truct.dentry*.dentry).{..dentry-
1e3c0 3e 64 5f 74 69 6d 65 20 3d 20 6a 69 66 66 69 65 73 20 2d 20 4e 43 50 5f 4d 41 58 5f 41 47 45 28 >d_time.=.jiffies.-.NCP_MAX_AGE(
1e3e0 73 65 72 76 65 72 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 0a 6e server);.}..static.inline.void.n
1e400 63 70 5f 6e 65 77 5f 64 65 6e 74 72 79 28 73 74 72 75 63 74 20 64 65 6e 74 72 79 2a 20 64 65 6e cp_new_dentry(struct.dentry*.den
1e420 74 72 79 29 0a 7b 0a 09 64 65 6e 74 72 79 2d 3e 64 5f 74 69 6d 65 20 3d 20 6a 69 66 66 69 65 73 try).{..dentry->d_time.=.jiffies
1e440 3b 0a 7d 0a 0a 73 74 72 75 63 74 20 6e 63 70 5f 63 61 63 68 65 5f 68 65 61 64 20 7b 0a 09 74 69 ;.}..struct.ncp_cache_head.{..ti
1e460 6d 65 5f 74 09 09 6d 74 69 6d 65 3b 0a 09 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 09 74 69 6d 65 me_t..mtime;..unsigned.long.time
1e480 3b 09 2f 2a 20 63 61 63 68 65 20 61 67 65 20 2a 2f 0a 09 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 ;./*.cache.age.*/..unsigned.long
1e4a0 09 65 6e 64 3b 09 2f 2a 20 6c 61 73 74 20 76 61 6c 69 64 20 66 70 6f 73 20 69 6e 20 63 61 63 68 .end;./*.last.valid.fpos.in.cach
1e4c0 65 20 2a 2f 0a 09 69 6e 74 09 09 65 6f 66 3b 0a 7d 3b 0a 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f e.*/..int..eof;.};..#define.NCP_
1e4e0 44 49 52 43 41 43 48 45 5f 53 49 5a 45 09 28 28 69 6e 74 29 28 50 41 47 45 5f 53 49 5a 45 2f 73 DIRCACHE_SIZE.((int)(PAGE_SIZE/s
1e500 69 7a 65 6f 66 28 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 29 29 29 0a 75 6e 69 6f 6e 20 6e izeof(struct.dentry.*))).union.n
1e520 63 70 5f 64 69 72 5f 63 61 63 68 65 20 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 63 61 63 68 65 cp_dir_cache.{..struct.ncp_cache
1e540 5f 68 65 61 64 09 68 65 61 64 3b 0a 09 73 74 72 75 63 74 20 64 65 6e 74 72 79 09 09 2a 64 65 6e _head.head;..struct.dentry..*den
1e560 74 72 79 5b 4e 43 50 5f 44 49 52 43 41 43 48 45 5f 53 49 5a 45 5d 3b 0a 7d 3b 0a 0a 23 64 65 66 try[NCP_DIRCACHE_SIZE];.};..#def
1e580 69 6e 65 20 4e 43 50 5f 46 49 52 53 54 43 41 43 48 45 5f 53 49 5a 45 09 28 28 69 6e 74 29 28 28 ine.NCP_FIRSTCACHE_SIZE.((int)((
1e5a0 4e 43 50 5f 44 49 52 43 41 43 48 45 5f 53 49 5a 45 20 2a 20 5c 0a 09 73 69 7a 65 6f 66 28 73 74 NCP_DIRCACHE_SIZE.*.\..sizeof(st
1e5c0 72 75 63 74 20 64 65 6e 74 72 79 20 2a 29 20 2d 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 6e ruct.dentry.*).-.sizeof(struct.n
1e5e0 63 70 5f 63 61 63 68 65 5f 68 65 61 64 29 29 20 2f 20 5c 0a 09 73 69 7a 65 6f 66 28 73 74 72 75 cp_cache_head))./.\..sizeof(stru
1e600 63 74 20 64 65 6e 74 72 79 20 2a 29 29 29 0a 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 44 49 52 43 ct.dentry.*)))..#define.NCP_DIRC
1e620 41 43 48 45 5f 53 54 41 52 54 09 28 4e 43 50 5f 44 49 52 43 41 43 48 45 5f 53 49 5a 45 20 2d 20 ACHE_START.(NCP_DIRCACHE_SIZE.-.
1e640 4e 43 50 5f 46 49 52 53 54 43 41 43 48 45 5f 53 49 5a 45 29 0a 0a 73 74 72 75 63 74 20 6e 63 70 NCP_FIRSTCACHE_SIZE)..struct.ncp
1e660 5f 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c 20 7b 0a 09 73 74 72 75 63 74 09 6e 63 70 5f 63 61 63 _cache_control.{..struct.ncp_cac
1e680 68 65 5f 68 65 61 64 09 09 68 65 61 64 3b 0a 09 73 74 72 75 63 74 09 70 61 67 65 09 09 09 2a 70 he_head..head;..struct.page...*p
1e6a0 61 67 65 3b 0a 09 75 6e 69 6f 6e 09 6e 63 70 5f 64 69 72 5f 63 61 63 68 65 09 09 2a 63 61 63 68 age;..union.ncp_dir_cache..*cach
1e6c0 65 3b 0a 09 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 09 09 09 66 70 6f 73 2c 20 6f 66 73 3b 0a 09 e;..unsigned.long...fpos,.ofs;..
1e6e0 69 6e 74 09 09 09 09 66 69 6c 6c 65 64 2c 20 76 61 6c 69 64 2c 20 69 64 78 3b 0a 7d 3b 0a 0a 23 int....filled,.valid,.idx;.};..#
1e700 65 6e 64 69 66 20 2f 2a 20 5f 4e 43 50 4c 49 42 5f 48 20 2a 2f 0a 00 00 00 00 00 00 00 00 00 00 endif./*._NCPLIB_H.*/...........
1e720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e800 6e 63 70 66 73 2f 6e 63 70 73 69 67 6e 5f 6b 65 72 6e 65 6c 2e 63 00 00 00 00 00 00 00 00 00 00 ncpfs/ncpsign_kernel.c..........
1e820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e860 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 ....0000644.0001750.0001750.0000
1e880 30 30 30 37 32 32 31 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 34 33 33 35 00 20 30 00 00 00 0007221.13023323142.014335..0...
1e8a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e8c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e8e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e900 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...kubax..................
1e920 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........kubax..................
1e940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e9c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e9e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ea00 2f 2a 0a 20 2a 20 20 6e 63 70 73 69 67 6e 5f 6b 65 72 6e 65 6c 2e 63 0a 20 2a 0a 20 2a 20 20 41 /*..*..ncpsign_kernel.c..*..*..A
1ea20 72 6e 65 20 64 65 20 42 72 75 69 6a 6e 20 28 61 72 6e 65 40 6b 6e 6f 77 61 72 65 2e 6e 6c 29 2c rne.de.Bruijn.(arne@knoware.nl),
1ea40 20 31 39 39 37 0a 20 2a 0a 20 2a 2f 0a 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 .1997..*..*/...#ifdef.CONFIG_NCP
1ea60 46 53 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e FS_PACKET_SIGNING..#include.<lin
1ea80 75 78 2f 73 74 72 69 6e 67 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6e 63 70 ux/string.h>.#include.<linux/ncp
1eaa0 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 62 69 74 6f 70 73 2e 68 3e 0a 23 69 .h>.#include.<linux/bitops.h>.#i
1eac0 6e 63 6c 75 64 65 20 22 6e 63 70 5f 66 73 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 6e 63 70 73 nclude."ncp_fs.h".#include."ncps
1eae0 69 67 6e 5f 6b 65 72 6e 65 6c 2e 68 22 0a 0a 2f 2a 20 69 33 38 36 3a 20 33 32 2d 62 69 74 2c 20 ign_kernel.h"../*.i386:.32-bit,.
1eb00 6c 69 74 74 6c 65 20 65 6e 64 69 61 6e 2c 20 68 61 6e 64 6c 65 73 20 6d 69 73 2d 61 6c 69 67 6e little.endian,.handles.mis-align
1eb20 6d 65 6e 74 20 2a 2f 0a 23 69 66 64 65 66 20 5f 5f 69 33 38 36 5f 5f 0a 23 64 65 66 69 6e 65 20 ment.*/.#ifdef.__i386__.#define.
1eb40 47 45 54 5f 4c 45 33 32 28 70 29 20 28 2a 28 63 6f 6e 73 74 20 69 6e 74 20 2a 29 28 70 29 29 0a GET_LE32(p).(*(const.int.*)(p)).
1eb60 23 64 65 66 69 6e 65 20 50 55 54 5f 4c 45 33 32 28 70 2c 76 29 20 7b 20 2a 28 69 6e 74 20 2a 29 #define.PUT_LE32(p,v).{.*(int.*)
1eb80 28 70 29 3d 76 3b 20 7d 0a 23 65 6c 73 65 0a 2f 2a 20 66 72 6f 6d 20 69 6e 63 6c 75 64 65 2f 6e (p)=v;.}.#else./*.from.include/n
1eba0 63 70 6c 69 62 2e 68 20 2a 2f 0a 23 64 65 66 69 6e 65 20 42 56 41 4c 28 62 75 66 2c 70 6f 73 29 cplib.h.*/.#define.BVAL(buf,pos)
1ebc0 20 28 28 28 63 6f 6e 73 74 20 5f 5f 75 38 20 2a 29 28 62 75 66 29 29 5b 70 6f 73 5d 29 0a 23 64 .(((const.__u8.*)(buf))[pos]).#d
1ebe0 65 66 69 6e 65 20 50 56 41 4c 28 62 75 66 2c 70 6f 73 29 20 28 28 75 6e 73 69 67 6e 65 64 29 42 efine.PVAL(buf,pos).((unsigned)B
1ec00 56 41 4c 28 62 75 66 2c 70 6f 73 29 29 0a 23 64 65 66 69 6e 65 20 42 53 45 54 28 62 75 66 2c 70 VAL(buf,pos)).#define.BSET(buf,p
1ec20 6f 73 2c 76 61 6c 29 20 28 28 28 5f 5f 75 38 20 2a 29 28 62 75 66 29 29 5b 70 6f 73 5d 20 3d 20 os,val).(((__u8.*)(buf))[pos].=.
1ec40 28 76 61 6c 29 29 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 5f 5f 75 31 36 0a 57 56 41 4c (val))..static.inline.__u16.WVAL
1ec60 5f 4c 48 28 63 6f 6e 73 74 20 5f 5f 75 38 20 2a 20 62 75 66 2c 20 69 6e 74 20 70 6f 73 29 0a 7b _LH(const.__u8.*.buf,.int.pos).{
1ec80 0a 09 72 65 74 75 72 6e 20 50 56 41 4c 28 62 75 66 2c 20 70 6f 73 29 20 7c 20 50 56 41 4c 28 62 ..return.PVAL(buf,.pos).|.PVAL(b
1eca0 75 66 2c 20 70 6f 73 20 2b 20 31 29 20 3c 3c 20 38 3b 0a 7d 0a 73 74 61 74 69 63 20 69 6e 6c 69 uf,.pos.+.1).<<.8;.}.static.inli
1ecc0 6e 65 20 5f 5f 75 33 32 0a 44 56 41 4c 5f 4c 48 28 63 6f 6e 73 74 20 5f 5f 75 38 20 2a 20 62 75 ne.__u32.DVAL_LH(const.__u8.*.bu
1ece0 66 2c 20 69 6e 74 20 70 6f 73 29 0a 7b 0a 09 72 65 74 75 72 6e 20 57 56 41 4c 5f 4c 48 28 62 75 f,.int.pos).{..return.WVAL_LH(bu
1ed00 66 2c 20 70 6f 73 29 20 7c 20 57 56 41 4c 5f 4c 48 28 62 75 66 2c 20 70 6f 73 20 2b 20 32 29 20 f,.pos).|.WVAL_LH(buf,.pos.+.2).
1ed20 3c 3c 20 31 36 3b 0a 7d 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 0a 57 53 45 54 <<.16;.}.static.inline.void.WSET
1ed40 5f 4c 48 28 5f 5f 75 38 20 2a 20 62 75 66 2c 20 69 6e 74 20 70 6f 73 2c 20 5f 5f 75 31 36 20 76 _LH(__u8.*.buf,.int.pos,.__u16.v
1ed60 61 6c 29 0a 7b 0a 09 42 53 45 54 28 62 75 66 2c 20 70 6f 73 2c 20 76 61 6c 20 26 20 30 78 66 66 al).{..BSET(buf,.pos,.val.&.0xff
1ed80 29 3b 0a 09 42 53 45 54 28 62 75 66 2c 20 70 6f 73 20 2b 20 31 2c 20 76 61 6c 20 3e 3e 20 38 29 );..BSET(buf,.pos.+.1,.val.>>.8)
1eda0 3b 0a 7d 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 0a 44 53 45 54 5f 4c 48 28 5f ;.}.static.inline.void.DSET_LH(_
1edc0 5f 75 38 20 2a 20 62 75 66 2c 20 69 6e 74 20 70 6f 73 2c 20 5f 5f 75 33 32 20 76 61 6c 29 0a 7b _u8.*.buf,.int.pos,.__u32.val).{
1ede0 0a 09 57 53 45 54 5f 4c 48 28 62 75 66 2c 20 70 6f 73 2c 20 76 61 6c 20 26 20 30 78 66 66 66 66 ..WSET_LH(buf,.pos,.val.&.0xffff
1ee00 29 3b 0a 09 57 53 45 54 5f 4c 48 28 62 75 66 2c 20 70 6f 73 20 2b 20 32 2c 20 76 61 6c 20 3e 3e );..WSET_LH(buf,.pos.+.2,.val.>>
1ee20 20 31 36 29 3b 0a 7d 0a 0a 23 64 65 66 69 6e 65 20 47 45 54 5f 4c 45 33 32 28 70 29 20 44 56 41 .16);.}..#define.GET_LE32(p).DVA
1ee40 4c 5f 4c 48 28 70 2c 30 29 0a 23 64 65 66 69 6e 65 20 50 55 54 5f 4c 45 33 32 28 70 2c 76 29 20 L_LH(p,0).#define.PUT_LE32(p,v).
1ee60 44 53 45 54 5f 4c 48 28 70 2c 30 2c 76 29 0a 23 65 6e 64 69 66 0a 0a 73 74 61 74 69 63 20 76 6f DSET_LH(p,0,v).#endif..static.vo
1ee80 69 64 20 6e 77 73 69 67 6e 28 63 68 61 72 20 2a 72 5f 64 61 74 61 31 2c 20 63 68 61 72 20 2a 72 id.nwsign(char.*r_data1,.char.*r
1eea0 5f 64 61 74 61 32 2c 20 63 68 61 72 20 2a 6f 75 74 64 61 74 61 29 20 7b 0a 20 69 6e 74 20 69 3b _data2,.char.*outdata).{..int.i;
1eec0 0a 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 77 30 2c 77 31 2c 77 32 2c 77 33 3b 0a 20 73 74 61 ..unsigned.int.w0,w1,w2,w3;..sta
1eee0 74 69 63 20 69 6e 74 20 72 62 69 74 5b 34 5d 3d 7b 30 2c 20 32 2c 20 31 2c 20 33 7d 3b 0a 23 69 tic.int.rbit[4]={0,.2,.1,.3};.#i
1ef00 66 64 65 66 20 5f 5f 69 33 38 36 5f 5f 0a 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 2a 64 61 74 fdef.__i386__..unsigned.int.*dat
1ef20 61 32 3d 28 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 2a 29 72 5f 64 61 74 61 32 3b 0a 23 65 6c 73 a2=(unsigned.int.*)r_data2;.#els
1ef40 65 0a 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 64 61 74 61 32 5b 31 36 5d 3b 0a 20 66 6f 72 20 e..unsigned.int.data2[16];..for.
1ef60 28 69 3d 30 3b 69 3c 31 36 3b 69 2b 2b 29 0a 20 20 64 61 74 61 32 5b 69 5d 3d 47 45 54 5f 4c 45 (i=0;i<16;i++)...data2[i]=GET_LE
1ef80 33 32 28 72 5f 64 61 74 61 32 2b 28 69 3c 3c 32 29 29 3b 0a 23 65 6e 64 69 66 20 0a 20 77 30 3d 32(r_data2+(i<<2));.#endif...w0=
1efa0 47 45 54 5f 4c 45 33 32 28 72 5f 64 61 74 61 31 29 3b 0a 20 77 31 3d 47 45 54 5f 4c 45 33 32 28 GET_LE32(r_data1);..w1=GET_LE32(
1efc0 72 5f 64 61 74 61 31 2b 34 29 3b 0a 20 77 32 3d 47 45 54 5f 4c 45 33 32 28 72 5f 64 61 74 61 31 r_data1+4);..w2=GET_LE32(r_data1
1efe0 2b 38 29 3b 0a 20 77 33 3d 47 45 54 5f 4c 45 33 32 28 72 5f 64 61 74 61 31 2b 31 32 29 3b 0a 20 +8);..w3=GET_LE32(r_data1+12);..
1f000 66 6f 72 20 28 69 3d 30 3b 69 3c 31 36 3b 69 2b 3d 34 29 20 7b 0a 20 20 77 30 3d 72 6f 6c 33 32 for.(i=0;i<16;i+=4).{...w0=rol32
1f020 28 77 30 20 2b 20 28 28 77 31 20 26 20 77 32 29 20 7c 20 28 28 7e 77 31 29 20 26 20 77 33 29 29 (w0.+.((w1.&.w2).|.((~w1).&.w3))
1f040 20 2b 20 64 61 74 61 32 5b 69 2b 30 5d 2c 33 29 3b 0a 20 20 77 33 3d 72 6f 6c 33 32 28 77 33 20 .+.data2[i+0],3);...w3=rol32(w3.
1f060 2b 20 28 28 77 30 20 26 20 77 31 29 20 7c 20 28 28 7e 77 30 29 20 26 20 77 32 29 29 20 2b 20 64 +.((w0.&.w1).|.((~w0).&.w2)).+.d
1f080 61 74 61 32 5b 69 2b 31 5d 2c 37 29 3b 0a 20 20 77 32 3d 72 6f 6c 33 32 28 77 32 20 2b 20 28 28 ata2[i+1],7);...w2=rol32(w2.+.((
1f0a0 77 33 20 26 20 77 30 29 20 7c 20 28 28 7e 77 33 29 20 26 20 77 31 29 29 20 2b 20 64 61 74 61 32 w3.&.w0).|.((~w3).&.w1)).+.data2
1f0c0 5b 69 2b 32 5d 2c 31 31 29 3b 0a 20 20 77 31 3d 72 6f 6c 33 32 28 77 31 20 2b 20 28 28 77 32 20 [i+2],11);...w1=rol32(w1.+.((w2.
1f0e0 26 20 77 33 29 20 7c 20 28 28 7e 77 32 29 20 26 20 77 30 29 29 20 2b 20 64 61 74 61 32 5b 69 2b &.w3).|.((~w2).&.w0)).+.data2[i+
1f100 33 5d 2c 31 39 29 3b 0a 20 7d 0a 20 66 6f 72 20 28 69 3d 30 3b 69 3c 34 3b 69 2b 2b 29 20 7b 0a 3],19);..}..for.(i=0;i<4;i++).{.
1f120 20 20 77 30 3d 72 6f 6c 33 32 28 77 30 20 2b 20 28 28 28 77 32 20 7c 20 77 33 29 20 26 20 77 31 ..w0=rol32(w0.+.(((w2.|.w3).&.w1
1f140 29 20 7c 20 28 77 32 20 26 20 77 33 29 29 20 2b 20 30 78 35 61 38 32 37 39 39 39 20 2b 20 64 61 ).|.(w2.&.w3)).+.0x5a827999.+.da
1f160 74 61 32 5b 69 2b 30 5d 2c 33 29 3b 0a 20 20 77 33 3d 72 6f 6c 33 32 28 77 33 20 2b 20 28 28 28 ta2[i+0],3);...w3=rol32(w3.+.(((
1f180 77 31 20 7c 20 77 32 29 20 26 20 77 30 29 20 7c 20 28 77 31 20 26 20 77 32 29 29 20 2b 20 30 78 w1.|.w2).&.w0).|.(w1.&.w2)).+.0x
1f1a0 35 61 38 32 37 39 39 39 20 2b 20 64 61 74 61 32 5b 69 2b 34 5d 2c 35 29 3b 0a 20 20 77 32 3d 72 5a827999.+.data2[i+4],5);...w2=r
1f1c0 6f 6c 33 32 28 77 32 20 2b 20 28 28 28 77 30 20 7c 20 77 31 29 20 26 20 77 33 29 20 7c 20 28 77 ol32(w2.+.(((w0.|.w1).&.w3).|.(w
1f1e0 30 20 26 20 77 31 29 29 20 2b 20 30 78 35 61 38 32 37 39 39 39 20 2b 20 64 61 74 61 32 5b 69 2b 0.&.w1)).+.0x5a827999.+.data2[i+
1f200 38 5d 2c 39 29 3b 0a 20 20 77 31 3d 72 6f 6c 33 32 28 77 31 20 2b 20 28 28 28 77 33 20 7c 20 77 8],9);...w1=rol32(w1.+.(((w3.|.w
1f220 30 29 20 26 20 77 32 29 20 7c 20 28 77 33 20 26 20 77 30 29 29 20 2b 20 30 78 35 61 38 32 37 39 0).&.w2).|.(w3.&.w0)).+.0x5a8279
1f240 39 39 20 2b 20 64 61 74 61 32 5b 69 2b 31 32 5d 2c 31 33 29 3b 0a 20 7d 0a 20 66 6f 72 20 28 69 99.+.data2[i+12],13);..}..for.(i
1f260 3d 30 3b 69 3c 34 3b 69 2b 2b 29 20 7b 0a 20 20 77 30 3d 72 6f 6c 33 32 28 77 30 20 2b 20 28 28 =0;i<4;i++).{...w0=rol32(w0.+.((
1f280 77 31 20 5e 20 77 32 29 20 5e 20 77 33 29 20 2b 20 30 78 36 65 64 39 65 62 61 31 20 2b 20 64 61 w1.^.w2).^.w3).+.0x6ed9eba1.+.da
1f2a0 74 61 32 5b 72 62 69 74 5b 69 5d 2b 30 5d 2c 33 29 3b 0a 20 20 77 33 3d 72 6f 6c 33 32 28 77 33 ta2[rbit[i]+0],3);...w3=rol32(w3
1f2c0 20 2b 20 28 28 77 30 20 5e 20 77 31 29 20 5e 20 77 32 29 20 2b 20 30 78 36 65 64 39 65 62 61 31 .+.((w0.^.w1).^.w2).+.0x6ed9eba1
1f2e0 20 2b 20 64 61 74 61 32 5b 72 62 69 74 5b 69 5d 2b 38 5d 2c 39 29 3b 0a 20 20 77 32 3d 72 6f 6c .+.data2[rbit[i]+8],9);...w2=rol
1f300 33 32 28 77 32 20 2b 20 28 28 77 33 20 5e 20 77 30 29 20 5e 20 77 31 29 20 2b 20 30 78 36 65 64 32(w2.+.((w3.^.w0).^.w1).+.0x6ed
1f320 39 65 62 61 31 20 2b 20 64 61 74 61 32 5b 72 62 69 74 5b 69 5d 2b 34 5d 2c 31 31 29 3b 0a 20 20 9eba1.+.data2[rbit[i]+4],11);...
1f340 77 31 3d 72 6f 6c 33 32 28 77 31 20 2b 20 28 28 77 32 20 5e 20 77 33 29 20 5e 20 77 30 29 20 2b w1=rol32(w1.+.((w2.^.w3).^.w0).+
1f360 20 30 78 36 65 64 39 65 62 61 31 20 2b 20 64 61 74 61 32 5b 72 62 69 74 5b 69 5d 2b 31 32 5d 2c .0x6ed9eba1.+.data2[rbit[i]+12],
1f380 31 35 29 3b 0a 20 7d 0a 20 50 55 54 5f 4c 45 33 32 28 6f 75 74 64 61 74 61 2c 28 77 30 2b 47 45 15);..}..PUT_LE32(outdata,(w0+GE
1f3a0 54 5f 4c 45 33 32 28 72 5f 64 61 74 61 31 29 29 20 26 20 30 78 66 66 66 66 66 66 66 66 29 3b 0a T_LE32(r_data1)).&.0xffffffff);.
1f3c0 20 50 55 54 5f 4c 45 33 32 28 6f 75 74 64 61 74 61 2b 34 2c 28 77 31 2b 47 45 54 5f 4c 45 33 32 .PUT_LE32(outdata+4,(w1+GET_LE32
1f3e0 28 72 5f 64 61 74 61 31 2b 34 29 29 20 26 20 30 78 66 66 66 66 66 66 66 66 29 3b 0a 20 50 55 54 (r_data1+4)).&.0xffffffff);..PUT
1f400 5f 4c 45 33 32 28 6f 75 74 64 61 74 61 2b 38 2c 28 77 32 2b 47 45 54 5f 4c 45 33 32 28 72 5f 64 _LE32(outdata+8,(w2+GET_LE32(r_d
1f420 61 74 61 31 2b 38 29 29 20 26 20 30 78 66 66 66 66 66 66 66 66 29 3b 0a 20 50 55 54 5f 4c 45 33 ata1+8)).&.0xffffffff);..PUT_LE3
1f440 32 28 6f 75 74 64 61 74 61 2b 31 32 2c 28 77 33 2b 47 45 54 5f 4c 45 33 32 28 72 5f 64 61 74 61 2(outdata+12,(w3+GET_LE32(r_data
1f460 31 2b 31 32 29 29 20 26 20 30 78 66 66 66 66 66 66 66 66 29 3b 0a 7d 0a 0a 2f 2a 20 4d 61 6b 65 1+12)).&.0xffffffff);.}../*.Make
1f480 20 61 20 73 69 67 6e 61 74 75 72 65 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 61 63 .a.signature.for.the.current.pac
1f4a0 6b 65 74 20 61 6e 64 20 61 64 64 20 69 74 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 ket.and.add.it.at.the.end.of.the
1f4c0 20 2a 2f 0a 2f 2a 20 70 61 63 6b 65 74 2e 20 2a 2f 0a 76 6f 69 64 20 5f 5f 73 69 67 6e 5f 70 61 .*/./*.packet..*/.void.__sign_pa
1f4e0 63 6b 65 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 cket(struct.ncp_server.*server,.
1f500 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 61 63 6b 65 74 2c 20 73 69 7a 65 5f 74 20 73 69 7a 65 2c const.char.*packet,.size_t.size,
1f520 20 5f 5f 75 33 32 20 74 6f 74 61 6c 73 69 7a 65 2c 20 76 6f 69 64 20 2a 73 69 67 6e 5f 62 75 66 .__u32.totalsize,.void.*sign_buf
1f540 66 29 20 7b 0a 09 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 64 61 74 61 5b 36 34 5d 3b 0a 0a 09 f).{..unsigned.char.data[64];...
1f560 6d 65 6d 63 70 79 28 64 61 74 61 2c 20 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 72 6f 6f 74 2c 20 memcpy(data,.server->sign_root,.
1f580 38 29 3b 0a 09 2a 28 5f 5f 75 33 32 2a 29 28 64 61 74 61 20 2b 20 38 29 20 3d 20 74 6f 74 61 6c 8);..*(__u32*)(data.+.8).=.total
1f5a0 73 69 7a 65 3b 0a 09 69 66 20 28 73 69 7a 65 20 3c 20 35 32 29 20 7b 0a 09 09 6d 65 6d 63 70 79 size;..if.(size.<.52).{...memcpy
1f5c0 28 64 61 74 61 20 2b 20 31 32 2c 20 70 61 63 6b 65 74 2c 20 73 69 7a 65 29 3b 0a 09 09 6d 65 6d (data.+.12,.packet,.size);...mem
1f5e0 73 65 74 28 64 61 74 61 20 2b 20 31 32 20 2b 20 73 69 7a 65 2c 20 30 2c 20 35 32 20 2d 20 73 69 set(data.+.12.+.size,.0,.52.-.si
1f600 7a 65 29 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 6d 65 6d 63 70 79 28 64 61 74 61 20 2b 20 31 ze);..}.else.{...memcpy(data.+.1
1f620 32 2c 20 70 61 63 6b 65 74 2c 20 35 32 29 3b 0a 09 7d 0a 09 6e 77 73 69 67 6e 28 73 65 72 76 65 2,.packet,.52);..}..nwsign(serve
1f640 72 2d 3e 73 69 67 6e 5f 6c 61 73 74 2c 20 64 61 74 61 2c 20 73 65 72 76 65 72 2d 3e 73 69 67 6e r->sign_last,.data,.server->sign
1f660 5f 6c 61 73 74 29 3b 0a 09 6d 65 6d 63 70 79 28 73 69 67 6e 5f 62 75 66 66 2c 20 73 65 72 76 65 _last);..memcpy(sign_buff,.serve
1f680 72 2d 3e 73 69 67 6e 5f 6c 61 73 74 2c 20 38 29 3b 0a 7d 0a 0a 69 6e 74 20 73 69 67 6e 5f 76 65 r->sign_last,.8);.}..int.sign_ve
1f6a0 72 69 66 79 5f 72 65 70 6c 79 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 rify_reply(struct.ncp_server.*se
1f6c0 72 76 65 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 70 61 63 6b 65 74 2c 20 73 69 7a 65 5f 74 rver,.const.char.*packet,.size_t
1f6e0 20 73 69 7a 65 2c 20 5f 5f 75 33 32 20 74 6f 74 61 6c 73 69 7a 65 2c 20 63 6f 6e 73 74 20 76 6f .size,.__u32.totalsize,.const.vo
1f700 69 64 20 2a 73 69 67 6e 5f 62 75 66 66 29 20 7b 0a 09 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 id.*sign_buff).{..unsigned.char.
1f720 64 61 74 61 5b 36 34 5d 3b 0a 09 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 68 61 73 68 5b 31 36 data[64];..unsigned.char.hash[16
1f740 5d 3b 0a 0a 09 6d 65 6d 63 70 79 28 64 61 74 61 2c 20 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 72 ];...memcpy(data,.server->sign_r
1f760 6f 6f 74 2c 20 38 29 3b 0a 09 2a 28 5f 5f 75 33 32 2a 29 28 64 61 74 61 20 2b 20 38 29 20 3d 20 oot,.8);..*(__u32*)(data.+.8).=.
1f780 74 6f 74 61 6c 73 69 7a 65 3b 0a 09 69 66 20 28 73 69 7a 65 20 3c 20 35 32 29 20 7b 0a 09 09 6d totalsize;..if.(size.<.52).{...m
1f7a0 65 6d 63 70 79 28 64 61 74 61 20 2b 20 31 32 2c 20 70 61 63 6b 65 74 2c 20 73 69 7a 65 29 3b 0a emcpy(data.+.12,.packet,.size);.
1f7c0 09 09 6d 65 6d 73 65 74 28 64 61 74 61 20 2b 20 31 32 20 2b 20 73 69 7a 65 2c 20 30 2c 20 35 32 ..memset(data.+.12.+.size,.0,.52
1f7e0 20 2d 20 73 69 7a 65 29 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 6d 65 6d 63 70 79 28 64 61 74 .-.size);..}.else.{...memcpy(dat
1f800 61 20 2b 20 31 32 2c 20 70 61 63 6b 65 74 2c 20 35 32 29 3b 0a 09 7d 0a 09 6e 77 73 69 67 6e 28 a.+.12,.packet,.52);..}..nwsign(
1f820 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 6c 61 73 74 2c 20 64 61 74 61 2c 20 68 61 73 68 29 3b 0a server->sign_last,.data,.hash);.
1f840 09 72 65 74 75 72 6e 20 6d 65 6d 63 6d 70 28 73 69 67 6e 5f 62 75 66 66 2c 20 68 61 73 68 2c 20 .return.memcmp(sign_buff,.hash,.
1f860 38 29 3b 0a 7d 0a 0a 23 65 6e 64 69 66 09 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 50 41 8);.}..#endif./*.CONFIG_NCPFS_PA
1f880 43 4b 45 54 5f 53 49 47 4e 49 4e 47 20 2a 2f 0a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 CKET_SIGNING.*/.................
1f8a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f8c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f8e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f9c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f9e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fa00 6e 63 70 66 73 2f 6e 63 70 73 69 67 6e 5f 6b 65 72 6e 65 6c 2e 68 00 00 00 00 00 00 00 00 00 00 ncpfs/ncpsign_kernel.h..........
1fa20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fa40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fa60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 ....0000644.0001750.0001750.0000
1fa80 30 30 30 31 32 37 34 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 34 33 34 34 00 20 30 00 00 00 0001274.13023323142.014344..0...
1faa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fb00 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...kubax..................
1fb20 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........kubax..................
1fb40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fb60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fb80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fbc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fbe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fc00 2f 2a 0a 20 2a 20 20 6e 63 70 73 69 67 6e 5f 6b 65 72 6e 65 6c 2e 68 0a 20 2a 0a 20 2a 20 20 41 /*..*..ncpsign_kernel.h..*..*..A
1fc20 72 6e 65 20 64 65 20 42 72 75 69 6a 6e 20 28 61 72 6e 65 40 6b 6e 6f 77 61 72 65 2e 6e 6c 29 2c rne.de.Bruijn.(arne@knoware.nl),
1fc40 20 31 39 39 37 0a 20 2a 0a 20 2a 2f 0a 20 0a 23 69 66 6e 64 65 66 20 5f 4e 43 50 53 49 47 4e 5f .1997..*..*/...#ifndef._NCPSIGN_
1fc60 4b 45 52 4e 45 4c 5f 48 0a 23 64 65 66 69 6e 65 20 5f 4e 43 50 53 49 47 4e 5f 4b 45 52 4e 45 4c KERNEL_H.#define._NCPSIGN_KERNEL
1fc80 5f 48 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 50 41 43 4b 45 54 5f 53 _H..#ifdef.CONFIG_NCPFS_PACKET_S
1fca0 49 47 4e 49 4e 47 0a 76 6f 69 64 20 5f 5f 73 69 67 6e 5f 70 61 63 6b 65 74 28 73 74 72 75 63 74 IGNING.void.__sign_packet(struct
1fcc0 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 .ncp_server.*server,.const.char.
1fce0 2a 64 61 74 61 2c 20 73 69 7a 65 5f 74 20 73 69 7a 65 2c 20 5f 5f 75 33 32 20 74 6f 74 61 6c 73 *data,.size_t.size,.__u32.totals
1fd00 69 7a 65 2c 20 76 6f 69 64 20 2a 73 69 67 6e 5f 62 75 66 66 29 3b 0a 69 6e 74 20 73 69 67 6e 5f ize,.void.*sign_buff);.int.sign_
1fd20 76 65 72 69 66 79 5f 72 65 70 6c 79 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a verify_reply(struct.ncp_server.*
1fd40 73 65 72 76 65 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 64 61 74 61 2c 20 73 69 7a 65 5f 74 server,.const.char.*data,.size_t
1fd60 20 73 69 7a 65 2c 20 5f 5f 75 33 32 20 74 6f 74 61 6c 73 69 7a 65 2c 20 63 6f 6e 73 74 20 76 6f .size,.__u32.totalsize,.const.vo
1fd80 69 64 20 2a 73 69 67 6e 5f 62 75 66 66 29 3b 0a 23 65 6e 64 69 66 0a 0a 73 74 61 74 69 63 20 69 id.*sign_buff);.#endif..static.i
1fda0 6e 6c 69 6e 65 20 73 69 7a 65 5f 74 20 73 69 67 6e 5f 70 61 63 6b 65 74 28 73 74 72 75 63 74 20 nline.size_t.sign_packet(struct.
1fdc0 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a ncp_server.*server,.const.char.*
1fde0 64 61 74 61 2c 20 73 69 7a 65 5f 74 20 73 69 7a 65 2c 20 5f 5f 75 33 32 20 74 6f 74 61 6c 73 69 data,.size_t.size,.__u32.totalsi
1fe00 7a 65 2c 20 76 6f 69 64 20 2a 73 69 67 6e 5f 62 75 66 66 29 20 7b 0a 23 69 66 64 65 66 20 43 4f ze,.void.*sign_buff).{.#ifdef.CO
1fe20 4e 46 49 47 5f 4e 43 50 46 53 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 0a 09 69 66 20 28 73 NFIG_NCPFS_PACKET_SIGNING..if.(s
1fe40 65 72 76 65 72 2d 3e 73 69 67 6e 5f 61 63 74 69 76 65 29 20 7b 0a 09 09 5f 5f 73 69 67 6e 5f 70 erver->sign_active).{...__sign_p
1fe60 61 63 6b 65 74 28 73 65 72 76 65 72 2c 20 64 61 74 61 2c 20 73 69 7a 65 2c 20 74 6f 74 61 6c 73 acket(server,.data,.size,.totals
1fe80 69 7a 65 2c 20 73 69 67 6e 5f 62 75 66 66 29 3b 0a 09 09 72 65 74 75 72 6e 20 38 3b 0a 09 7d 0a ize,.sign_buff);...return.8;..}.
1fea0 23 65 6e 64 69 66 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 23 65 6e 64 69 66 0a 00 00 00 00 #endif..return.0;.}..#endif.....
1fec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ff00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ff20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ff40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ff60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ff80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ffa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ffc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ffe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20000 6e 63 70 66 73 2f 73 6f 63 6b 2e 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ncpfs/sock.c....................
20020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20060 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 ....0000644.0001750.0001750.0000
20080 30 30 35 34 37 35 36 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 32 33 31 32 00 20 30 00 00 00 0054756.13023323142.012312..0...
200a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
200c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
200e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20100 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...kubax..................
20120 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........kubax..................
20140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
201a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
201c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
201e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20200 2f 2a 0a 20 2a 20 20 6c 69 6e 75 78 2f 66 73 2f 6e 63 70 66 73 2f 73 6f 63 6b 2e 63 0a 20 2a 0a /*..*..linux/fs/ncpfs/sock.c..*.
20220 20 2a 20 20 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 31 39 39 32 2c 20 31 39 39 33 20 20 52 69 .*..Copyright.(C).1992,.1993..Ri
20240 63 6b 20 53 6c 61 64 6b 65 79 0a 20 2a 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 35 2c ck.Sladkey..*..*..Modified.1995,
20260 20 31 39 39 36 20 62 79 20 56 6f 6c 6b 65 72 20 4c 65 6e 64 65 63 6b 65 20 74 6f 20 62 65 20 75 .1996.by.Volker.Lendecke.to.be.u
20280 73 61 62 6c 65 20 66 6f 72 20 6e 63 70 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 37 20 sable.for.ncp..*..Modified.1997.
202a0 50 65 74 65 72 20 57 61 6c 74 65 6e 62 65 72 67 2c 20 42 69 6c 6c 20 48 61 77 65 73 2c 20 44 61 Peter.Waltenberg,.Bill.Hawes,.Da
202c0 76 69 64 20 57 6f 6f 64 68 6f 75 73 65 20 66 6f 72 20 32 2e 31 20 64 63 61 63 68 65 0a 20 2a 0a vid.Woodhouse.for.2.1.dcache..*.
202e0 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 70 72 5f 66 6d 74 28 66 6d 74 29 20 4b 42 55 49 4c 44 5f .*/..#define.pr_fmt(fmt).KBUILD_
20300 4d 4f 44 4e 41 4d 45 20 22 3a 20 22 20 66 6d 74 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 MODNAME.":.".fmt..#include.<linu
20320 78 2f 74 69 6d 65 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 65 72 72 6e 6f 2e x/time.h>.#include.<linux/errno.
20340 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 6f 63 6b 65 74 2e 68 3e 0a 23 69 6e h>.#include.<linux/socket.h>.#in
20360 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 66 63 6e 74 6c 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c clude.<linux/fcntl.h>.#include.<
20380 6c 69 6e 75 78 2f 73 74 61 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 74 linux/stat.h>.#include.<linux/st
203a0 72 69 6e 67 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 61 73 6d 2f 75 61 63 63 65 73 73 2e 68 3e ring.h>.#include.<asm/uaccess.h>
203c0 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 69 6e 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 .#include.<linux/in.h>.#include.
203e0 3c 6c 69 6e 75 78 2f 6e 65 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6d 6d <linux/net.h>.#include.<linux/mm
20400 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6e 65 74 64 65 76 69 63 65 2e 68 3e .h>.#include.<linux/netdevice.h>
20420 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 69 67 6e 61 6c 2e 68 3e 0a 23 69 6e 63 6c .#include.<linux/signal.h>.#incl
20440 75 64 65 20 3c 6c 69 6e 75 78 2f 73 6c 61 62 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6e 65 74 ude.<linux/slab.h>.#include.<net
20460 2f 73 63 6d 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6e 65 74 2f 73 6f 63 6b 2e 68 3e 0a 23 69 /scm.h>.#include.<net/sock.h>.#i
20480 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 69 70 78 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c nclude.<linux/ipx.h>.#include.<l
204a0 69 6e 75 78 2f 70 6f 6c 6c 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 66 69 6c inux/poll.h>.#include.<linux/fil
204c0 65 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 22 6e 63 70 5f 66 73 2e 68 22 0a 0a 23 69 6e 63 6c e.h>..#include."ncp_fs.h"..#incl
204e0 75 64 65 20 22 6e 63 70 73 69 67 6e 5f 6b 65 72 6e 65 6c 2e 68 22 0a 0a 73 74 61 74 69 63 20 69 ude."ncpsign_kernel.h"..static.i
20500 6e 74 20 5f 72 65 63 76 28 73 74 72 75 63 74 20 73 6f 63 6b 65 74 20 2a 73 6f 63 6b 2c 20 76 6f nt._recv(struct.socket.*sock,.vo
20520 69 64 20 2a 62 75 66 2c 20 69 6e 74 20 73 69 7a 65 2c 20 75 6e 73 69 67 6e 65 64 20 66 6c 61 67 id.*buf,.int.size,.unsigned.flag
20540 73 29 0a 7b 0a 09 73 74 72 75 63 74 20 6d 73 67 68 64 72 20 6d 73 67 20 3d 20 7b 4e 55 4c 4c 2c s).{..struct.msghdr.msg.=.{NULL,
20560 20 7d 3b 0a 09 73 74 72 75 63 74 20 6b 76 65 63 20 69 6f 76 20 3d 20 7b 62 75 66 2c 20 73 69 7a .};..struct.kvec.iov.=.{buf,.siz
20580 65 7d 3b 0a 09 72 65 74 75 72 6e 20 6b 65 72 6e 65 6c 5f 72 65 63 76 6d 73 67 28 73 6f 63 6b 2c e};..return.kernel_recvmsg(sock,
205a0 20 26 6d 73 67 2c 20 26 69 6f 76 2c 20 31 2c 20 73 69 7a 65 2c 20 66 6c 61 67 73 29 3b 0a 7d 0a .&msg,.&iov,.1,.size,.flags);.}.
205c0 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 69 6e 74 20 64 6f 5f 73 65 6e 64 28 73 74 72 75 63 .static.inline.int.do_send(struc
205e0 74 20 73 6f 63 6b 65 74 20 2a 73 6f 63 6b 2c 20 73 74 72 75 63 74 20 6b 76 65 63 20 2a 76 65 63 t.socket.*sock,.struct.kvec.*vec
20600 2c 20 69 6e 74 20 63 6f 75 6e 74 2c 0a 09 09 09 20 20 69 6e 74 20 6c 65 6e 2c 20 75 6e 73 69 67 ,.int.count,......int.len,.unsig
20620 6e 65 64 20 66 6c 61 67 73 29 0a 7b 0a 09 73 74 72 75 63 74 20 6d 73 67 68 64 72 20 6d 73 67 20 ned.flags).{..struct.msghdr.msg.
20640 3d 20 7b 20 2e 6d 73 67 5f 66 6c 61 67 73 20 3d 20 66 6c 61 67 73 20 7d 3b 0a 09 72 65 74 75 72 =.{..msg_flags.=.flags.};..retur
20660 6e 20 6b 65 72 6e 65 6c 5f 73 65 6e 64 6d 73 67 28 73 6f 63 6b 2c 20 26 6d 73 67 2c 20 76 65 63 n.kernel_sendmsg(sock,.&msg,.vec
20680 2c 20 63 6f 75 6e 74 2c 20 6c 65 6e 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 5f 73 65 ,.count,.len);.}..static.int._se
206a0 6e 64 28 73 74 72 75 63 74 20 73 6f 63 6b 65 74 20 2a 73 6f 63 6b 2c 20 63 6f 6e 73 74 20 76 6f nd(struct.socket.*sock,.const.vo
206c0 69 64 20 2a 62 75 66 66 2c 20 69 6e 74 20 6c 65 6e 29 0a 7b 0a 09 73 74 72 75 63 74 20 6b 76 65 id.*buff,.int.len).{..struct.kve
206e0 63 20 76 65 63 3b 0a 09 76 65 63 2e 69 6f 76 5f 62 61 73 65 20 3d 20 28 76 6f 69 64 20 2a 29 20 c.vec;..vec.iov_base.=.(void.*).
20700 62 75 66 66 3b 0a 09 76 65 63 2e 69 6f 76 5f 6c 65 6e 20 3d 20 6c 65 6e 3b 0a 09 72 65 74 75 72 buff;..vec.iov_len.=.len;..retur
20720 6e 20 64 6f 5f 73 65 6e 64 28 73 6f 63 6b 2c 20 26 76 65 63 2c 20 31 2c 20 6c 65 6e 2c 20 30 29 n.do_send(sock,.&vec,.1,.len,.0)
20740 3b 0a 7d 0a 0a 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 7b 0a ;.}..struct.ncp_request_reply.{.
20760 09 73 74 72 75 63 74 20 6c 69 73 74 5f 68 65 61 64 20 72 65 71 3b 0a 09 77 61 69 74 5f 71 75 65 .struct.list_head.req;..wait_que
20780 75 65 5f 68 65 61 64 5f 74 20 77 71 3b 0a 09 61 74 6f 6d 69 63 5f 74 20 72 65 66 73 3b 0a 09 75 ue_head_t.wq;..atomic_t.refs;..u
207a0 6e 73 69 67 6e 65 64 20 63 68 61 72 2a 20 72 65 70 6c 79 5f 62 75 66 3b 0a 09 73 69 7a 65 5f 74 nsigned.char*.reply_buf;..size_t
207c0 20 64 61 74 61 6c 65 6e 3b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 09 65 6e 75 6d 20 7b 20 52 .datalen;..int.result;..enum.{.R
207e0 51 5f 44 4f 4e 45 2c 20 52 51 5f 49 4e 50 52 4f 47 52 45 53 53 2c 20 52 51 5f 51 55 45 55 45 44 Q_DONE,.RQ_INPROGRESS,.RQ_QUEUED
20800 2c 20 52 51 5f 49 44 4c 45 2c 20 52 51 5f 41 42 41 4e 44 4f 4e 45 44 20 7d 20 73 74 61 74 75 73 ,.RQ_IDLE,.RQ_ABANDONED.}.status
20820 3b 0a 09 73 74 72 75 63 74 20 6b 76 65 63 2a 20 74 78 5f 63 69 6f 76 3b 0a 09 73 69 7a 65 5f 74 ;..struct.kvec*.tx_ciov;..size_t
20840 20 74 78 5f 74 6f 74 61 6c 6c 65 6e 3b 0a 09 73 69 7a 65 5f 74 20 74 78 5f 69 6f 76 6c 65 6e 3b .tx_totallen;..size_t.tx_iovlen;
20860 0a 09 73 74 72 75 63 74 20 6b 76 65 63 20 74 78 5f 69 6f 76 5b 33 5d 3b 0a 09 75 5f 69 6e 74 31 ..struct.kvec.tx_iov[3];..u_int1
20880 36 5f 74 20 74 78 5f 74 79 70 65 3b 0a 09 75 5f 69 6e 74 33 32 5f 74 20 73 69 67 6e 5b 36 5d 3b 6_t.tx_type;..u_int32_t.sign[6];
208a0 0a 7d 3b 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 73 74 72 75 63 74 20 6e 63 70 5f 72 65 .};..static.inline.struct.ncp_re
208c0 71 75 65 73 74 5f 72 65 70 6c 79 2a 20 6e 63 70 5f 61 6c 6c 6f 63 5f 72 65 71 28 76 6f 69 64 29 quest_reply*.ncp_alloc_req(void)
208e0 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 .{..struct.ncp_request_reply.*re
20900 71 3b 0a 0a 09 72 65 71 20 3d 20 6b 6d 61 6c 6c 6f 63 28 73 69 7a 65 6f 66 28 73 74 72 75 63 74 q;...req.=.kmalloc(sizeof(struct
20920 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 29 2c 20 47 46 50 5f 4b 45 52 4e 45 4c 29 .ncp_request_reply),.GFP_KERNEL)
20940 3b 0a 09 69 66 20 28 21 72 65 71 29 0a 09 09 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 0a 0a 09 69 6e ;..if.(!req)...return.NULL;...in
20960 69 74 5f 77 61 69 74 71 75 65 75 65 5f 68 65 61 64 28 26 72 65 71 2d 3e 77 71 29 3b 0a 09 61 74 it_waitqueue_head(&req->wq);..at
20980 6f 6d 69 63 5f 73 65 74 28 26 72 65 71 2d 3e 72 65 66 73 2c 20 28 31 29 29 3b 0a 09 72 65 71 2d omic_set(&req->refs,.(1));..req-
209a0 3e 73 74 61 74 75 73 20 3d 20 52 51 5f 49 44 4c 45 3b 0a 0a 09 72 65 74 75 72 6e 20 72 65 71 3b >status.=.RQ_IDLE;...return.req;
209c0 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 72 65 71 5f 67 65 74 28 73 74 72 75 .}..static.void.ncp_req_get(stru
209e0 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 29 0a 7b 0a 09 61 74 ct.ncp_request_reply.*req).{..at
20a00 6f 6d 69 63 5f 69 6e 63 28 26 72 65 71 2d 3e 72 65 66 73 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 omic_inc(&req->refs);.}..static.
20a20 76 6f 69 64 20 6e 63 70 5f 72 65 71 5f 70 75 74 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 void.ncp_req_put(struct.ncp_requ
20a40 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 29 0a 7b 0a 09 69 66 20 28 61 74 6f 6d 69 63 5f 64 65 est_reply.*req).{..if.(atomic_de
20a60 63 5f 61 6e 64 5f 74 65 73 74 28 26 72 65 71 2d 3e 72 65 66 73 29 29 0a 09 09 6b 66 72 65 65 28 c_and_test(&req->refs))...kfree(
20a80 72 65 71 29 3b 0a 7d 0a 0a 76 6f 69 64 20 6e 63 70 5f 74 63 70 5f 64 61 74 61 5f 72 65 61 64 79 req);.}..void.ncp_tcp_data_ready
20aa0 28 73 74 72 75 63 74 20 73 6f 63 6b 20 2a 73 6b 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f (struct.sock.*sk).{..struct.ncp_
20ac0 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 20 73 6b 2d 3e 73 6b 5f 75 73 65 72 5f 64 61 74 server.*server.=.sk->sk_user_dat
20ae0 61 3b 0a 0a 09 73 65 72 76 65 72 2d 3e 64 61 74 61 5f 72 65 61 64 79 28 73 6b 29 3b 0a 09 73 63 a;...server->data_ready(sk);..sc
20b00 68 65 64 75 6c 65 5f 77 6f 72 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 74 71 29 3b 0a 7d 0a hedule_work(&server->rcv.tq);.}.
20b20 0a 76 6f 69 64 20 6e 63 70 5f 74 63 70 5f 65 72 72 6f 72 5f 72 65 70 6f 72 74 28 73 74 72 75 63 .void.ncp_tcp_error_report(struc
20b40 74 20 73 6f 63 6b 20 2a 73 6b 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 t.sock.*sk).{..struct.ncp_server
20b60 20 2a 73 65 72 76 65 72 20 3d 20 73 6b 2d 3e 73 6b 5f 75 73 65 72 5f 64 61 74 61 3b 0a 09 0a 09 .*server.=.sk->sk_user_data;....
20b80 73 65 72 76 65 72 2d 3e 65 72 72 6f 72 5f 72 65 70 6f 72 74 28 73 6b 29 3b 0a 09 73 63 68 65 64 server->error_report(sk);..sched
20ba0 75 6c 65 5f 77 6f 72 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 74 71 29 3b 0a 7d 0a 0a 76 6f ule_work(&server->rcv.tq);.}..vo
20bc0 69 64 20 6e 63 70 5f 74 63 70 5f 77 72 69 74 65 5f 73 70 61 63 65 28 73 74 72 75 63 74 20 73 6f id.ncp_tcp_write_space(struct.so
20be0 63 6b 20 2a 73 6b 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 ck.*sk).{..struct.ncp_server.*se
20c00 72 76 65 72 20 3d 20 73 6b 2d 3e 73 6b 5f 75 73 65 72 5f 64 61 74 61 3b 0a 09 0a 09 2f 2a 20 57 rver.=.sk->sk_user_data;..../*.W
20c20 65 20 64 6f 20 6e 6f 74 20 6e 65 65 64 20 61 6e 79 20 6c 6f 63 6b 69 6e 67 3a 20 77 65 20 66 69 e.do.not.need.any.locking:.we.fi
20c40 72 73 74 20 73 65 74 20 74 78 2e 63 72 65 71 2c 20 61 6e 64 20 74 68 65 6e 20 77 65 20 64 6f 20 rst.set.tx.creq,.and.then.we.do.
20c60 73 65 6e 64 6d 73 67 2c 0a 09 20 20 20 6e 6f 74 20 76 69 63 65 20 76 65 72 73 61 2e 2e 2e 20 2a sendmsg,.....not.vice.versa....*
20c80 2f 0a 09 73 65 72 76 65 72 2d 3e 77 72 69 74 65 5f 73 70 61 63 65 28 73 6b 29 3b 0a 09 69 66 20 /..server->write_space(sk);..if.
20ca0 28 73 65 72 76 65 72 2d 3e 74 78 2e 63 72 65 71 29 0a 09 09 73 63 68 65 64 75 6c 65 5f 77 6f 72 (server->tx.creq)...schedule_wor
20cc0 6b 28 26 73 65 72 76 65 72 2d 3e 74 78 2e 74 71 29 3b 0a 7d 0a 0a 76 6f 69 64 20 6e 63 70 64 67 k(&server->tx.tq);.}..void.ncpdg
20ce0 72 61 6d 5f 74 69 6d 65 6f 75 74 5f 63 61 6c 6c 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 76 ram_timeout_call(unsigned.long.v
20d00 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d ).{..struct.ncp_server.*server.=
20d20 20 28 76 6f 69 64 2a 29 76 3b 0a 09 0a 09 73 63 68 65 64 75 6c 65 5f 77 6f 72 6b 28 26 73 65 72 .(void*)v;....schedule_work(&ser
20d40 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 74 71 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 ver->timeout_tq);.}..static.inli
20d60 6e 65 20 76 6f 69 64 20 6e 63 70 5f 66 69 6e 69 73 68 5f 72 65 71 75 65 73 74 28 73 74 72 75 63 ne.void.ncp_finish_request(struc
20d80 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 73 74 72 75 63 74 20 6e 63 70 t.ncp_server.*server,.struct.ncp
20da0 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 2c 20 69 6e 74 20 72 65 73 75 6c 74 29 _request_reply.*req,.int.result)
20dc0 0a 7b 0a 09 72 65 71 2d 3e 72 65 73 75 6c 74 20 3d 20 72 65 73 75 6c 74 3b 0a 09 69 66 20 28 72 .{..req->result.=.result;..if.(r
20de0 65 71 2d 3e 73 74 61 74 75 73 20 21 3d 20 52 51 5f 41 42 41 4e 44 4f 4e 45 44 29 0a 09 09 6d 65 eq->status.!=.RQ_ABANDONED)...me
20e00 6d 63 70 79 28 72 65 71 2d 3e 72 65 70 6c 79 5f 62 75 66 2c 20 73 65 72 76 65 72 2d 3e 72 78 62 mcpy(req->reply_buf,.server->rxb
20e20 75 66 2c 20 72 65 71 2d 3e 64 61 74 61 6c 65 6e 29 3b 0a 09 72 65 71 2d 3e 73 74 61 74 75 73 20 uf,.req->datalen);..req->status.
20e40 3d 20 52 51 5f 44 4f 4e 45 3b 0a 09 77 61 6b 65 5f 75 70 5f 61 6c 6c 28 26 72 65 71 2d 3e 77 71 =.RQ_DONE;..wake_up_all(&req->wq
20e60 29 3b 0a 09 6e 63 70 5f 72 65 71 5f 70 75 74 28 72 65 71 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 );..ncp_req_put(req);.}..static.
20e80 76 6f 69 64 20 5f 5f 61 62 6f 72 74 5f 6e 63 70 5f 63 6f 6e 6e 65 63 74 69 6f 6e 28 73 74 72 75 void.__abort_ncp_connection(stru
20ea0 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 0a 7b 0a 09 73 74 72 75 63 74 ct.ncp_server.*server).{..struct
20ec0 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 3b 0a 0a 09 6e 63 70 5f 69 .ncp_request_reply.*req;...ncp_i
20ee0 6e 76 61 6c 69 64 61 74 65 5f 63 6f 6e 6e 28 73 65 72 76 65 72 29 3b 0a 09 64 65 6c 5f 74 69 6d nvalidate_conn(server);..del_tim
20f00 65 72 28 26 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 74 6d 29 3b 0a 09 77 68 69 6c 65 20 er(&server->timeout_tm);..while.
20f20 28 21 6c 69 73 74 5f 65 6d 70 74 79 28 26 73 65 72 76 65 72 2d 3e 74 78 2e 72 65 71 75 65 73 74 (!list_empty(&server->tx.request
20f40 73 29 29 20 7b 0a 09 09 72 65 71 20 3d 20 6c 69 73 74 5f 65 6e 74 72 79 28 73 65 72 76 65 72 2d s)).{...req.=.list_entry(server-
20f60 3e 74 78 2e 72 65 71 75 65 73 74 73 2e 6e 65 78 74 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 72 65 >tx.requests.next,.struct.ncp_re
20f80 71 75 65 73 74 5f 72 65 70 6c 79 2c 20 72 65 71 29 3b 0a 09 09 0a 09 09 6c 69 73 74 5f 64 65 6c quest_reply,.req);......list_del
20fa0 5f 69 6e 69 74 28 26 72 65 71 2d 3e 72 65 71 29 3b 0a 09 09 6e 63 70 5f 66 69 6e 69 73 68 5f 72 _init(&req->req);...ncp_finish_r
20fc0 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 72 65 71 2c 20 2d 45 49 4f 29 3b 0a 09 7d 0a 09 72 equest(server,.req,.-EIO);..}..r
20fe0 65 71 20 3d 20 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 3b 0a 09 69 66 20 28 72 65 71 29 eq.=.server->rcv.creq;..if.(req)
21000 20 7b 0a 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 20 3d 20 4e 55 4c 4c 3b 0a 09 09 .{...server->rcv.creq.=.NULL;...
21020 6e 63 70 5f 66 69 6e 69 73 68 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 72 65 71 2c 20 ncp_finish_request(server,.req,.
21040 2d 45 49 4f 29 3b 0a 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 70 74 72 20 3d 20 4e 55 4c 4c 3b -EIO);...server->rcv.ptr.=.NULL;
21060 0a 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 73 74 61 74 65 20 3d 20 30 3b 0a 09 7d 0a 09 72 65 ...server->rcv.state.=.0;..}..re
21080 71 20 3d 20 73 65 72 76 65 72 2d 3e 74 78 2e 63 72 65 71 3b 0a 09 69 66 20 28 72 65 71 29 20 7b q.=.server->tx.creq;..if.(req).{
210a0 0a 09 09 73 65 72 76 65 72 2d 3e 74 78 2e 63 72 65 71 20 3d 20 4e 55 4c 4c 3b 0a 09 09 6e 63 70 ...server->tx.creq.=.NULL;...ncp
210c0 5f 66 69 6e 69 73 68 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 72 65 71 2c 20 2d 45 49 _finish_request(server,.req,.-EI
210e0 4f 29 3b 0a 09 7d 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 69 6e 74 20 67 65 74 5f O);..}.}..static.inline.int.get_
21100 63 6f 6e 6e 5f 6e 75 6d 62 65 72 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 70 6c 79 5f 68 65 61 conn_number(struct.ncp_reply_hea
21120 64 65 72 20 2a 72 70 29 0a 7b 0a 09 72 65 74 75 72 6e 20 72 70 2d 3e 63 6f 6e 6e 5f 6c 6f 77 20 der.*rp).{..return.rp->conn_low.
21140 7c 20 28 72 70 2d 3e 63 6f 6e 6e 5f 68 69 67 68 20 3c 3c 20 38 29 3b 0a 7d 0a 0a 73 74 61 74 69 |.(rp->conn_high.<<.8);.}..stati
21160 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 20 5f 5f 6e 63 70 5f 61 62 6f 72 74 5f 72 65 71 75 65 73 c.inline.void.__ncp_abort_reques
21180 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 73 74 72 t(struct.ncp_server.*server,.str
211a0 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 2c 20 69 6e 74 20 uct.ncp_request_reply.*req,.int.
211c0 65 72 72 29 0a 7b 0a 09 2f 2a 20 49 66 20 72 65 71 20 69 73 20 64 6f 6e 65 2c 20 77 65 20 67 6f err).{../*.If.req.is.done,.we.go
211e0 74 20 73 69 67 6e 61 6c 2c 20 62 75 74 20 77 65 20 61 6c 73 6f 20 72 65 63 65 69 76 65 64 20 61 t.signal,.but.we.also.received.a
21200 6e 73 77 65 72 2e 2e 2e 20 2a 2f 0a 09 73 77 69 74 63 68 20 28 72 65 71 2d 3e 73 74 61 74 75 73 nswer....*/..switch.(req->status
21220 29 20 7b 0a 09 09 63 61 73 65 20 52 51 5f 49 44 4c 45 3a 0a 09 09 63 61 73 65 20 52 51 5f 44 4f ).{...case.RQ_IDLE:...case.RQ_DO
21240 4e 45 3a 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 52 51 5f 51 55 45 55 45 44 3a 0a NE:....break;...case.RQ_QUEUED:.
21260 09 09 09 6c 69 73 74 5f 64 65 6c 5f 69 6e 69 74 28 26 72 65 71 2d 3e 72 65 71 29 3b 0a 09 09 09 ...list_del_init(&req->req);....
21280 6e 63 70 5f 66 69 6e 69 73 68 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 72 65 71 2c 20 ncp_finish_request(server,.req,.
212a0 65 72 72 29 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 52 51 5f 49 4e 50 52 4f 47 err);....break;...case.RQ_INPROG
212c0 52 45 53 53 3a 0a 09 09 09 72 65 71 2d 3e 73 74 61 74 75 73 20 3d 20 52 51 5f 41 42 41 4e 44 4f RESS:....req->status.=.RQ_ABANDO
212e0 4e 45 44 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 52 51 5f 41 42 41 4e 44 4f 4e NED;....break;...case.RQ_ABANDON
21300 45 44 3a 0a 09 09 09 62 72 65 61 6b 3b 0a 09 7d 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e ED:....break;..}.}..static.inlin
21320 65 20 76 6f 69 64 20 6e 63 70 5f 61 62 6f 72 74 5f 72 65 71 75 65 73 74 28 73 74 72 75 63 74 20 e.void.ncp_abort_request(struct.
21340 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 72 ncp_server.*server,.struct.ncp_r
21360 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 2c 20 69 6e 74 20 65 72 72 29 0a 7b 0a 09 6d equest_reply.*req,.int.err).{..m
21380 75 74 65 78 5f 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 utex_lock(&server->rcv.creq_mute
213a0 78 29 3b 0a 09 5f 5f 6e 63 70 5f 61 62 6f 72 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c x);..__ncp_abort_request(server,
213c0 20 72 65 71 2c 20 65 72 72 29 3b 0a 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 73 65 72 76 65 .req,.err);..mutex_unlock(&serve
213e0 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e r->rcv.creq_mutex);.}..static.in
21400 6c 69 6e 65 20 76 6f 69 64 20 5f 5f 6e 63 70 74 63 70 5f 61 62 6f 72 74 28 73 74 72 75 63 74 20 line.void.__ncptcp_abort(struct.
21420 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 0a 7b 0a 09 5f 5f 61 62 6f 72 74 5f 6e ncp_server.*server).{..__abort_n
21440 63 70 5f 63 6f 6e 6e 65 63 74 69 6f 6e 28 73 65 72 76 65 72 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 cp_connection(server);.}..static
21460 20 69 6e 74 20 6e 63 70 64 67 72 61 6d 5f 73 65 6e 64 28 73 74 72 75 63 74 20 73 6f 63 6b 65 74 .int.ncpdgram_send(struct.socket
21480 20 2a 73 6f 63 6b 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 .*sock,.struct.ncp_request_reply
214a0 20 2a 72 65 71 29 0a 7b 0a 09 73 74 72 75 63 74 20 6b 76 65 63 20 76 65 63 5b 33 5d 3b 0a 09 2f .*req).{..struct.kvec.vec[3];../
214c0 2a 20 73 6f 63 6b 5f 73 65 6e 64 6d 73 67 20 75 70 64 61 74 65 73 20 69 6f 76 20 70 6f 69 6e 74 *.sock_sendmsg.updates.iov.point
214e0 65 72 73 20 66 6f 72 20 75 73 20 3a 2d 28 20 2a 2f 0a 09 6d 65 6d 63 70 79 28 76 65 63 2c 20 72 ers.for.us.:-(.*/..memcpy(vec,.r
21500 65 71 2d 3e 74 78 5f 63 69 6f 76 2c 20 72 65 71 2d 3e 74 78 5f 69 6f 76 6c 65 6e 20 2a 20 73 69 eq->tx_ciov,.req->tx_iovlen.*.si
21520 7a 65 6f 66 28 76 65 63 5b 30 5d 29 29 3b 0a 09 72 65 74 75 72 6e 20 64 6f 5f 73 65 6e 64 28 73 zeof(vec[0]));..return.do_send(s
21540 6f 63 6b 2c 20 76 65 63 2c 20 72 65 71 2d 3e 74 78 5f 69 6f 76 6c 65 6e 2c 0a 09 09 20 20 20 20 ock,.vec,.req->tx_iovlen,.......
21560 20 20 20 72 65 71 2d 3e 74 78 5f 74 6f 74 61 6c 6c 65 6e 2c 20 4d 53 47 5f 44 4f 4e 54 57 41 49 ...req->tx_totallen,.MSG_DONTWAI
21580 54 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 5f 5f 6e 63 70 74 63 70 5f 74 72 79 5f T);.}..static.void.__ncptcp_try_
215a0 73 65 6e 64 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 0a send(struct.ncp_server.*server).
215c0 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 71 3b {..struct.ncp_request_reply.*rq;
215e0 0a 09 73 74 72 75 63 74 20 6b 76 65 63 20 2a 69 6f 76 3b 0a 09 73 74 72 75 63 74 20 6b 76 65 63 ..struct.kvec.*iov;..struct.kvec
21600 20 69 6f 76 63 5b 33 5d 3b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 72 71 20 3d 20 73 65 .iovc[3];..int.result;...rq.=.se
21620 72 76 65 72 2d 3e 74 78 2e 63 72 65 71 3b 0a 09 69 66 20 28 21 72 71 29 0a 09 09 72 65 74 75 72 rver->tx.creq;..if.(!rq)...retur
21640 6e 3b 0a 0a 09 2f 2a 20 73 6f 63 6b 5f 73 65 6e 64 6d 73 67 20 75 70 64 61 74 65 73 20 69 6f 76 n;.../*.sock_sendmsg.updates.iov
21660 20 70 6f 69 6e 74 65 72 73 20 66 6f 72 20 75 73 20 3a 2d 28 20 2a 2f 0a 09 6d 65 6d 63 70 79 28 .pointers.for.us.:-(.*/..memcpy(
21680 69 6f 76 63 2c 20 72 71 2d 3e 74 78 5f 63 69 6f 76 2c 20 72 71 2d 3e 74 78 5f 69 6f 76 6c 65 6e iovc,.rq->tx_ciov,.rq->tx_iovlen
216a0 20 2a 20 73 69 7a 65 6f 66 28 69 6f 76 5b 30 5d 29 29 3b 0a 09 72 65 73 75 6c 74 20 3d 20 64 6f .*.sizeof(iov[0]));..result.=.do
216c0 5f 73 65 6e 64 28 73 65 72 76 65 72 2d 3e 6e 63 70 5f 73 6f 63 6b 2c 20 69 6f 76 63 2c 20 72 71 _send(server->ncp_sock,.iovc,.rq
216e0 2d 3e 74 78 5f 69 6f 76 6c 65 6e 2c 0a 09 09 09 20 72 71 2d 3e 74 78 5f 74 6f 74 61 6c 6c 65 6e ->tx_iovlen,.....rq->tx_totallen
21700 2c 20 4d 53 47 5f 4e 4f 53 49 47 4e 41 4c 20 7c 20 4d 53 47 5f 44 4f 4e 54 57 41 49 54 29 3b 0a ,.MSG_NOSIGNAL.|.MSG_DONTWAIT);.
21720 0a 09 69 66 20 28 72 65 73 75 6c 74 20 3d 3d 20 2d 45 41 47 41 49 4e 29 0a 09 09 72 65 74 75 72 ..if.(result.==.-EAGAIN)...retur
21740 6e 3b 0a 0a 09 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 20 7b 0a 09 09 70 72 5f 65 72 72 28 n;...if.(result.<.0).{...pr_err(
21760 22 74 63 70 3a 20 53 65 6e 64 20 66 61 69 6c 65 64 3a 20 25 64 5c 6e 22 2c 20 72 65 73 75 6c 74 "tcp:.Send.failed:.%d\n",.result
21780 29 3b 0a 09 09 5f 5f 6e 63 70 5f 61 62 6f 72 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c );...__ncp_abort_request(server,
217a0 20 72 71 2c 20 72 65 73 75 6c 74 29 3b 0a 09 09 72 65 74 75 72 6e 3b 0a 09 7d 0a 09 69 66 20 28 .rq,.result);...return;..}..if.(
217c0 72 65 73 75 6c 74 20 3e 3d 20 72 71 2d 3e 74 78 5f 74 6f 74 61 6c 6c 65 6e 29 20 7b 0a 09 09 73 result.>=.rq->tx_totallen).{...s
217e0 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 20 3d 20 72 71 3b 0a 09 09 73 65 72 76 65 72 2d 3e erver->rcv.creq.=.rq;...server->
21800 74 78 2e 63 72 65 71 20 3d 20 4e 55 4c 4c 3b 0a 09 09 72 65 74 75 72 6e 3b 0a 09 7d 0a 09 72 71 tx.creq.=.NULL;...return;..}..rq
21820 2d 3e 74 78 5f 74 6f 74 61 6c 6c 65 6e 20 2d 3d 20 72 65 73 75 6c 74 3b 0a 09 69 6f 76 20 3d 20 ->tx_totallen.-=.result;..iov.=.
21840 72 71 2d 3e 74 78 5f 63 69 6f 76 3b 0a 09 77 68 69 6c 65 20 28 69 6f 76 2d 3e 69 6f 76 5f 6c 65 rq->tx_ciov;..while.(iov->iov_le
21860 6e 20 3c 3d 20 72 65 73 75 6c 74 29 20 7b 0a 09 09 72 65 73 75 6c 74 20 2d 3d 20 69 6f 76 2d 3e n.<=.result).{...result.-=.iov->
21880 69 6f 76 5f 6c 65 6e 3b 0a 09 09 69 6f 76 2b 2b 3b 0a 09 09 72 71 2d 3e 74 78 5f 69 6f 76 6c 65 iov_len;...iov++;...rq->tx_iovle
218a0 6e 2d 2d 3b 0a 09 7d 0a 09 69 6f 76 2d 3e 69 6f 76 5f 62 61 73 65 20 2b 3d 20 72 65 73 75 6c 74 n--;..}..iov->iov_base.+=.result
218c0 3b 0a 09 69 6f 76 2d 3e 69 6f 76 5f 6c 65 6e 20 2d 3d 20 72 65 73 75 6c 74 3b 0a 09 72 71 2d 3e ;..iov->iov_len.-=.result;..rq->
218e0 74 78 5f 63 69 6f 76 20 3d 20 69 6f 76 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 tx_ciov.=.iov;.}..static.inline.
21900 76 6f 69 64 20 6e 63 70 5f 69 6e 69 74 5f 68 65 61 64 65 72 28 73 74 72 75 63 74 20 6e 63 70 5f void.ncp_init_header(struct.ncp_
21920 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 server.*server,.struct.ncp_reque
21940 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 st_reply.*req,.struct.ncp_reques
21960 74 5f 68 65 61 64 65 72 20 2a 68 29 0a 7b 0a 09 72 65 71 2d 3e 73 74 61 74 75 73 20 3d 20 52 51 t_header.*h).{..req->status.=.RQ
21980 5f 49 4e 50 52 4f 47 52 45 53 53 3b 0a 09 68 2d 3e 63 6f 6e 6e 5f 6c 6f 77 20 3d 20 73 65 72 76 _INPROGRESS;..h->conn_low.=.serv
219a0 65 72 2d 3e 63 6f 6e 6e 65 63 74 69 6f 6e 3b 0a 09 68 2d 3e 63 6f 6e 6e 5f 68 69 67 68 20 3d 20 er->connection;..h->conn_high.=.
219c0 73 65 72 76 65 72 2d 3e 63 6f 6e 6e 65 63 74 69 6f 6e 20 3e 3e 20 38 3b 0a 09 68 2d 3e 73 65 71 server->connection.>>.8;..h->seq
219e0 75 65 6e 63 65 20 3d 20 2b 2b 73 65 72 76 65 72 2d 3e 73 65 71 75 65 6e 63 65 3b 0a 7d 0a 09 0a uence.=.++server->sequence;.}...
21a00 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 64 67 72 61 6d 5f 73 74 61 72 74 5f 72 65 71 75 65 static.void.ncpdgram_start_reque
21a20 73 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 73 74 st(struct.ncp_server.*server,.st
21a40 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 29 0a 7b 0a 09 ruct.ncp_request_reply.*req).{..
21a60 73 69 7a 65 5f 74 20 73 69 67 6e 6c 65 6e 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 size_t.signlen;..struct.ncp_requ
21a80 65 73 74 5f 68 65 61 64 65 72 2a 20 68 3b 0a 09 0a 09 72 65 71 2d 3e 74 78 5f 63 69 6f 76 20 3d est_header*.h;....req->tx_ciov.=
21aa0 20 72 65 71 2d 3e 74 78 5f 69 6f 76 20 2b 20 31 3b 0a 0a 09 68 20 3d 20 72 65 71 2d 3e 74 78 5f .req->tx_iov.+.1;...h.=.req->tx_
21ac0 69 6f 76 5b 31 5d 2e 69 6f 76 5f 62 61 73 65 3b 0a 09 6e 63 70 5f 69 6e 69 74 5f 68 65 61 64 65 iov[1].iov_base;..ncp_init_heade
21ae0 72 28 73 65 72 76 65 72 2c 20 72 65 71 2c 20 68 29 3b 0a 09 73 69 67 6e 6c 65 6e 20 3d 20 73 69 r(server,.req,.h);..signlen.=.si
21b00 67 6e 5f 70 61 63 6b 65 74 28 73 65 72 76 65 72 2c 20 72 65 71 2d 3e 74 78 5f 69 6f 76 5b 31 5d gn_packet(server,.req->tx_iov[1]
21b20 2e 69 6f 76 5f 62 61 73 65 20 2b 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 .iov_base.+.sizeof(struct.ncp_re
21b40 71 75 65 73 74 5f 68 65 61 64 65 72 29 20 2d 20 31 2c 20 0a 09 09 09 72 65 71 2d 3e 74 78 5f 69 quest_header).-.1,.....req->tx_i
21b60 6f 76 5b 31 5d 2e 69 6f 76 5f 6c 65 6e 20 2d 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 6e 63 ov[1].iov_len.-.sizeof(struct.nc
21b80 70 5f 72 65 71 75 65 73 74 5f 68 65 61 64 65 72 29 20 2b 20 31 2c 0a 09 09 09 63 70 75 5f 74 6f p_request_header).+.1,....cpu_to
21ba0 5f 6c 65 33 32 28 72 65 71 2d 3e 74 78 5f 74 6f 74 61 6c 6c 65 6e 29 2c 20 72 65 71 2d 3e 73 69 _le32(req->tx_totallen),.req->si
21bc0 67 6e 29 3b 0a 09 69 66 20 28 73 69 67 6e 6c 65 6e 29 20 7b 0a 09 09 72 65 71 2d 3e 74 78 5f 63 gn);..if.(signlen).{...req->tx_c
21be0 69 6f 76 5b 31 5d 2e 69 6f 76 5f 62 61 73 65 20 3d 20 72 65 71 2d 3e 73 69 67 6e 3b 0a 09 09 72 iov[1].iov_base.=.req->sign;...r
21c00 65 71 2d 3e 74 78 5f 63 69 6f 76 5b 31 5d 2e 69 6f 76 5f 6c 65 6e 20 3d 20 73 69 67 6e 6c 65 6e eq->tx_ciov[1].iov_len.=.signlen
21c20 3b 0a 09 09 72 65 71 2d 3e 74 78 5f 69 6f 76 6c 65 6e 20 2b 3d 20 31 3b 0a 09 09 72 65 71 2d 3e ;...req->tx_iovlen.+=.1;...req->
21c40 74 78 5f 74 6f 74 61 6c 6c 65 6e 20 2b 3d 20 73 69 67 6e 6c 65 6e 3b 0a 09 7d 0a 09 73 65 72 76 tx_totallen.+=.signlen;..}..serv
21c60 65 72 2d 3e 72 63 76 2e 63 72 65 71 20 3d 20 72 65 71 3b 0a 09 73 65 72 76 65 72 2d 3e 74 69 6d er->rcv.creq.=.req;..server->tim
21c80 65 6f 75 74 5f 6c 61 73 74 20 3d 20 73 65 72 76 65 72 2d 3e 6d 2e 74 69 6d 65 5f 6f 75 74 3b 0a eout_last.=.server->m.time_out;.
21ca0 09 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 72 65 74 72 69 65 73 20 3d 20 73 65 72 76 65 .server->timeout_retries.=.serve
21cc0 72 2d 3e 6d 2e 72 65 74 72 79 5f 63 6f 75 6e 74 3b 0a 09 6e 63 70 64 67 72 61 6d 5f 73 65 6e 64 r->m.retry_count;..ncpdgram_send
21ce0 28 73 65 72 76 65 72 2d 3e 6e 63 70 5f 73 6f 63 6b 2c 20 72 65 71 29 3b 0a 09 6d 6f 64 5f 74 69 (server->ncp_sock,.req);..mod_ti
21d00 6d 65 72 28 26 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 74 6d 2c 20 6a 69 66 66 69 65 73 mer(&server->timeout_tm,.jiffies
21d20 20 2b 20 73 65 72 76 65 72 2d 3e 6d 2e 74 69 6d 65 5f 6f 75 74 29 3b 0a 7d 0a 0a 23 64 65 66 69 .+.server->m.time_out);.}..#defi
21d40 6e 65 20 4e 43 50 5f 54 43 50 5f 58 4d 49 54 5f 4d 41 47 49 43 09 28 30 78 34 34 36 44 36 34 35 ne.NCP_TCP_XMIT_MAGIC.(0x446D645
21d60 34 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 54 43 50 5f 58 4d 49 54 5f 56 45 52 53 49 4f 4e 09 4).#define.NCP_TCP_XMIT_VERSION.
21d80 28 31 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 54 43 50 5f 52 43 56 44 5f 4d 41 47 49 43 09 28 (1).#define.NCP_TCP_RCVD_MAGIC.(
21da0 30 78 37 34 34 45 36 33 35 30 29 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 74 63 70 5f 0x744E6350)..static.void.ncptcp_
21dc0 73 74 61 72 74 5f 72 65 71 75 65 73 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 start_request(struct.ncp_server.
21de0 2a 73 65 72 76 65 72 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c *server,.struct.ncp_request_repl
21e00 79 20 2a 72 65 71 29 0a 7b 0a 09 73 69 7a 65 5f 74 20 73 69 67 6e 6c 65 6e 3b 0a 09 73 74 72 75 y.*req).{..size_t.signlen;..stru
21e20 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 68 65 61 64 65 72 2a 20 68 3b 0a 0a 09 72 65 71 2d ct.ncp_request_header*.h;...req-
21e40 3e 74 78 5f 63 69 6f 76 20 3d 20 72 65 71 2d 3e 74 78 5f 69 6f 76 3b 0a 09 68 20 3d 20 72 65 71 >tx_ciov.=.req->tx_iov;..h.=.req
21e60 2d 3e 74 78 5f 69 6f 76 5b 31 5d 2e 69 6f 76 5f 62 61 73 65 3b 0a 09 6e 63 70 5f 69 6e 69 74 5f ->tx_iov[1].iov_base;..ncp_init_
21e80 68 65 61 64 65 72 28 73 65 72 76 65 72 2c 20 72 65 71 2c 20 68 29 3b 0a 09 73 69 67 6e 6c 65 6e header(server,.req,.h);..signlen
21ea0 20 3d 20 73 69 67 6e 5f 70 61 63 6b 65 74 28 73 65 72 76 65 72 2c 20 72 65 71 2d 3e 74 78 5f 69 .=.sign_packet(server,.req->tx_i
21ec0 6f 76 5b 31 5d 2e 69 6f 76 5f 62 61 73 65 20 2b 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 6e ov[1].iov_base.+.sizeof(struct.n
21ee0 63 70 5f 72 65 71 75 65 73 74 5f 68 65 61 64 65 72 29 20 2d 20 31 2c 0a 09 09 09 72 65 71 2d 3e cp_request_header).-.1,....req->
21f00 74 78 5f 69 6f 76 5b 31 5d 2e 69 6f 76 5f 6c 65 6e 20 2d 20 73 69 7a 65 6f 66 28 73 74 72 75 63 tx_iov[1].iov_len.-.sizeof(struc
21f20 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 68 65 61 64 65 72 29 20 2b 20 31 2c 0a 09 09 09 63 70 t.ncp_request_header).+.1,....cp
21f40 75 5f 74 6f 5f 62 65 33 32 28 72 65 71 2d 3e 74 78 5f 74 6f 74 61 6c 6c 65 6e 20 2b 20 32 34 29 u_to_be32(req->tx_totallen.+.24)
21f60 2c 20 72 65 71 2d 3e 73 69 67 6e 20 2b 20 34 29 20 2b 20 31 36 3b 0a 0a 09 72 65 71 2d 3e 73 69 ,.req->sign.+.4).+.16;...req->si
21f80 67 6e 5b 30 5d 20 3d 20 68 74 6f 6e 6c 28 4e 43 50 5f 54 43 50 5f 58 4d 49 54 5f 4d 41 47 49 43 gn[0].=.htonl(NCP_TCP_XMIT_MAGIC
21fa0 29 3b 0a 09 72 65 71 2d 3e 73 69 67 6e 5b 31 5d 20 3d 20 68 74 6f 6e 6c 28 72 65 71 2d 3e 74 78 );..req->sign[1].=.htonl(req->tx
21fc0 5f 74 6f 74 61 6c 6c 65 6e 20 2b 20 73 69 67 6e 6c 65 6e 29 3b 0a 09 72 65 71 2d 3e 73 69 67 6e _totallen.+.signlen);..req->sign
21fe0 5b 32 5d 20 3d 20 68 74 6f 6e 6c 28 4e 43 50 5f 54 43 50 5f 58 4d 49 54 5f 56 45 52 53 49 4f 4e [2].=.htonl(NCP_TCP_XMIT_VERSION
22000 29 3b 0a 09 72 65 71 2d 3e 73 69 67 6e 5b 33 5d 20 3d 20 68 74 6f 6e 6c 28 72 65 71 2d 3e 64 61 );..req->sign[3].=.htonl(req->da
22020 74 61 6c 65 6e 20 2b 20 38 29 3b 0a 09 72 65 71 2d 3e 74 78 5f 69 6f 76 5b 30 5d 2e 69 6f 76 5f talen.+.8);..req->tx_iov[0].iov_
22040 62 61 73 65 20 3d 20 72 65 71 2d 3e 73 69 67 6e 3b 0a 09 72 65 71 2d 3e 74 78 5f 69 6f 76 5b 30 base.=.req->sign;..req->tx_iov[0
22060 5d 2e 69 6f 76 5f 6c 65 6e 20 3d 20 73 69 67 6e 6c 65 6e 3b 0a 09 72 65 71 2d 3e 74 78 5f 69 6f ].iov_len.=.signlen;..req->tx_io
22080 76 6c 65 6e 20 2b 3d 20 31 3b 0a 09 72 65 71 2d 3e 74 78 5f 74 6f 74 61 6c 6c 65 6e 20 2b 3d 20 vlen.+=.1;..req->tx_totallen.+=.
220a0 73 69 67 6e 6c 65 6e 3b 0a 0a 09 73 65 72 76 65 72 2d 3e 74 78 2e 63 72 65 71 20 3d 20 72 65 71 signlen;...server->tx.creq.=.req
220c0 3b 0a 09 5f 5f 6e 63 70 74 63 70 5f 74 72 79 5f 73 65 6e 64 28 73 65 72 76 65 72 29 3b 0a 7d 0a ;..__ncptcp_try_send(server);.}.
220e0 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 20 5f 5f 6e 63 70 5f 73 74 61 72 74 5f .static.inline.void.__ncp_start_
22100 72 65 71 75 65 73 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 request(struct.ncp_server.*serve
22120 72 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 r,.struct.ncp_request_reply.*req
22140 29 0a 7b 0a 09 2f 2a 20 77 65 20 63 6f 70 79 20 74 68 65 20 64 61 74 61 20 73 6f 20 74 68 61 74 ).{../*.we.copy.the.data.so.that
22160 20 77 65 20 64 6f 20 6e 6f 74 20 64 65 70 65 6e 64 20 6f 6e 20 74 68 65 20 63 61 6c 6c 65 72 0a .we.do.not.depend.on.the.caller.
22180 09 20 20 20 73 74 61 79 69 6e 67 20 61 6c 69 76 65 20 2a 2f 0a 09 6d 65 6d 63 70 79 28 73 65 72 ....staying.alive.*/..memcpy(ser
221a0 76 65 72 2d 3e 74 78 62 75 66 2c 20 72 65 71 2d 3e 74 78 5f 69 6f 76 5b 31 5d 2e 69 6f 76 5f 62 ver->txbuf,.req->tx_iov[1].iov_b
221c0 61 73 65 2c 20 72 65 71 2d 3e 74 78 5f 69 6f 76 5b 31 5d 2e 69 6f 76 5f 6c 65 6e 29 3b 0a 09 72 ase,.req->tx_iov[1].iov_len);..r
221e0 65 71 2d 3e 74 78 5f 69 6f 76 5b 31 5d 2e 69 6f 76 5f 62 61 73 65 20 3d 20 73 65 72 76 65 72 2d eq->tx_iov[1].iov_base.=.server-
22200 3e 74 78 62 75 66 3b 0a 0a 09 69 66 20 28 73 65 72 76 65 72 2d 3e 6e 63 70 5f 73 6f 63 6b 2d 3e >txbuf;...if.(server->ncp_sock->
22220 74 79 70 65 20 3d 3d 20 53 4f 43 4b 5f 53 54 52 45 41 4d 29 0a 09 09 6e 63 70 74 63 70 5f 73 74 type.==.SOCK_STREAM)...ncptcp_st
22240 61 72 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 72 65 71 29 3b 0a 09 65 6c 73 65 0a art_request(server,.req);..else.
22260 09 09 6e 63 70 64 67 72 61 6d 5f 73 74 61 72 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c ..ncpdgram_start_request(server,
22280 20 72 65 71 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 61 64 64 5f 72 65 71 .req);.}..static.int.ncp_add_req
222a0 75 65 73 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 uest(struct.ncp_server.*server,.
222c0 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 29 0a 7b struct.ncp_request_reply.*req).{
222e0 0a 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d ..mutex_lock(&server->rcv.creq_m
22300 75 74 65 78 29 3b 0a 09 69 66 20 28 21 6e 63 70 5f 63 6f 6e 6e 5f 76 61 6c 69 64 28 73 65 72 76 utex);..if.(!ncp_conn_valid(serv
22320 65 72 29 29 20 7b 0a 09 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 er)).{...mutex_unlock(&server->r
22340 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 09 09 70 72 5f 65 72 72 28 22 74 63 70 3a 20 53 cv.creq_mutex);...pr_err("tcp:.S
22360 65 72 76 65 72 20 64 69 65 64 5c 6e 22 29 3b 0a 09 09 72 65 74 75 72 6e 20 2d 45 49 4f 3b 0a 09 erver.died\n");...return.-EIO;..
22380 7d 0a 09 6e 63 70 5f 72 65 71 5f 67 65 74 28 72 65 71 29 3b 0a 09 69 66 20 28 73 65 72 76 65 72 }..ncp_req_get(req);..if.(server
223a0 2d 3e 74 78 2e 63 72 65 71 20 7c 7c 20 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 29 20 7b ->tx.creq.||.server->rcv.creq).{
223c0 0a 09 09 72 65 71 2d 3e 73 74 61 74 75 73 20 3d 20 52 51 5f 51 55 45 55 45 44 3b 0a 09 09 6c 69 ...req->status.=.RQ_QUEUED;...li
223e0 73 74 5f 61 64 64 5f 74 61 69 6c 28 26 72 65 71 2d 3e 72 65 71 2c 20 26 73 65 72 76 65 72 2d 3e st_add_tail(&req->req,.&server->
22400 74 78 2e 72 65 71 75 65 73 74 73 29 3b 0a 09 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 73 65 tx.requests);...mutex_unlock(&se
22420 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 09 09 72 65 74 75 72 6e 20 rver->rcv.creq_mutex);...return.
22440 30 3b 0a 09 7d 0a 09 5f 5f 6e 63 70 5f 73 74 61 72 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 0;..}..__ncp_start_request(serve
22460 72 2c 20 72 65 71 29 3b 0a 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e r,.req);..mutex_unlock(&server->
22480 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 73 rcv.creq_mutex);..return.0;.}..s
224a0 74 61 74 69 63 20 76 6f 69 64 20 5f 5f 6e 63 70 5f 6e 65 78 74 5f 72 65 71 75 65 73 74 28 73 74 tatic.void.__ncp_next_request(st
224c0 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 0a 7b 0a 09 73 74 72 75 ruct.ncp_server.*server).{..stru
224e0 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 3b 0a 0a 09 73 65 72 ct.ncp_request_reply.*req;...ser
22500 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 20 3d 20 4e 55 4c 4c 3b 0a 09 69 66 20 28 6c 69 73 74 5f ver->rcv.creq.=.NULL;..if.(list_
22520 65 6d 70 74 79 28 26 73 65 72 76 65 72 2d 3e 74 78 2e 72 65 71 75 65 73 74 73 29 29 20 7b 0a 09 empty(&server->tx.requests)).{..
22540 09 72 65 74 75 72 6e 3b 0a 09 7d 0a 09 72 65 71 20 3d 20 6c 69 73 74 5f 65 6e 74 72 79 28 73 65 .return;..}..req.=.list_entry(se
22560 72 76 65 72 2d 3e 74 78 2e 72 65 71 75 65 73 74 73 2e 6e 65 78 74 2c 20 73 74 72 75 63 74 20 6e rver->tx.requests.next,.struct.n
22580 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 2c 20 72 65 71 29 3b 0a 09 6c 69 73 74 5f 64 65 cp_request_reply,.req);..list_de
225a0 6c 5f 69 6e 69 74 28 26 72 65 71 2d 3e 72 65 71 29 3b 0a 09 5f 5f 6e 63 70 5f 73 74 61 72 74 5f l_init(&req->req);..__ncp_start_
225c0 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 72 65 71 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 request(server,.req);.}..static.
225e0 76 6f 69 64 20 69 6e 66 6f 5f 73 65 72 76 65 72 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 void.info_server(struct.ncp_serv
22600 65 72 20 2a 73 65 72 76 65 72 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 69 64 2c 20 63 6f 6e er.*server,.unsigned.int.id,.con
22620 73 74 20 76 6f 69 64 20 2a 20 64 61 74 61 2c 20 73 69 7a 65 5f 74 20 6c 65 6e 29 0a 7b 0a 09 69 st.void.*.data,.size_t.len).{..i
22640 66 20 28 73 65 72 76 65 72 2d 3e 69 6e 66 6f 5f 73 6f 63 6b 29 20 7b 0a 09 09 73 74 72 75 63 74 f.(server->info_sock).{...struct
22660 20 6b 76 65 63 20 69 6f 76 5b 32 5d 3b 0a 09 09 5f 5f 62 65 33 32 20 68 64 72 5b 32 5d 3b 0a 09 .kvec.iov[2];...__be32.hdr[2];..
22680 0a 09 09 68 64 72 5b 30 5d 20 3d 20 63 70 75 5f 74 6f 5f 62 65 33 32 28 6c 65 6e 20 2b 20 38 29 ...hdr[0].=.cpu_to_be32(len.+.8)
226a0 3b 0a 09 09 68 64 72 5b 31 5d 20 3d 20 63 70 75 5f 74 6f 5f 62 65 33 32 28 69 64 29 3b 0a 09 0a ;...hdr[1].=.cpu_to_be32(id);...
226c0 09 09 69 6f 76 5b 30 5d 2e 69 6f 76 5f 62 61 73 65 20 3d 20 68 64 72 3b 0a 09 09 69 6f 76 5b 30 ..iov[0].iov_base.=.hdr;...iov[0
226e0 5d 2e 69 6f 76 5f 6c 65 6e 20 3d 20 38 3b 0a 09 09 69 6f 76 5b 31 5d 2e 69 6f 76 5f 62 61 73 65 ].iov_len.=.8;...iov[1].iov_base
22700 20 3d 20 28 76 6f 69 64 20 2a 29 20 64 61 74 61 3b 0a 09 09 69 6f 76 5b 31 5d 2e 69 6f 76 5f 6c .=.(void.*).data;...iov[1].iov_l
22720 65 6e 20 3d 20 6c 65 6e 3b 0a 0a 09 09 64 6f 5f 73 65 6e 64 28 73 65 72 76 65 72 2d 3e 69 6e 66 en.=.len;....do_send(server->inf
22740 6f 5f 73 6f 63 6b 2c 20 69 6f 76 2c 20 32 2c 20 6c 65 6e 20 2b 20 38 2c 20 4d 53 47 5f 4e 4f 53 o_sock,.iov,.2,.len.+.8,.MSG_NOS
22760 49 47 4e 41 4c 29 3b 0a 09 7d 0a 7d 0a 0a 76 6f 69 64 20 6e 63 70 64 67 72 61 6d 5f 72 63 76 5f IGNAL);..}.}..void.ncpdgram_rcv_
22780 70 72 6f 63 28 73 74 72 75 63 74 20 77 6f 72 6b 5f 73 74 72 75 63 74 20 2a 77 6f 72 6b 29 0a 7b proc(struct.work_struct.*work).{
227a0 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 0a 09 09 ..struct.ncp_server.*server.=...
227c0 63 6f 6e 74 61 69 6e 65 72 5f 6f 66 28 77 6f 72 6b 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 73 65 container_of(work,.struct.ncp_se
227e0 72 76 65 72 2c 20 72 63 76 2e 74 71 29 3b 0a 09 73 74 72 75 63 74 20 73 6f 63 6b 65 74 2a 20 73 rver,.rcv.tq);..struct.socket*.s
22800 6f 63 6b 3b 0a 09 0a 09 73 6f 63 6b 20 3d 20 73 65 72 76 65 72 2d 3e 6e 63 70 5f 73 6f 63 6b 3b ock;....sock.=.server->ncp_sock;
22820 0a 09 0a 09 77 68 69 6c 65 20 28 31 29 20 7b 0a 09 09 73 74 72 75 63 74 20 6e 63 70 5f 72 65 70 ....while.(1).{...struct.ncp_rep
22840 6c 79 5f 68 65 61 64 65 72 20 72 65 70 6c 79 3b 0a 09 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a ly_header.reply;...int.result;..
22860 09 09 72 65 73 75 6c 74 20 3d 20 5f 72 65 63 76 28 73 6f 63 6b 2c 20 26 72 65 70 6c 79 2c 20 73 ..result.=._recv(sock,.&reply,.s
22880 69 7a 65 6f 66 28 72 65 70 6c 79 29 2c 20 4d 53 47 5f 50 45 45 4b 20 7c 20 4d 53 47 5f 44 4f 4e izeof(reply),.MSG_PEEK.|.MSG_DON
228a0 54 57 41 49 54 29 3b 0a 09 09 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 20 7b 0a 09 09 09 62 TWAIT);...if.(result.<.0).{....b
228c0 72 65 61 6b 3b 0a 09 09 7d 0a 09 09 69 66 20 28 72 65 73 75 6c 74 20 3e 3d 20 73 69 7a 65 6f 66 reak;...}...if.(result.>=.sizeof
228e0 28 72 65 70 6c 79 29 29 20 7b 0a 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 (reply)).{....struct.ncp_request
22900 5f 72 65 70 6c 79 20 2a 72 65 71 3b 0a 09 0a 09 09 09 69 66 20 28 72 65 70 6c 79 2e 74 79 70 65 _reply.*req;......if.(reply.type
22920 20 3d 3d 20 4e 43 50 5f 57 41 54 43 48 44 4f 47 29 20 7b 0a 09 09 09 09 75 6e 73 69 67 6e 65 64 .==.NCP_WATCHDOG).{.....unsigned
22940 20 63 68 61 72 20 62 75 66 5b 31 30 5d 3b 0a 0a 09 09 09 09 69 66 20 28 73 65 72 76 65 72 2d 3e .char.buf[10];......if.(server->
22960 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d 20 67 65 74 5f 63 6f 6e 6e 5f 6e 75 6d 62 65 72 28 26 72 connection.!=.get_conn_number(&r
22980 65 70 6c 79 29 29 20 7b 0a 09 09 09 09 09 67 6f 74 6f 20 64 72 6f 70 3b 0a 09 09 09 09 7d 0a 09 eply)).{......goto.drop;.....}..
229a0 09 09 09 72 65 73 75 6c 74 20 3d 20 5f 72 65 63 76 28 73 6f 63 6b 2c 20 62 75 66 2c 20 73 69 7a ...result.=._recv(sock,.buf,.siz
229c0 65 6f 66 28 62 75 66 29 2c 20 4d 53 47 5f 44 4f 4e 54 57 41 49 54 29 3b 0a 09 09 09 09 69 66 20 eof(buf),.MSG_DONTWAIT);.....if.
229e0 28 72 65 73 75 6c 74 20 3c 20 30 29 20 7b 0a 09 09 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 (result.<.0).{......ncp_dbg(1,."
22a00 72 65 63 76 20 66 61 69 6c 65 64 20 77 69 74 68 20 25 64 5c 6e 22 2c 20 72 65 73 75 6c 74 29 3b recv.failed.with.%d\n",.result);
22a20 0a 09 09 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 09 7d 0a 09 09 09 09 69 66 20 28 72 65 ......continue;.....}.....if.(re
22a40 73 75 6c 74 20 3c 20 31 30 29 20 7b 0a 09 09 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 74 6f sult.<.10).{......ncp_dbg(1,."to
22a60 6f 20 73 68 6f 72 74 20 28 25 75 29 20 77 61 74 63 68 64 6f 67 20 70 61 63 6b 65 74 5c 6e 22 2c o.short.(%u).watchdog.packet\n",
22a80 20 72 65 73 75 6c 74 29 3b 0a 09 09 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 09 7d 0a 09 .result);......continue;.....}..
22aa0 09 09 09 69 66 20 28 62 75 66 5b 39 5d 20 21 3d 20 27 3f 27 29 20 7b 0a 09 09 09 09 09 6e 63 70 ...if.(buf[9].!=.'?').{......ncp
22ac0 5f 64 62 67 28 31 2c 20 22 62 61 64 20 73 69 67 6e 61 74 75 72 65 20 28 25 30 32 58 29 20 69 6e _dbg(1,."bad.signature.(%02X).in
22ae0 20 77 61 74 63 68 64 6f 67 20 70 61 63 6b 65 74 5c 6e 22 2c 20 62 75 66 5b 39 5d 29 3b 0a 09 09 .watchdog.packet\n",.buf[9]);...
22b00 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 09 7d 0a 09 09 09 09 62 75 66 5b 39 5d 20 3d 20 ...continue;.....}.....buf[9].=.
22b20 27 59 27 3b 0a 09 09 09 09 5f 73 65 6e 64 28 73 6f 63 6b 2c 20 62 75 66 2c 20 73 69 7a 65 6f 66 'Y';....._send(sock,.buf,.sizeof
22b40 28 62 75 66 29 29 3b 0a 09 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 7d 0a 09 09 09 69 66 (buf));.....continue;....}....if
22b60 20 28 72 65 70 6c 79 2e 74 79 70 65 20 21 3d 20 4e 43 50 5f 50 4f 53 49 54 49 56 45 5f 41 43 4b .(reply.type.!=.NCP_POSITIVE_ACK
22b80 20 26 26 20 72 65 70 6c 79 2e 74 79 70 65 20 21 3d 20 4e 43 50 5f 52 45 50 4c 59 29 20 7b 0a 09 .&&.reply.type.!=.NCP_REPLY).{..
22ba0 09 09 09 72 65 73 75 6c 74 20 3d 20 5f 72 65 63 76 28 73 6f 63 6b 2c 20 73 65 72 76 65 72 2d 3e ...result.=._recv(sock,.server->
22bc0 75 6e 65 78 70 65 63 74 65 64 5f 70 61 63 6b 65 74 2e 64 61 74 61 2c 20 73 69 7a 65 6f 66 28 73 unexpected_packet.data,.sizeof(s
22be0 65 72 76 65 72 2d 3e 75 6e 65 78 70 65 63 74 65 64 5f 70 61 63 6b 65 74 2e 64 61 74 61 29 2c 20 erver->unexpected_packet.data),.
22c00 4d 53 47 5f 44 4f 4e 54 57 41 49 54 29 3b 0a 09 09 09 09 69 66 20 28 72 65 73 75 6c 74 20 3c 20 MSG_DONTWAIT);.....if.(result.<.
22c20 30 29 20 7b 0a 09 09 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 09 7d 0a 09 09 09 09 69 6e 0).{......continue;.....}.....in
22c40 66 6f 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 2c 20 30 2c 20 73 65 72 76 65 72 2d 3e 75 6e 65 fo_server(server,.0,.server->une
22c60 78 70 65 63 74 65 64 5f 70 61 63 6b 65 74 2e 64 61 74 61 2c 20 72 65 73 75 6c 74 29 3b 0a 09 09 xpected_packet.data,.result);...
22c80 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 7d 0a 09 09 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 ..continue;....}....mutex_lock(&
22ca0 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 09 09 09 72 65 71 20 server->rcv.creq_mutex);....req.
22cc0 3d 20 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 3b 0a 09 09 09 69 66 20 28 72 65 71 20 26 =.server->rcv.creq;....if.(req.&
22ce0 26 20 28 72 65 71 2d 3e 74 78 5f 74 79 70 65 20 3d 3d 20 4e 43 50 5f 41 4c 4c 4f 43 5f 53 4c 4f &.(req->tx_type.==.NCP_ALLOC_SLO
22d00 54 5f 52 45 51 55 45 53 54 20 7c 7c 20 28 73 65 72 76 65 72 2d 3e 73 65 71 75 65 6e 63 65 20 3d T_REQUEST.||.(server->sequence.=
22d20 3d 20 72 65 70 6c 79 2e 73 65 71 75 65 6e 63 65 20 26 26 20 0a 09 09 09 09 09 73 65 72 76 65 72 =.reply.sequence.&&.......server
22d40 2d 3e 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d 3d 20 67 65 74 5f 63 6f 6e 6e 5f 6e 75 6d 62 65 72 28 ->connection.==.get_conn_number(
22d60 26 72 65 70 6c 79 29 29 29 29 20 7b 0a 09 09 09 09 69 66 20 28 72 65 70 6c 79 2e 74 79 70 65 20 &reply)))).{.....if.(reply.type.
22d80 3d 3d 20 4e 43 50 5f 50 4f 53 49 54 49 56 45 5f 41 43 4b 29 20 7b 0a 09 09 09 09 09 73 65 72 76 ==.NCP_POSITIVE_ACK).{......serv
22da0 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 72 65 74 72 69 65 73 20 3d 20 73 65 72 76 65 72 2d 3e 6d 2e er->timeout_retries.=.server->m.
22dc0 72 65 74 72 79 5f 63 6f 75 6e 74 3b 0a 09 09 09 09 09 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 retry_count;......server->timeou
22de0 74 5f 6c 61 73 74 20 3d 20 4e 43 50 5f 4d 41 58 5f 52 50 43 5f 54 49 4d 45 4f 55 54 3b 0a 09 09 t_last.=.NCP_MAX_RPC_TIMEOUT;...
22e00 09 09 09 6d 6f 64 5f 74 69 6d 65 72 28 26 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 74 6d ...mod_timer(&server->timeout_tm
22e20 2c 20 6a 69 66 66 69 65 73 20 2b 20 4e 43 50 5f 4d 41 58 5f 52 50 43 5f 54 49 4d 45 4f 55 54 29 ,.jiffies.+.NCP_MAX_RPC_TIMEOUT)
22e40 3b 0a 09 09 09 09 7d 20 65 6c 73 65 20 69 66 20 28 72 65 70 6c 79 2e 74 79 70 65 20 3d 3d 20 4e ;.....}.else.if.(reply.type.==.N
22e60 43 50 5f 52 45 50 4c 59 29 20 7b 0a 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 5f 72 65 63 76 28 CP_REPLY).{......result.=._recv(
22e80 73 6f 63 6b 2c 20 73 65 72 76 65 72 2d 3e 72 78 62 75 66 2c 20 72 65 71 2d 3e 64 61 74 61 6c 65 sock,.server->rxbuf,.req->datale
22ea0 6e 2c 20 4d 53 47 5f 44 4f 4e 54 57 41 49 54 29 3b 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f n,.MSG_DONTWAIT);.#ifdef.CONFIG_
22ec0 4e 43 50 46 53 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 0a 09 09 09 09 09 69 66 20 28 72 65 NCPFS_PACKET_SIGNING......if.(re
22ee0 73 75 6c 74 20 3e 3d 20 30 20 26 26 20 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 61 63 74 69 76 65 sult.>=.0.&&.server->sign_active
22f00 20 26 26 20 72 65 71 2d 3e 74 78 5f 74 79 70 65 20 21 3d 20 4e 43 50 5f 44 45 41 4c 4c 4f 43 5f .&&.req->tx_type.!=.NCP_DEALLOC_
22f20 53 4c 4f 54 5f 52 45 51 55 45 53 54 29 20 7b 0a 09 09 09 09 09 09 69 66 20 28 72 65 73 75 6c 74 SLOT_REQUEST).{.......if.(result
22f40 20 3c 20 38 20 2b 20 38 29 20 7b 0a 09 09 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 49 4f .<.8.+.8).{........result.=.-EIO
22f60 3b 0a 09 09 09 09 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 09 09 09 09 75 6e 73 69 67 6e 65 64 ;.......}.else.{........unsigned
22f80 20 69 6e 74 20 68 64 72 6c 3b 0a 09 09 09 09 09 09 09 0a 09 09 09 09 09 09 09 72 65 73 75 6c 74 .int.hdrl;................result
22fa0 20 2d 3d 20 38 3b 0a 09 09 09 09 09 09 09 68 64 72 6c 20 3d 20 73 6f 63 6b 2d 3e 73 6b 2d 3e 73 .-=.8;........hdrl.=.sock->sk->s
22fc0 6b 5f 66 61 6d 69 6c 79 20 3d 3d 20 41 46 5f 49 4e 45 54 20 3f 20 38 20 3a 20 36 3b 0a 09 09 09 k_family.==.AF_INET.?.8.:.6;....
22fe0 09 09 09 09 69 66 20 28 73 69 67 6e 5f 76 65 72 69 66 79 5f 72 65 70 6c 79 28 73 65 72 76 65 72 ....if.(sign_verify_reply(server
23000 2c 20 73 65 72 76 65 72 2d 3e 72 78 62 75 66 20 2b 20 68 64 72 6c 2c 20 72 65 73 75 6c 74 20 2d ,.server->rxbuf.+.hdrl,.result.-
23020 20 68 64 72 6c 2c 20 63 70 75 5f 74 6f 5f 6c 65 33 32 28 72 65 73 75 6c 74 29 2c 20 73 65 72 76 .hdrl,.cpu_to_le32(result),.serv
23040 65 72 2d 3e 72 78 62 75 66 20 2b 20 72 65 73 75 6c 74 29 29 20 7b 0a 09 09 09 09 09 09 09 09 70 er->rxbuf.+.result)).{.........p
23060 72 5f 69 6e 66 6f 28 22 53 69 67 6e 61 74 75 72 65 20 76 69 6f 6c 61 74 69 6f 6e 5c 6e 22 29 3b r_info("Signature.violation\n");
23080 0a 09 09 09 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 49 4f 3b 0a 09 09 09 09 09 09 09 7d .........result.=.-EIO;........}
230a0 0a 09 09 09 09 09 09 7d 0a 09 09 09 09 09 7d 0a 23 65 6e 64 69 66 0a 09 09 09 09 09 64 65 6c 5f .......}......}.#endif......del_
230c0 74 69 6d 65 72 28 26 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 74 6d 29 3b 0a 09 09 09 09 timer(&server->timeout_tm);.....
230e0 20 20 20 20 20 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 20 3d 20 4e 55 4c 4c 3b 0a 09 ......server->rcv.creq.=.NULL;..
23100 09 09 09 09 6e 63 70 5f 66 69 6e 69 73 68 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 72 ....ncp_finish_request(server,.r
23120 65 71 2c 20 72 65 73 75 6c 74 29 3b 0a 09 09 09 09 09 5f 5f 6e 63 70 5f 6e 65 78 74 5f 72 65 71 eq,.result);......__ncp_next_req
23140 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a 09 09 09 09 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 uest(server);......mutex_unlock(
23160 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 09 09 09 09 09 63 &server->rcv.creq_mutex);......c
23180 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 09 7d 0a 09 09 09 7d 0a 09 09 09 6d 75 74 65 78 5f 75 6e 6c ontinue;.....}....}....mutex_unl
231a0 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 09 09 ock(&server->rcv.creq_mutex);...
231c0 7d 0a 64 72 6f 70 3a 3b 09 09 0a 09 09 5f 72 65 63 76 28 73 6f 63 6b 2c 20 26 72 65 70 6c 79 2c }.drop:;....._recv(sock,.&reply,
231e0 20 73 69 7a 65 6f 66 28 72 65 70 6c 79 29 2c 20 4d 53 47 5f 44 4f 4e 54 57 41 49 54 29 3b 0a 09 .sizeof(reply),.MSG_DONTWAIT);..
23200 7d 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 5f 5f 6e 63 70 64 67 72 61 6d 5f 74 69 6d 65 }.}..static.void.__ncpdgram_time
23220 6f 75 74 5f 70 72 6f 63 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 out_proc(struct.ncp_server.*serv
23240 65 72 29 0a 7b 0a 09 2f 2a 20 49 66 20 74 69 6d 65 72 20 69 73 20 70 65 6e 64 69 6e 67 2c 20 77 er).{../*.If.timer.is.pending,.w
23260 65 20 61 72 65 20 70 72 6f 63 65 73 73 69 6e 67 20 61 6e 6f 74 68 65 72 20 72 65 71 75 65 73 74 e.are.processing.another.request
23280 2e 2e 2e 20 2a 2f 0a 09 69 66 20 28 21 74 69 6d 65 72 5f 70 65 6e 64 69 6e 67 28 26 73 65 72 76 ....*/..if.(!timer_pending(&serv
232a0 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 74 6d 29 29 20 7b 0a 09 09 73 74 72 75 63 74 20 6e 63 70 5f er->timeout_tm)).{...struct.ncp_
232c0 72 65 71 75 65 73 74 5f 72 65 70 6c 79 2a 20 72 65 71 3b 0a 09 09 0a 09 09 72 65 71 20 3d 20 73 request_reply*.req;......req.=.s
232e0 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 3b 0a 09 09 69 66 20 28 72 65 71 29 20 7b 0a 09 09 erver->rcv.creq;...if.(req).{...
23300 09 69 6e 74 20 74 69 6d 65 6f 75 74 3b 0a 09 09 09 0a 09 09 09 69 66 20 28 73 65 72 76 65 72 2d .int.timeout;........if.(server-
23320 3e 6d 2e 66 6c 61 67 73 20 26 20 4e 43 50 5f 4d 4f 55 4e 54 5f 53 4f 46 54 29 20 7b 0a 09 09 09 >m.flags.&.NCP_MOUNT_SOFT).{....
23340 09 69 66 20 28 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 72 65 74 72 69 65 73 2d 2d 20 3d .if.(server->timeout_retries--.=
23360 3d 20 30 29 20 7b 0a 09 09 09 09 09 5f 5f 6e 63 70 5f 61 62 6f 72 74 5f 72 65 71 75 65 73 74 28 =.0).{......__ncp_abort_request(
23380 73 65 72 76 65 72 2c 20 72 65 71 2c 20 2d 45 54 49 4d 45 44 4f 55 54 29 3b 0a 09 09 09 09 09 72 server,.req,.-ETIMEDOUT);......r
233a0 65 74 75 72 6e 3b 0a 09 09 09 09 7d 0a 09 09 09 7d 0a 09 09 09 2f 2a 20 49 67 6e 6f 72 65 20 65 eturn;.....}....}..../*.Ignore.e
233c0 72 72 6f 72 73 20 2a 2f 0a 09 09 09 6e 63 70 64 67 72 61 6d 5f 73 65 6e 64 28 73 65 72 76 65 72 rrors.*/....ncpdgram_send(server
233e0 2d 3e 6e 63 70 5f 73 6f 63 6b 2c 20 72 65 71 29 3b 0a 09 09 09 74 69 6d 65 6f 75 74 20 3d 20 73 ->ncp_sock,.req);....timeout.=.s
23400 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 6c 61 73 74 20 3c 3c 20 31 3b 0a 09 09 09 69 66 20 erver->timeout_last.<<.1;....if.
23420 28 74 69 6d 65 6f 75 74 20 3e 20 4e 43 50 5f 4d 41 58 5f 52 50 43 5f 54 49 4d 45 4f 55 54 29 20 (timeout.>.NCP_MAX_RPC_TIMEOUT).
23440 7b 0a 09 09 09 09 74 69 6d 65 6f 75 74 20 3d 20 4e 43 50 5f 4d 41 58 5f 52 50 43 5f 54 49 4d 45 {.....timeout.=.NCP_MAX_RPC_TIME
23460 4f 55 54 3b 0a 09 09 09 7d 0a 09 09 09 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 6c 61 73 OUT;....}....server->timeout_las
23480 74 20 3d 20 74 69 6d 65 6f 75 74 3b 0a 09 09 09 6d 6f 64 5f 74 69 6d 65 72 28 26 73 65 72 76 65 t.=.timeout;....mod_timer(&serve
234a0 72 2d 3e 74 69 6d 65 6f 75 74 5f 74 6d 2c 20 6a 69 66 66 69 65 73 20 2b 20 74 69 6d 65 6f 75 74 r->timeout_tm,.jiffies.+.timeout
234c0 29 3b 0a 09 09 7d 0a 09 7d 0a 7d 0a 0a 76 6f 69 64 20 6e 63 70 64 67 72 61 6d 5f 74 69 6d 65 6f );...}..}.}..void.ncpdgram_timeo
234e0 75 74 5f 70 72 6f 63 28 73 74 72 75 63 74 20 77 6f 72 6b 5f 73 74 72 75 63 74 20 2a 77 6f 72 6b ut_proc(struct.work_struct.*work
23500 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d ).{..struct.ncp_server.*server.=
23520 0a 09 09 63 6f 6e 74 61 69 6e 65 72 5f 6f 66 28 77 6f 72 6b 2c 20 73 74 72 75 63 74 20 6e 63 70 ...container_of(work,.struct.ncp
23540 5f 73 65 72 76 65 72 2c 20 74 69 6d 65 6f 75 74 5f 74 71 29 3b 0a 09 6d 75 74 65 78 5f 6c 6f 63 _server,.timeout_tq);..mutex_loc
23560 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 09 5f 5f 6e k(&server->rcv.creq_mutex);..__n
23580 63 70 64 67 72 61 6d 5f 74 69 6d 65 6f 75 74 5f 70 72 6f 63 28 73 65 72 76 65 72 29 3b 0a 09 6d cpdgram_timeout_proc(server);..m
235a0 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 utex_unlock(&server->rcv.creq_mu
235c0 74 65 78 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 64 6f 5f 74 63 70 5f 72 63 76 28 73 tex);.}..static.int.do_tcp_rcv(s
235e0 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 76 6f 69 64 20 2a truct.ncp_server.*server,.void.*
23600 62 75 66 66 65 72 2c 20 73 69 7a 65 5f 74 20 6c 65 6e 29 0a 7b 0a 09 69 6e 74 20 72 65 73 75 6c buffer,.size_t.len).{..int.resul
23620 74 3b 0a 09 0a 09 69 66 20 28 62 75 66 66 65 72 29 20 7b 0a 09 09 72 65 73 75 6c 74 20 3d 20 5f t;....if.(buffer).{...result.=._
23640 72 65 63 76 28 73 65 72 76 65 72 2d 3e 6e 63 70 5f 73 6f 63 6b 2c 20 62 75 66 66 65 72 2c 20 6c recv(server->ncp_sock,.buffer,.l
23660 65 6e 2c 20 4d 53 47 5f 44 4f 4e 54 57 41 49 54 29 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 73 en,.MSG_DONTWAIT);..}.else.{...s
23680 74 61 74 69 63 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 64 75 6d 6d 79 5b 31 30 32 34 5d 3b tatic.unsigned.char.dummy[1024];
236a0 0a 09 09 09 0a 09 09 69 66 20 28 6c 65 6e 20 3e 20 73 69 7a 65 6f 66 28 64 75 6d 6d 79 29 29 20 .......if.(len.>.sizeof(dummy)).
236c0 7b 0a 09 09 09 6c 65 6e 20 3d 20 73 69 7a 65 6f 66 28 64 75 6d 6d 79 29 3b 0a 09 09 7d 0a 09 09 {....len.=.sizeof(dummy);...}...
236e0 72 65 73 75 6c 74 20 3d 20 5f 72 65 63 76 28 73 65 72 76 65 72 2d 3e 6e 63 70 5f 73 6f 63 6b 2c result.=._recv(server->ncp_sock,
23700 20 64 75 6d 6d 79 2c 20 6c 65 6e 2c 20 4d 53 47 5f 44 4f 4e 54 57 41 49 54 29 3b 0a 09 7d 0a 09 .dummy,.len,.MSG_DONTWAIT);..}..
23720 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 20 7b 0a 09 09 72 65 74 75 72 6e 20 72 65 73 75 6c if.(result.<.0).{...return.resul
23740 74 3b 0a 09 7d 0a 09 69 66 20 28 72 65 73 75 6c 74 20 3e 20 6c 65 6e 29 20 7b 0a 09 09 70 72 5f t;..}..if.(result.>.len).{...pr_
23760 65 72 72 28 22 74 63 70 3a 20 62 75 67 20 69 6e 20 72 65 63 76 6d 73 67 20 28 25 75 20 3e 20 25 err("tcp:.bug.in.recvmsg.(%u.>.%
23780 5a 75 29 5c 6e 22 2c 20 72 65 73 75 6c 74 2c 20 6c 65 6e 29 3b 0a 09 09 72 65 74 75 72 6e 20 2d Zu)\n",.result,.len);...return.-
237a0 45 49 4f 3b 09 09 09 0a 09 7d 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 09 0a 0a 73 EIO;.....}..return.result;.}...s
237c0 74 61 74 69 63 20 69 6e 74 20 5f 5f 6e 63 70 74 63 70 5f 72 63 76 5f 70 72 6f 63 28 73 74 72 75 tatic.int.__ncptcp_rcv_proc(stru
237e0 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 0a 7b 0a 09 2f 2a 20 57 65 20 ct.ncp_server.*server).{../*.We.
23800 68 61 76 65 20 74 6f 20 63 68 65 63 6b 20 74 68 65 20 72 65 73 75 6c 74 2c 20 73 6f 20 73 74 6f have.to.check.the.result,.so.sto
23820 72 65 20 74 68 65 20 63 6f 6d 70 6c 65 74 65 20 68 65 61 64 65 72 20 2a 2f 0a 09 77 68 69 6c 65 re.the.complete.header.*/..while
23840 20 28 31 29 20 7b 0a 09 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 09 09 73 74 72 75 63 74 20 6e 63 .(1).{...int.result;...struct.nc
23860 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 3b 0a 09 09 69 6e 74 20 64 61 74 61 p_request_reply.*req;...int.data
23880 6c 65 6e 3b 0a 09 09 69 6e 74 20 74 79 70 65 3b 0a 0a 09 09 77 68 69 6c 65 20 28 73 65 72 76 65 len;...int.type;....while.(serve
238a0 72 2d 3e 72 63 76 2e 6c 65 6e 29 20 7b 0a 09 09 09 72 65 73 75 6c 74 20 3d 20 64 6f 5f 74 63 70 r->rcv.len).{....result.=.do_tcp
238c0 5f 72 63 76 28 73 65 72 76 65 72 2c 20 73 65 72 76 65 72 2d 3e 72 63 76 2e 70 74 72 2c 20 73 65 _rcv(server,.server->rcv.ptr,.se
238e0 72 76 65 72 2d 3e 72 63 76 2e 6c 65 6e 29 3b 0a 09 09 09 69 66 20 28 72 65 73 75 6c 74 20 3d 3d rver->rcv.len);....if.(result.==
23900 20 2d 45 41 47 41 49 4e 29 20 7b 0a 09 09 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 09 09 7d 0a 09 .-EAGAIN).{.....return.0;....}..
23920 09 09 69 66 20 28 72 65 73 75 6c 74 20 3c 3d 20 30 29 20 7b 0a 09 09 09 09 72 65 71 20 3d 20 73 ..if.(result.<=.0).{.....req.=.s
23940 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 3b 0a 09 09 09 09 69 66 20 28 72 65 71 29 20 7b 0a erver->rcv.creq;.....if.(req).{.
23960 09 09 09 09 09 5f 5f 6e 63 70 5f 61 62 6f 72 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c .....__ncp_abort_request(server,
23980 20 72 65 71 2c 20 2d 45 49 4f 29 3b 0a 09 09 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 09 09 5f .req,.-EIO);.....}.else.{......_
239a0 5f 6e 63 70 74 63 70 5f 61 62 6f 72 74 28 73 65 72 76 65 72 29 3b 0a 09 09 09 09 7d 0a 09 09 09 _ncptcp_abort(server);.....}....
239c0 09 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 20 7b 0a 09 09 09 09 09 70 72 5f 65 72 72 28 22 .if.(result.<.0).{......pr_err("
239e0 74 63 70 3a 20 65 72 72 6f 72 20 69 6e 20 72 65 63 76 6d 73 67 3a 20 25 64 5c 6e 22 2c 20 72 65 tcp:.error.in.recvmsg:.%d\n",.re
23a00 73 75 6c 74 29 3b 0a 09 09 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 09 09 6e 63 70 5f 64 62 67 sult);.....}.else.{......ncp_dbg
23a20 28 31 2c 20 22 74 63 70 3a 20 45 4f 46 5c 6e 22 29 3b 0a 09 09 09 09 7d 0a 09 09 09 09 72 65 74 (1,."tcp:.EOF\n");.....}.....ret
23a40 75 72 6e 20 2d 45 49 4f 3b 0a 09 09 09 7d 0a 09 09 09 69 66 20 28 73 65 72 76 65 72 2d 3e 72 63 urn.-EIO;....}....if.(server->rc
23a60 76 2e 70 74 72 29 20 7b 0a 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 70 74 72 20 2b 3d 20 v.ptr).{.....server->rcv.ptr.+=.
23a80 72 65 73 75 6c 74 3b 0a 09 09 09 7d 0a 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 6c 65 6e 20 result;....}....server->rcv.len.
23aa0 2d 3d 20 72 65 73 75 6c 74 3b 0a 09 09 7d 0a 09 09 73 77 69 74 63 68 20 28 73 65 72 76 65 72 2d -=.result;...}...switch.(server-
23ac0 3e 72 63 76 2e 73 74 61 74 65 29 20 7b 0a 09 09 09 63 61 73 65 20 30 3a 0a 09 09 09 09 69 66 20 >rcv.state).{....case.0:.....if.
23ae0 28 73 65 72 76 65 72 2d 3e 72 63 76 2e 62 75 66 2e 6d 61 67 69 63 20 21 3d 20 68 74 6f 6e 6c 28 (server->rcv.buf.magic.!=.htonl(
23b00 4e 43 50 5f 54 43 50 5f 52 43 56 44 5f 4d 41 47 49 43 29 29 20 7b 0a 09 09 09 09 09 70 72 5f 65 NCP_TCP_RCVD_MAGIC)).{......pr_e
23b20 72 72 28 22 74 63 70 3a 20 55 6e 65 78 70 65 63 74 65 64 20 72 65 70 6c 79 20 74 79 70 65 20 25 rr("tcp:.Unexpected.reply.type.%
23b40 30 38 58 5c 6e 22 2c 20 6e 74 6f 68 6c 28 73 65 72 76 65 72 2d 3e 72 63 76 2e 62 75 66 2e 6d 61 08X\n",.ntohl(server->rcv.buf.ma
23b60 67 69 63 29 29 3b 0a 09 09 09 09 09 5f 5f 6e 63 70 74 63 70 5f 61 62 6f 72 74 28 73 65 72 76 65 gic));......__ncptcp_abort(serve
23b80 72 29 3b 0a 09 09 09 09 09 72 65 74 75 72 6e 20 2d 45 49 4f 3b 0a 09 09 09 09 7d 0a 09 09 09 09 r);......return.-EIO;.....}.....
23ba0 64 61 74 61 6c 65 6e 20 3d 20 6e 74 6f 68 6c 28 73 65 72 76 65 72 2d 3e 72 63 76 2e 62 75 66 2e datalen.=.ntohl(server->rcv.buf.
23bc0 6c 65 6e 29 20 26 20 30 78 30 46 46 46 46 46 46 46 3b 0a 09 09 09 09 69 66 20 28 64 61 74 61 6c len).&.0x0FFFFFFF;.....if.(datal
23be0 65 6e 20 3c 20 31 30 29 20 7b 0a 09 09 09 09 09 70 72 5f 65 72 72 28 22 74 63 70 3a 20 55 6e 65 en.<.10).{......pr_err("tcp:.Une
23c00 78 70 65 63 74 65 64 20 72 65 70 6c 79 20 6c 65 6e 20 25 64 5c 6e 22 2c 20 64 61 74 61 6c 65 6e xpected.reply.len.%d\n",.datalen
23c20 29 3b 0a 09 09 09 09 09 5f 5f 6e 63 70 74 63 70 5f 61 62 6f 72 74 28 73 65 72 76 65 72 29 3b 0a );......__ncptcp_abort(server);.
23c40 09 09 09 09 09 72 65 74 75 72 6e 20 2d 45 49 4f 3b 0a 09 09 09 09 7d 0a 23 69 66 64 65 66 20 43 .....return.-EIO;.....}.#ifdef.C
23c60 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 09 09 09 09 0a 09 ONFIG_NCPFS_PACKET_SIGNING......
23c80 09 09 09 69 66 20 28 73 65 72 76 65 72 2d 3e 73 69 67 6e 5f 61 63 74 69 76 65 29 20 7b 0a 09 09 ...if.(server->sign_active).{...
23ca0 09 09 09 69 66 20 28 64 61 74 61 6c 65 6e 20 3c 20 31 38 29 20 7b 0a 09 09 09 09 09 09 70 72 5f ...if.(datalen.<.18).{.......pr_
23cc0 65 72 72 28 22 74 63 70 3a 20 55 6e 65 78 70 65 63 74 65 64 20 72 65 70 6c 79 20 6c 65 6e 20 25 err("tcp:.Unexpected.reply.len.%
23ce0 64 5c 6e 22 2c 20 64 61 74 61 6c 65 6e 29 3b 0a 09 09 09 09 09 09 5f 5f 6e 63 70 74 63 70 5f 61 d\n",.datalen);.......__ncptcp_a
23d00 62 6f 72 74 28 73 65 72 76 65 72 29 3b 0a 09 09 09 09 09 09 72 65 74 75 72 6e 20 2d 45 49 4f 3b bort(server);.......return.-EIO;
23d20 0a 09 09 09 09 09 7d 0a 09 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 62 75 66 2e 6c 65 6e ......}......server->rcv.buf.len
23d40 20 3d 20 64 61 74 61 6c 65 6e 20 2d 20 38 3b 0a 09 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 .=.datalen.-.8;......server->rcv
23d60 2e 70 74 72 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 2a 29 26 73 65 72 76 65 72 2d 3e .ptr.=.(unsigned.char*)&server->
23d80 72 63 76 2e 62 75 66 2e 70 31 3b 0a 09 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 6c 65 6e rcv.buf.p1;......server->rcv.len
23da0 20 3d 20 38 3b 0a 09 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 73 74 61 74 65 20 3d 20 34 .=.8;......server->rcv.state.=.4
23dc0 3b 0a 09 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 09 7d 0a 23 65 6e 64 69 66 09 09 09 09 0a 09 ;......break;.....}.#endif......
23de0 09 09 09 74 79 70 65 20 3d 20 6e 74 6f 68 73 28 73 65 72 76 65 72 2d 3e 72 63 76 2e 62 75 66 2e ...type.=.ntohs(server->rcv.buf.
23e00 74 79 70 65 29 3b 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 50 41 43 4b 45 type);.#ifdef.CONFIG_NCPFS_PACKE
23e20 54 5f 53 49 47 4e 49 4e 47 09 09 09 09 0a 63 6f 6e 74 3a 3b 09 09 09 09 0a 23 65 6e 64 69 66 0a T_SIGNING.....cont:;.....#endif.
23e40 09 09 09 09 69 66 20 28 74 79 70 65 20 21 3d 20 4e 43 50 5f 52 45 50 4c 59 29 20 7b 0a 09 09 09 ....if.(type.!=.NCP_REPLY).{....
23e60 09 09 69 66 20 28 64 61 74 61 6c 65 6e 20 2d 20 38 20 3c 3d 20 73 69 7a 65 6f 66 28 73 65 72 76 ..if.(datalen.-.8.<=.sizeof(serv
23e80 65 72 2d 3e 75 6e 65 78 70 65 63 74 65 64 5f 70 61 63 6b 65 74 2e 64 61 74 61 29 29 20 7b 0a 09 er->unexpected_packet.data)).{..
23ea0 09 09 09 09 09 2a 28 5f 5f 75 31 36 2a 29 28 73 65 72 76 65 72 2d 3e 75 6e 65 78 70 65 63 74 65 .....*(__u16*)(server->unexpecte
23ec0 64 5f 70 61 63 6b 65 74 2e 64 61 74 61 29 20 3d 20 68 74 6f 6e 73 28 74 79 70 65 29 3b 0a 09 09 d_packet.data).=.htons(type);...
23ee0 09 09 09 09 73 65 72 76 65 72 2d 3e 75 6e 65 78 70 65 63 74 65 64 5f 70 61 63 6b 65 74 2e 6c 65 ....server->unexpected_packet.le
23f00 6e 20 3d 20 64 61 74 61 6c 65 6e 20 2d 20 38 3b 0a 0a 09 09 09 09 09 09 73 65 72 76 65 72 2d 3e n.=.datalen.-.8;........server->
23f20 72 63 76 2e 73 74 61 74 65 20 3d 20 35 3b 0a 09 09 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 rcv.state.=.5;.......server->rcv
23f40 2e 70 74 72 20 3d 20 73 65 72 76 65 72 2d 3e 75 6e 65 78 70 65 63 74 65 64 5f 70 61 63 6b 65 74 .ptr.=.server->unexpected_packet
23f60 2e 64 61 74 61 20 2b 20 32 3b 0a 09 09 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 6c 65 6e .data.+.2;.......server->rcv.len
23f80 20 3d 20 64 61 74 61 6c 65 6e 20 2d 20 31 30 3b 0a 09 09 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 .=.datalen.-.10;.......break;...
23fa0 09 09 09 7d 09 09 09 09 09 0a 09 09 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 74 63 70 3a 20 ...}...........ncp_dbg(1,."tcp:.
23fc0 55 6e 65 78 70 65 63 74 65 64 20 4e 43 50 20 74 79 70 65 20 25 30 32 58 5c 6e 22 2c 20 74 79 70 Unexpected.NCP.type.%02X\n",.typ
23fe0 65 29 3b 0a 73 6b 69 70 64 61 74 61 32 3a 3b 0a 09 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 e);.skipdata2:;......server->rcv
24000 2e 73 74 61 74 65 20 3d 20 32 3b 0a 73 6b 69 70 64 61 74 61 3a 3b 0a 09 09 09 09 09 73 65 72 76 .state.=.2;.skipdata:;......serv
24020 65 72 2d 3e 72 63 76 2e 70 74 72 20 3d 20 4e 55 4c 4c 3b 0a 09 09 09 09 09 73 65 72 76 65 72 2d er->rcv.ptr.=.NULL;......server-
24040 3e 72 63 76 2e 6c 65 6e 20 3d 20 64 61 74 61 6c 65 6e 20 2d 20 31 30 3b 0a 09 09 09 09 09 62 72 >rcv.len.=.datalen.-.10;......br
24060 65 61 6b 3b 0a 09 09 09 09 7d 0a 09 09 09 09 72 65 71 20 3d 20 73 65 72 76 65 72 2d 3e 72 63 76 eak;.....}.....req.=.server->rcv
24080 2e 63 72 65 71 3b 0a 09 09 09 09 69 66 20 28 21 72 65 71 29 20 7b 0a 09 09 09 09 09 6e 63 70 5f .creq;.....if.(!req).{......ncp_
240a0 64 62 67 28 31 2c 20 22 52 65 70 6c 79 20 77 69 74 68 6f 75 74 20 61 70 70 72 6f 70 72 69 61 74 dbg(1,."Reply.without.appropriat
240c0 65 20 72 65 71 75 65 73 74 5c 6e 22 29 3b 0a 09 09 09 09 09 67 6f 74 6f 20 73 6b 69 70 64 61 74 e.request\n");......goto.skipdat
240e0 61 32 3b 0a 09 09 09 09 7d 0a 09 09 09 09 69 66 20 28 64 61 74 61 6c 65 6e 20 3e 20 72 65 71 2d a2;.....}.....if.(datalen.>.req-
24100 3e 64 61 74 61 6c 65 6e 20 2b 20 38 29 20 7b 0a 09 09 09 09 09 70 72 5f 65 72 72 28 22 74 63 70 >datalen.+.8).{......pr_err("tcp
24120 3a 20 55 6e 65 78 70 65 63 74 65 64 20 72 65 70 6c 79 20 6c 65 6e 20 25 64 20 28 65 78 70 65 63 :.Unexpected.reply.len.%d.(expec
24140 74 65 64 20 61 74 20 6d 6f 73 74 20 25 5a 64 29 5c 6e 22 2c 20 64 61 74 61 6c 65 6e 2c 20 72 65 ted.at.most.%Zd)\n",.datalen,.re
24160 71 2d 3e 64 61 74 61 6c 65 6e 20 2b 20 38 29 3b 0a 09 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 q->datalen.+.8);......server->rc
24180 76 2e 73 74 61 74 65 20 3d 20 33 3b 0a 09 09 09 09 09 67 6f 74 6f 20 73 6b 69 70 64 61 74 61 3b v.state.=.3;......goto.skipdata;
241a0 0a 09 09 09 09 7d 0a 09 09 09 09 72 65 71 2d 3e 64 61 74 61 6c 65 6e 20 3d 20 64 61 74 61 6c 65 .....}.....req->datalen.=.datale
241c0 6e 20 2d 20 38 3b 0a 09 09 09 09 28 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 70 6c 79 5f 68 65 n.-.8;.....((struct.ncp_reply_he
241e0 61 64 65 72 2a 29 73 65 72 76 65 72 2d 3e 72 78 62 75 66 29 2d 3e 74 79 70 65 20 3d 20 4e 43 50 ader*)server->rxbuf)->type.=.NCP
24200 5f 52 45 50 4c 59 3b 0a 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 70 74 72 20 3d 20 73 65 _REPLY;.....server->rcv.ptr.=.se
24220 72 76 65 72 2d 3e 72 78 62 75 66 20 2b 20 32 3b 0a 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 rver->rxbuf.+.2;.....server->rcv
24240 2e 6c 65 6e 20 3d 20 64 61 74 61 6c 65 6e 20 2d 20 31 30 3b 0a 09 09 09 09 73 65 72 76 65 72 2d .len.=.datalen.-.10;.....server-
24260 3e 72 63 76 2e 73 74 61 74 65 20 3d 20 31 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a 23 69 66 64 65 >rcv.state.=.1;.....break;.#ifde
24280 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 09 09 09 f.CONFIG_NCPFS_PACKET_SIGNING...
242a0 09 0a 09 09 09 63 61 73 65 20 34 3a 0a 09 09 09 09 64 61 74 61 6c 65 6e 20 3d 20 73 65 72 76 65 .....case.4:.....datalen.=.serve
242c0 72 2d 3e 72 63 76 2e 62 75 66 2e 6c 65 6e 3b 0a 09 09 09 09 74 79 70 65 20 3d 20 6e 74 6f 68 73 r->rcv.buf.len;.....type.=.ntohs
242e0 28 73 65 72 76 65 72 2d 3e 72 63 76 2e 62 75 66 2e 74 79 70 65 32 29 3b 0a 09 09 09 09 67 6f 74 (server->rcv.buf.type2);.....got
24300 6f 20 63 6f 6e 74 3b 0a 23 65 6e 64 69 66 0a 09 09 09 63 61 73 65 20 31 3a 0a 09 09 09 09 72 65 o.cont;.#endif....case.1:.....re
24320 71 20 3d 20 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 3b 0a 09 09 09 09 69 66 20 28 72 65 q.=.server->rcv.creq;.....if.(re
24340 71 2d 3e 74 78 5f 74 79 70 65 20 21 3d 20 4e 43 50 5f 41 4c 4c 4f 43 5f 53 4c 4f 54 5f 52 45 51 q->tx_type.!=.NCP_ALLOC_SLOT_REQ
24360 55 45 53 54 29 20 7b 0a 09 09 09 09 09 69 66 20 28 28 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 UEST).{......if.(((struct.ncp_re
24380 70 6c 79 5f 68 65 61 64 65 72 2a 29 73 65 72 76 65 72 2d 3e 72 78 62 75 66 29 2d 3e 73 65 71 75 ply_header*)server->rxbuf)->sequ
243a0 65 6e 63 65 20 21 3d 20 73 65 72 76 65 72 2d 3e 73 65 71 75 65 6e 63 65 29 20 7b 0a 09 09 09 09 ence.!=.server->sequence).{.....
243c0 09 09 70 72 5f 65 72 72 28 22 74 63 70 3a 20 42 61 64 20 73 65 71 75 65 6e 63 65 20 6e 75 6d 62 ..pr_err("tcp:.Bad.sequence.numb
243e0 65 72 5c 6e 22 29 3b 0a 09 09 09 09 09 09 5f 5f 6e 63 70 5f 61 62 6f 72 74 5f 72 65 71 75 65 73 er\n");.......__ncp_abort_reques
24400 74 28 73 65 72 76 65 72 2c 20 72 65 71 2c 20 2d 45 49 4f 29 3b 0a 09 09 09 09 09 09 72 65 74 75 t(server,.req,.-EIO);.......retu
24420 72 6e 20 2d 45 49 4f 3b 0a 09 09 09 09 09 7d 0a 09 09 09 09 09 69 66 20 28 28 28 28 73 74 72 75 rn.-EIO;......}......if.((((stru
24440 63 74 20 6e 63 70 5f 72 65 70 6c 79 5f 68 65 61 64 65 72 2a 29 73 65 72 76 65 72 2d 3e 72 78 62 ct.ncp_reply_header*)server->rxb
24460 75 66 29 2d 3e 63 6f 6e 6e 5f 6c 6f 77 20 7c 20 28 28 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 uf)->conn_low.|.(((struct.ncp_re
24480 70 6c 79 5f 68 65 61 64 65 72 2a 29 73 65 72 76 65 72 2d 3e 72 78 62 75 66 29 2d 3e 63 6f 6e 6e ply_header*)server->rxbuf)->conn
244a0 5f 68 69 67 68 20 3c 3c 20 38 29 29 20 21 3d 20 73 65 72 76 65 72 2d 3e 63 6f 6e 6e 65 63 74 69 _high.<<.8)).!=.server->connecti
244c0 6f 6e 29 20 7b 0a 09 09 09 09 09 09 70 72 5f 65 72 72 28 22 74 63 70 3a 20 43 6f 6e 6e 65 63 74 on).{.......pr_err("tcp:.Connect
244e0 69 6f 6e 20 6e 75 6d 62 65 72 20 6d 69 73 6d 61 74 63 68 5c 6e 22 29 3b 0a 09 09 09 09 09 09 5f ion.number.mismatch\n");......._
24500 5f 6e 63 70 5f 61 62 6f 72 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 72 65 71 2c 20 _ncp_abort_request(server,.req,.
24520 2d 45 49 4f 29 3b 0a 09 09 09 09 09 09 72 65 74 75 72 6e 20 2d 45 49 4f 3b 0a 09 09 09 09 09 7d -EIO);.......return.-EIO;......}
24540 0a 09 09 09 09 7d 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 50 41 43 4b 45 .....}.#ifdef.CONFIG_NCPFS_PACKE
24560 54 5f 53 49 47 4e 49 4e 47 09 09 09 09 0a 09 09 09 09 69 66 20 28 73 65 72 76 65 72 2d 3e 73 69 T_SIGNING.........if.(server->si
24580 67 6e 5f 61 63 74 69 76 65 20 26 26 20 72 65 71 2d 3e 74 78 5f 74 79 70 65 20 21 3d 20 4e 43 50 gn_active.&&.req->tx_type.!=.NCP
245a0 5f 44 45 41 4c 4c 4f 43 5f 53 4c 4f 54 5f 52 45 51 55 45 53 54 29 20 7b 0a 09 09 09 09 09 69 66 _DEALLOC_SLOT_REQUEST).{......if
245c0 20 28 73 69 67 6e 5f 76 65 72 69 66 79 5f 72 65 70 6c 79 28 73 65 72 76 65 72 2c 20 73 65 72 76 .(sign_verify_reply(server,.serv
245e0 65 72 2d 3e 72 78 62 75 66 20 2b 20 36 2c 20 72 65 71 2d 3e 64 61 74 61 6c 65 6e 20 2d 20 36 2c er->rxbuf.+.6,.req->datalen.-.6,
24600 20 63 70 75 5f 74 6f 5f 62 65 33 32 28 72 65 71 2d 3e 64 61 74 61 6c 65 6e 20 2b 20 31 36 29 2c .cpu_to_be32(req->datalen.+.16),
24620 20 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 62 75 66 2e 74 79 70 65 29 29 20 7b 0a 09 09 09 09 09 .&server->rcv.buf.type)).{......
24640 09 70 72 5f 65 72 72 28 22 74 63 70 3a 20 53 69 67 6e 61 74 75 72 65 20 76 69 6f 6c 61 74 69 6f .pr_err("tcp:.Signature.violatio
24660 6e 5c 6e 22 29 3b 0a 09 09 09 09 09 09 5f 5f 6e 63 70 5f 61 62 6f 72 74 5f 72 65 71 75 65 73 74 n\n");.......__ncp_abort_request
24680 28 73 65 72 76 65 72 2c 20 72 65 71 2c 20 2d 45 49 4f 29 3b 0a 09 09 09 09 09 09 72 65 74 75 72 (server,.req,.-EIO);.......retur
246a0 6e 20 2d 45 49 4f 3b 0a 09 09 09 09 09 7d 0a 09 09 09 09 7d 0a 23 65 6e 64 69 66 09 09 09 09 0a n.-EIO;......}.....}.#endif.....
246c0 09 09 09 09 6e 63 70 5f 66 69 6e 69 73 68 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 72 ....ncp_finish_request(server,.r
246e0 65 71 2c 20 72 65 71 2d 3e 64 61 74 61 6c 65 6e 29 3b 0a 09 09 09 6e 65 78 74 72 65 71 3a 3b 0a eq,.req->datalen);....nextreq:;.
24700 09 09 09 09 5f 5f 6e 63 70 5f 6e 65 78 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a ....__ncp_next_request(server);.
24720 09 09 09 63 61 73 65 20 32 3a 0a 09 09 09 6e 65 78 74 3a 3b 0a 09 09 09 09 73 65 72 76 65 72 2d ...case.2:....next:;.....server-
24740 3e 72 63 76 2e 70 74 72 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 63 68 61 72 2a 29 26 73 65 72 76 >rcv.ptr.=.(unsigned.char*)&serv
24760 65 72 2d 3e 72 63 76 2e 62 75 66 3b 0a 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 6c 65 6e er->rcv.buf;.....server->rcv.len
24780 20 3d 20 31 30 3b 0a 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 73 74 61 74 65 20 3d 20 30 .=.10;.....server->rcv.state.=.0
247a0 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 63 61 73 65 20 33 3a 0a 09 09 09 09 6e 63 70 5f ;.....break;....case.3:.....ncp_
247c0 66 69 6e 69 73 68 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 73 65 72 76 65 72 2d 3e 72 finish_request(server,.server->r
247e0 63 76 2e 63 72 65 71 2c 20 2d 45 49 4f 29 3b 0a 09 09 09 09 67 6f 74 6f 20 6e 65 78 74 72 65 71 cv.creq,.-EIO);.....goto.nextreq
24800 3b 0a 09 09 09 63 61 73 65 20 35 3a 0a 09 09 09 09 69 6e 66 6f 5f 73 65 72 76 65 72 28 73 65 72 ;....case.5:.....info_server(ser
24820 76 65 72 2c 20 30 2c 20 73 65 72 76 65 72 2d 3e 75 6e 65 78 70 65 63 74 65 64 5f 70 61 63 6b 65 ver,.0,.server->unexpected_packe
24840 74 2e 64 61 74 61 2c 20 73 65 72 76 65 72 2d 3e 75 6e 65 78 70 65 63 74 65 64 5f 70 61 63 6b 65 t.data,.server->unexpected_packe
24860 74 2e 6c 65 6e 29 3b 0a 09 09 09 09 67 6f 74 6f 20 6e 65 78 74 3b 0a 09 09 7d 0a 09 7d 0a 7d 0a t.len);.....goto.next;...}..}.}.
24880 0a 76 6f 69 64 20 6e 63 70 5f 74 63 70 5f 72 63 76 5f 70 72 6f 63 28 73 74 72 75 63 74 20 77 6f .void.ncp_tcp_rcv_proc(struct.wo
248a0 72 6b 5f 73 74 72 75 63 74 20 2a 77 6f 72 6b 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 rk_struct.*work).{..struct.ncp_s
248c0 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 0a 09 09 63 6f 6e 74 61 69 6e 65 72 5f 6f 66 28 77 erver.*server.=...container_of(w
248e0 6f 72 6b 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2c 20 72 63 76 2e 74 71 29 3b ork,.struct.ncp_server,.rcv.tq);
24900 0a 0a 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f ...mutex_lock(&server->rcv.creq_
24920 6d 75 74 65 78 29 3b 0a 09 5f 5f 6e 63 70 74 63 70 5f 72 63 76 5f 70 72 6f 63 28 73 65 72 76 65 mutex);..__ncptcp_rcv_proc(serve
24940 72 29 3b 0a 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 r);..mutex_unlock(&server->rcv.c
24960 72 65 71 5f 6d 75 74 65 78 29 3b 0a 7d 0a 0a 76 6f 69 64 20 6e 63 70 5f 74 63 70 5f 74 78 5f 70 req_mutex);.}..void.ncp_tcp_tx_p
24980 72 6f 63 28 73 74 72 75 63 74 20 77 6f 72 6b 5f 73 74 72 75 63 74 20 2a 77 6f 72 6b 29 0a 7b 0a roc(struct.work_struct.*work).{.
249a0 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 0a 09 09 63 .struct.ncp_server.*server.=...c
249c0 6f 6e 74 61 69 6e 65 72 5f 6f 66 28 77 6f 72 6b 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 ontainer_of(work,.struct.ncp_ser
249e0 76 65 72 2c 20 74 78 2e 74 71 29 3b 0a 09 0a 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 73 65 72 76 ver,.tx.tq);....mutex_lock(&serv
24a00 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 09 5f 5f 6e 63 70 74 63 70 5f 74 er->rcv.creq_mutex);..__ncptcp_t
24a20 72 79 5f 73 65 6e 64 28 73 65 72 76 65 72 29 3b 0a 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 ry_send(server);..mutex_unlock(&
24a40 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 7d 0a 0a 73 74 61 74 server->rcv.creq_mutex);.}..stat
24a60 69 63 20 69 6e 74 20 64 6f 5f 6e 63 70 5f 72 70 63 5f 63 61 6c 6c 28 73 74 72 75 63 74 20 6e 63 ic.int.do_ncp_rpc_call(struct.nc
24a80 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 69 6e 74 20 73 69 7a 65 2c 0a 09 09 75 6e p_server.*server,.int.size,...un
24aa0 73 69 67 6e 65 64 20 63 68 61 72 2a 20 72 65 70 6c 79 5f 62 75 66 2c 20 69 6e 74 20 6d 61 78 5f signed.char*.reply_buf,.int.max_
24ac0 72 65 70 6c 79 5f 73 69 7a 65 29 0a 7b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 09 73 74 72 75 reply_size).{..int.result;..stru
24ae0 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 3b 0a 0a 09 72 65 71 ct.ncp_request_reply.*req;...req
24b00 20 3d 20 6e 63 70 5f 61 6c 6c 6f 63 5f 72 65 71 28 29 3b 0a 09 69 66 20 28 21 72 65 71 29 0a 09 .=.ncp_alloc_req();..if.(!req)..
24b20 09 72 65 74 75 72 6e 20 2d 45 4e 4f 4d 45 4d 3b 0a 0a 09 72 65 71 2d 3e 72 65 70 6c 79 5f 62 75 .return.-ENOMEM;...req->reply_bu
24b40 66 20 3d 20 72 65 70 6c 79 5f 62 75 66 3b 0a 09 72 65 71 2d 3e 64 61 74 61 6c 65 6e 20 3d 20 6d f.=.reply_buf;..req->datalen.=.m
24b60 61 78 5f 72 65 70 6c 79 5f 73 69 7a 65 3b 0a 09 72 65 71 2d 3e 74 78 5f 69 6f 76 5b 31 5d 2e 69 ax_reply_size;..req->tx_iov[1].i
24b80 6f 76 5f 62 61 73 65 20 3d 20 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 3b 0a 09 72 65 71 2d 3e ov_base.=.server->packet;..req->
24ba0 74 78 5f 69 6f 76 5b 31 5d 2e 69 6f 76 5f 6c 65 6e 20 3d 20 73 69 7a 65 3b 0a 09 72 65 71 2d 3e tx_iov[1].iov_len.=.size;..req->
24bc0 74 78 5f 69 6f 76 6c 65 6e 20 3d 20 31 3b 0a 09 72 65 71 2d 3e 74 78 5f 74 6f 74 61 6c 6c 65 6e tx_iovlen.=.1;..req->tx_totallen
24be0 20 3d 20 73 69 7a 65 3b 0a 09 72 65 71 2d 3e 74 78 5f 74 79 70 65 20 3d 20 2a 28 75 5f 69 6e 74 .=.size;..req->tx_type.=.*(u_int
24c00 31 36 5f 74 2a 29 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 3b 0a 0a 09 72 65 73 75 6c 74 20 3d 16_t*)server->packet;...result.=
24c20 20 6e 63 70 5f 61 64 64 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 72 65 71 29 3b 0a 09 .ncp_add_request(server,.req);..
24c40 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 69 66 if.(result.<.0)...goto.out;...if
24c60 20 28 77 61 69 74 5f 65 76 65 6e 74 5f 69 6e 74 65 72 72 75 70 74 69 62 6c 65 28 72 65 71 2d 3e .(wait_event_interruptible(req->
24c80 77 71 2c 20 72 65 71 2d 3e 73 74 61 74 75 73 20 3d 3d 20 52 51 5f 44 4f 4e 45 29 29 20 7b 0a 09 wq,.req->status.==.RQ_DONE)).{..
24ca0 09 6e 63 70 5f 61 62 6f 72 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 72 65 71 2c 20 .ncp_abort_request(server,.req,.
24cc0 2d 45 49 4e 54 52 29 3b 0a 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 49 4e 54 52 3b 0a 09 09 67 6f -EINTR);...result.=.-EINTR;...go
24ce0 74 6f 20 6f 75 74 3b 0a 09 7d 0a 0a 09 72 65 73 75 6c 74 20 3d 20 72 65 71 2d 3e 72 65 73 75 6c to.out;..}...result.=.req->resul
24d00 74 3b 0a 0a 6f 75 74 3a 0a 09 6e 63 70 5f 72 65 71 5f 70 75 74 28 72 65 71 29 3b 0a 0a 09 72 65 t;..out:..ncp_req_put(req);...re
24d20 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 2f 2a 0a 20 2a 20 57 65 20 6e 65 65 64 20 74 68 turn.result;.}../*..*.We.need.th
24d40 65 20 73 65 72 76 65 72 20 74 6f 20 62 65 20 6c 6f 63 6b 65 64 20 68 65 72 65 2c 20 73 6f 20 63 e.server.to.be.locked.here,.so.c
24d60 68 65 63 6b 21 0a 20 2a 2f 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 64 6f 5f 72 65 71 heck!..*/..static.int.ncp_do_req
24d80 75 65 73 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 2c 20 uest(struct.ncp_server.*server,.
24da0 69 6e 74 20 73 69 7a 65 2c 0a 09 09 76 6f 69 64 2a 20 72 65 70 6c 79 2c 20 69 6e 74 20 6d 61 78 int.size,...void*.reply,.int.max
24dc0 5f 72 65 70 6c 79 5f 73 69 7a 65 29 0a 7b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 69 66 _reply_size).{..int.result;...if
24de0 20 28 73 65 72 76 65 72 2d 3e 6c 6f 63 6b 20 3d 3d 20 30 29 20 7b 0a 09 09 70 72 5f 65 72 72 28 .(server->lock.==.0).{...pr_err(
24e00 22 53 65 72 76 65 72 20 6e 6f 74 20 6c 6f 63 6b 65 64 21 5c 6e 22 29 3b 0a 09 09 72 65 74 75 72 "Server.not.locked!\n");...retur
24e20 6e 20 2d 45 49 4f 3b 0a 09 7d 0a 09 69 66 20 28 21 6e 63 70 5f 63 6f 6e 6e 5f 76 61 6c 69 64 28 n.-EIO;..}..if.(!ncp_conn_valid(
24e40 73 65 72 76 65 72 29 29 20 7b 0a 09 09 72 65 74 75 72 6e 20 2d 45 49 4f 3b 0a 09 7d 0a 09 7b 0a server)).{...return.-EIO;..}..{.
24e60 09 09 73 69 67 73 65 74 5f 74 20 6f 6c 64 5f 73 65 74 3b 0a 09 09 75 6e 73 69 67 6e 65 64 20 6c ..sigset_t.old_set;...unsigned.l
24e80 6f 6e 67 20 6d 61 73 6b 2c 20 66 6c 61 67 73 3b 0a 0a 09 09 73 70 69 6e 5f 6c 6f 63 6b 5f 69 72 ong.mask,.flags;....spin_lock_ir
24ea0 71 73 61 76 65 28 26 63 75 72 72 65 6e 74 2d 3e 73 69 67 68 61 6e 64 2d 3e 73 69 67 6c 6f 63 6b qsave(&current->sighand->siglock
24ec0 2c 20 66 6c 61 67 73 29 3b 0a 09 09 6f 6c 64 5f 73 65 74 20 3d 20 63 75 72 72 65 6e 74 2d 3e 62 ,.flags);...old_set.=.current->b
24ee0 6c 6f 63 6b 65 64 3b 0a 09 09 69 66 20 28 63 75 72 72 65 6e 74 2d 3e 66 6c 61 67 73 20 26 20 50 locked;...if.(current->flags.&.P
24f00 46 5f 45 58 49 54 49 4e 47 29 0a 09 09 09 6d 61 73 6b 20 3d 20 30 3b 0a 09 09 65 6c 73 65 0a 09 F_EXITING)....mask.=.0;...else..
24f20 09 09 6d 61 73 6b 20 3d 20 73 69 67 6d 61 73 6b 28 53 49 47 4b 49 4c 4c 29 3b 0a 09 09 69 66 20 ..mask.=.sigmask(SIGKILL);...if.
24f40 28 73 65 72 76 65 72 2d 3e 6d 2e 66 6c 61 67 73 20 26 20 4e 43 50 5f 4d 4f 55 4e 54 5f 49 4e 54 (server->m.flags.&.NCP_MOUNT_INT
24f60 52 29 20 7b 0a 09 09 09 2f 2a 20 46 49 58 4d 45 3a 20 54 68 69 73 20 64 6f 65 73 6e 27 74 20 73 R).{..../*.FIXME:.This.doesn't.s
24f80 65 65 6d 20 72 69 67 68 74 20 61 74 20 61 6c 6c 2e 20 20 53 6f 2c 20 6c 69 6b 65 2c 0a 09 09 09 eem.right.at.all...So,.like,....
24fa0 20 20 20 77 65 20 63 61 6e 27 74 20 68 61 6e 64 6c 65 20 53 49 47 49 4e 54 20 61 6e 64 20 67 65 ...we.can't.handle.SIGINT.and.ge
24fc0 74 20 77 68 61 74 65 76 65 72 20 74 6f 20 73 74 6f 70 3f 0a 09 09 09 20 20 20 57 68 61 74 20 69 t.whatever.to.stop?.......What.i
24fe0 66 20 77 65 27 76 65 20 62 6c 6f 63 6b 65 64 20 69 74 20 6f 75 72 73 65 6c 76 65 73 3f 20 20 57 f.we've.blocked.it.ourselves?..W
25000 68 61 74 20 61 62 6f 75 74 0a 09 09 09 20 20 20 61 6c 61 72 6d 73 3f 20 20 57 68 79 2c 20 69 6e hat.about.......alarms?..Why,.in
25020 20 66 61 63 74 2c 20 61 72 65 20 77 65 20 6d 75 63 6b 69 6e 67 20 77 69 74 68 20 74 68 65 0a 09 .fact,.are.we.mucking.with.the..
25040 09 09 20 20 20 73 69 67 6d 61 73 6b 20 61 74 20 61 6c 6c 3f 20 2d 2d 20 72 7e 20 2a 2f 0a 09 09 .....sigmask.at.all?.--.r~.*/...
25060 09 69 66 20 28 63 75 72 72 65 6e 74 2d 3e 73 69 67 68 61 6e 64 2d 3e 61 63 74 69 6f 6e 5b 53 49 .if.(current->sighand->action[SI
25080 47 49 4e 54 20 2d 20 31 5d 2e 73 61 2e 73 61 5f 68 61 6e 64 6c 65 72 20 3d 3d 20 53 49 47 5f 44 GINT.-.1].sa.sa_handler.==.SIG_D
250a0 46 4c 29 0a 09 09 09 09 6d 61 73 6b 20 7c 3d 20 73 69 67 6d 61 73 6b 28 53 49 47 49 4e 54 29 3b FL).....mask.|=.sigmask(SIGINT);
250c0 0a 09 09 09 69 66 20 28 63 75 72 72 65 6e 74 2d 3e 73 69 67 68 61 6e 64 2d 3e 61 63 74 69 6f 6e ....if.(current->sighand->action
250e0 5b 53 49 47 51 55 49 54 20 2d 20 31 5d 2e 73 61 2e 73 61 5f 68 61 6e 64 6c 65 72 20 3d 3d 20 53 [SIGQUIT.-.1].sa.sa_handler.==.S
25100 49 47 5f 44 46 4c 29 0a 09 09 09 09 6d 61 73 6b 20 7c 3d 20 73 69 67 6d 61 73 6b 28 53 49 47 51 IG_DFL).....mask.|=.sigmask(SIGQ
25120 55 49 54 29 3b 0a 09 09 7d 0a 09 09 73 69 67 69 6e 69 74 73 65 74 69 6e 76 28 26 63 75 72 72 65 UIT);...}...siginitsetinv(&curre
25140 6e 74 2d 3e 62 6c 6f 63 6b 65 64 2c 20 6d 61 73 6b 29 3b 0a 09 09 72 65 63 61 6c 63 5f 73 69 67 nt->blocked,.mask);...recalc_sig
25160 70 65 6e 64 69 6e 67 28 29 3b 0a 09 09 73 70 69 6e 5f 75 6e 6c 6f 63 6b 5f 69 72 71 72 65 73 74 pending();...spin_unlock_irqrest
25180 6f 72 65 28 26 63 75 72 72 65 6e 74 2d 3e 73 69 67 68 61 6e 64 2d 3e 73 69 67 6c 6f 63 6b 2c 20 ore(&current->sighand->siglock,.
251a0 66 6c 61 67 73 29 3b 0a 09 09 0a 09 09 72 65 73 75 6c 74 20 3d 20 64 6f 5f 6e 63 70 5f 72 70 63 flags);......result.=.do_ncp_rpc
251c0 5f 63 61 6c 6c 28 73 65 72 76 65 72 2c 20 73 69 7a 65 2c 20 72 65 70 6c 79 2c 20 6d 61 78 5f 72 _call(server,.size,.reply,.max_r
251e0 65 70 6c 79 5f 73 69 7a 65 29 3b 0a 0a 09 09 73 70 69 6e 5f 6c 6f 63 6b 5f 69 72 71 73 61 76 65 eply_size);....spin_lock_irqsave
25200 28 26 63 75 72 72 65 6e 74 2d 3e 73 69 67 68 61 6e 64 2d 3e 73 69 67 6c 6f 63 6b 2c 20 66 6c 61 (&current->sighand->siglock,.fla
25220 67 73 29 3b 0a 09 09 63 75 72 72 65 6e 74 2d 3e 62 6c 6f 63 6b 65 64 20 3d 20 6f 6c 64 5f 73 65 gs);...current->blocked.=.old_se
25240 74 3b 0a 09 09 72 65 63 61 6c 63 5f 73 69 67 70 65 6e 64 69 6e 67 28 29 3b 0a 09 09 73 70 69 6e t;...recalc_sigpending();...spin
25260 5f 75 6e 6c 6f 63 6b 5f 69 72 71 72 65 73 74 6f 72 65 28 26 63 75 72 72 65 6e 74 2d 3e 73 69 67 _unlock_irqrestore(&current->sig
25280 68 61 6e 64 2d 3e 73 69 67 6c 6f 63 6b 2c 20 66 6c 61 67 73 29 3b 0a 09 7d 0a 0a 09 6e 63 70 5f hand->siglock,.flags);..}...ncp_
252a0 64 62 67 28 32 2c 20 22 64 6f 5f 6e 63 70 5f 72 70 63 5f 63 61 6c 6c 20 72 65 74 75 72 6e 65 64 dbg(2,."do_ncp_rpc_call.returned
252c0 20 25 64 5c 6e 22 2c 20 72 65 73 75 6c 74 29 3b 0a 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 .%d\n",.result);...return.result
252e0 3b 0a 7d 0a 0a 2f 2a 20 6e 63 70 5f 64 6f 5f 72 65 71 75 65 73 74 20 61 73 73 75 72 65 73 20 74 ;.}../*.ncp_do_request.assures.t
25300 68 61 74 20 61 74 20 6c 65 61 73 74 20 61 20 63 6f 6d 70 6c 65 74 65 20 72 65 70 6c 79 20 68 65 hat.at.least.a.complete.reply.he
25320 61 64 65 72 20 69 73 0a 20 2a 20 72 65 63 65 69 76 65 64 2e 20 49 74 20 61 73 73 75 6d 65 73 20 ader.is..*.received..It.assumes.
25340 74 68 61 74 20 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a 65 20 63 6f 6e 74 61 69 that.server->current_size.contai
25360 6e 73 20 74 68 65 20 6e 63 70 0a 20 2a 20 72 65 71 75 65 73 74 20 73 69 7a 65 0a 20 2a 2f 0a 69 ns.the.ncp..*.request.size..*/.i
25380 6e 74 20 6e 63 70 5f 72 65 71 75 65 73 74 32 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 nt.ncp_request2(struct.ncp_serve
253a0 72 20 2a 73 65 72 76 65 72 2c 20 69 6e 74 20 66 75 6e 63 74 69 6f 6e 2c 20 0a 09 09 76 6f 69 64 r.*server,.int.function,....void
253c0 2a 20 72 70 6c 2c 20 69 6e 74 20 73 69 7a 65 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 72 *.rpl,.int.size).{..struct.ncp_r
253e0 65 71 75 65 73 74 5f 68 65 61 64 65 72 20 2a 68 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 72 65 equest_header.*h;..struct.ncp_re
25400 70 6c 79 5f 68 65 61 64 65 72 2a 20 72 65 70 6c 79 20 3d 20 72 70 6c 3b 0a 09 69 6e 74 20 72 65 ply_header*.reply.=.rpl;..int.re
25420 73 75 6c 74 3b 0a 0a 09 68 20 3d 20 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f sult;...h.=.(struct.ncp_request_
25440 68 65 61 64 65 72 20 2a 29 20 28 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 29 3b 0a 09 69 66 20 header.*).(server->packet);..if.
25460 28 73 65 72 76 65 72 2d 3e 68 61 73 5f 73 75 62 66 75 6e 63 74 69 6f 6e 20 21 3d 20 30 29 20 7b (server->has_subfunction.!=.0).{
25480 0a 09 09 2a 28 5f 5f 75 31 36 20 2a 29 20 26 20 28 68 2d 3e 64 61 74 61 5b 30 5d 29 20 3d 20 68 ...*(__u16.*).&.(h->data[0]).=.h
254a0 74 6f 6e 73 28 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a 65 20 2d 20 73 69 7a 65 tons(server->current_size.-.size
254c0 6f 66 28 2a 68 29 20 2d 20 32 29 3b 0a 09 7d 0a 09 68 2d 3e 74 79 70 65 20 3d 20 4e 43 50 5f 52 of(*h).-.2);..}..h->type.=.NCP_R
254e0 45 51 55 45 53 54 3b 0a 09 2f 2a 0a 09 20 2a 20 54 68 65 20 73 65 72 76 65 72 20 73 68 6f 75 6c EQUEST;../*...*.The.server.shoul
25500 64 6e 27 74 20 6b 6e 6f 77 20 6f 72 20 63 61 72 65 20 77 68 61 74 20 74 61 73 6b 20 69 73 20 6d dn't.know.or.care.what.task.is.m
25520 61 6b 69 6e 67 20 61 0a 09 20 2a 20 72 65 71 75 65 73 74 2c 20 73 6f 20 77 65 20 61 6c 77 61 79 aking.a...*.request,.so.we.alway
25540 73 20 75 73 65 20 74 68 65 20 73 61 6d 65 20 74 61 73 6b 20 6e 75 6d 62 65 72 2e 0a 09 20 2a 2f s.use.the.same.task.number....*/
25560 0a 09 68 2d 3e 74 61 73 6b 20 3d 20 32 3b 20 2f 2a 20 28 63 75 72 72 65 6e 74 2d 3e 70 69 64 29 ..h->task.=.2;./*.(current->pid)
25580 20 26 20 30 78 66 66 3b 20 2a 2f 0a 09 68 2d 3e 66 75 6e 63 74 69 6f 6e 20 3d 20 66 75 6e 63 74 .&.0xff;.*/..h->function.=.funct
255a0 69 6f 6e 3b 0a 0a 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 64 6f 5f 72 65 71 75 65 73 74 28 73 ion;...result.=.ncp_do_request(s
255c0 65 72 76 65 72 2c 20 73 65 72 76 65 72 2d 3e 63 75 72 72 65 6e 74 5f 73 69 7a 65 2c 20 72 65 70 erver,.server->current_size,.rep
255e0 6c 79 2c 20 73 69 7a 65 29 3b 0a 09 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 20 7b 0a 09 09 ly,.size);..if.(result.<.0).{...
25600 6e 63 70 5f 64 62 67 28 31 2c 20 22 6e 63 70 5f 72 65 71 75 65 73 74 5f 65 72 72 6f 72 3a 20 25 ncp_dbg(1,."ncp_request_error:.%
25620 64 5c 6e 22 2c 20 72 65 73 75 6c 74 29 3b 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 7d 0a 09 73 d\n",.result);...goto.out;..}..s
25640 65 72 76 65 72 2d 3e 63 6f 6d 70 6c 65 74 69 6f 6e 20 3d 20 72 65 70 6c 79 2d 3e 63 6f 6d 70 6c erver->completion.=.reply->compl
25660 65 74 69 6f 6e 5f 63 6f 64 65 3b 0a 09 73 65 72 76 65 72 2d 3e 63 6f 6e 6e 5f 73 74 61 74 75 73 etion_code;..server->conn_status
25680 20 3d 20 72 65 70 6c 79 2d 3e 63 6f 6e 6e 65 63 74 69 6f 6e 5f 73 74 61 74 65 3b 0a 09 73 65 72 .=.reply->connection_state;..ser
256a0 76 65 72 2d 3e 72 65 70 6c 79 5f 73 69 7a 65 20 3d 20 72 65 73 75 6c 74 3b 0a 09 73 65 72 76 65 ver->reply_size.=.result;..serve
256c0 72 2d 3e 6e 63 70 5f 72 65 70 6c 79 5f 73 69 7a 65 20 3d 20 72 65 73 75 6c 74 20 2d 20 73 69 7a r->ncp_reply_size.=.result.-.siz
256e0 65 6f 66 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 70 6c 79 5f 68 65 61 64 65 72 29 3b 0a 0a 09 eof(struct.ncp_reply_header);...
25700 72 65 73 75 6c 74 20 3d 20 72 65 70 6c 79 2d 3e 63 6f 6d 70 6c 65 74 69 6f 6e 5f 63 6f 64 65 3b result.=.reply->completion_code;
25720 0a 0a 09 69 66 20 28 72 65 73 75 6c 74 20 21 3d 20 30 29 0a 09 09 6e 63 70 5f 76 64 62 67 28 22 ...if.(result.!=.0)...ncp_vdbg("
25740 63 6f 6d 70 6c 65 74 69 6f 6e 20 63 6f 64 65 3d 25 78 5c 6e 22 2c 20 72 65 73 75 6c 74 29 3b 0a completion.code=%x\n",.result);.
25760 6f 75 74 3a 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 69 6e 74 20 6e 63 70 5f out:..return.result;.}..int.ncp_
25780 63 6f 6e 6e 65 63 74 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 connect(struct.ncp_server.*serve
257a0 72 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 68 65 61 64 65 72 20 r).{..struct.ncp_request_header.
257c0 2a 68 3b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 73 65 72 76 65 72 2d 3e 63 6f 6e 6e 65 *h;..int.result;...server->conne
257e0 63 74 69 6f 6e 20 3d 20 30 78 46 46 46 46 3b 0a 09 73 65 72 76 65 72 2d 3e 73 65 71 75 65 6e 63 ction.=.0xFFFF;..server->sequenc
25800 65 20 3d 20 32 35 35 3b 0a 0a 09 68 20 3d 20 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 e.=.255;...h.=.(struct.ncp_reque
25820 73 74 5f 68 65 61 64 65 72 20 2a 29 20 28 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 29 3b 0a 09 st_header.*).(server->packet);..
25840 68 2d 3e 74 79 70 65 20 3d 20 4e 43 50 5f 41 4c 4c 4f 43 5f 53 4c 4f 54 5f 52 45 51 55 45 53 54 h->type.=.NCP_ALLOC_SLOT_REQUEST
25860 3b 0a 09 68 2d 3e 74 61 73 6b 09 09 3d 20 32 3b 20 2f 2a 20 73 65 65 20 61 62 6f 76 65 20 2a 2f ;..h->task..=.2;./*.see.above.*/
25880 0a 09 68 2d 3e 66 75 6e 63 74 69 6f 6e 09 3d 20 30 3b 0a 0a 09 72 65 73 75 6c 74 20 3d 20 6e 63 ..h->function.=.0;...result.=.nc
258a0 70 5f 64 6f 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 73 69 7a 65 6f 66 28 2a 68 29 2c p_do_request(server,.sizeof(*h),
258c0 20 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 2c 20 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 5f .server->packet,.server->packet_
258e0 73 69 7a 65 29 3b 0a 09 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 0a 09 09 67 6f 74 6f 20 6f size);..if.(result.<.0)...goto.o
25900 75 74 3b 0a 09 73 65 72 76 65 72 2d 3e 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d 20 68 2d 3e 63 6f 6e ut;..server->connection.=.h->con
25920 6e 5f 6c 6f 77 20 2b 20 28 68 2d 3e 63 6f 6e 6e 5f 68 69 67 68 20 2a 20 32 35 36 29 3b 0a 09 72 n_low.+.(h->conn_high.*.256);..r
25940 65 73 75 6c 74 20 3d 20 30 3b 0a 6f 75 74 3a 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a esult.=.0;.out:..return.result;.
25960 7d 0a 0a 69 6e 74 20 6e 63 70 5f 64 69 73 63 6f 6e 6e 65 63 74 28 73 74 72 75 63 74 20 6e 63 70 }..int.ncp_disconnect(struct.ncp
25980 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 72 _server.*server).{..struct.ncp_r
259a0 65 71 75 65 73 74 5f 68 65 61 64 65 72 20 2a 68 3b 0a 0a 09 68 20 3d 20 28 73 74 72 75 63 74 20 equest_header.*h;...h.=.(struct.
259c0 6e 63 70 5f 72 65 71 75 65 73 74 5f 68 65 61 64 65 72 20 2a 29 20 28 73 65 72 76 65 72 2d 3e 70 ncp_request_header.*).(server->p
259e0 61 63 6b 65 74 29 3b 0a 09 68 2d 3e 74 79 70 65 20 3d 20 4e 43 50 5f 44 45 41 4c 4c 4f 43 5f 53 acket);..h->type.=.NCP_DEALLOC_S
25a00 4c 4f 54 5f 52 45 51 55 45 53 54 3b 0a 09 68 2d 3e 74 61 73 6b 09 09 3d 20 32 3b 20 2f 2a 20 73 LOT_REQUEST;..h->task..=.2;./*.s
25a20 65 65 20 61 62 6f 76 65 20 2a 2f 0a 09 68 2d 3e 66 75 6e 63 74 69 6f 6e 09 3d 20 30 3b 0a 0a 09 ee.above.*/..h->function.=.0;...
25a40 72 65 74 75 72 6e 20 6e 63 70 5f 64 6f 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 73 69 return.ncp_do_request(server,.si
25a60 7a 65 6f 66 28 2a 68 29 2c 20 73 65 72 76 65 72 2d 3e 70 61 63 6b 65 74 2c 20 73 65 72 76 65 72 zeof(*h),.server->packet,.server
25a80 2d 3e 70 61 63 6b 65 74 5f 73 69 7a 65 29 3b 0a 7d 0a 0a 76 6f 69 64 20 6e 63 70 5f 6c 6f 63 6b ->packet_size);.}..void.ncp_lock
25aa0 5f 73 65 72 76 65 72 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 _server(struct.ncp_server.*serve
25ac0 72 29 0a 7b 0a 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 6d 75 74 65 78 29 r).{..mutex_lock(&server->mutex)
25ae0 3b 0a 09 69 66 20 28 73 65 72 76 65 72 2d 3e 6c 6f 63 6b 29 0a 09 09 70 72 5f 77 61 72 6e 28 22 ;..if.(server->lock)...pr_warn("
25b00 25 73 3a 20 77 61 73 20 6c 6f 63 6b 65 64 21 5c 6e 22 2c 20 5f 5f 66 75 6e 63 5f 5f 29 3b 0a 09 %s:.was.locked!\n",.__func__);..
25b20 73 65 72 76 65 72 2d 3e 6c 6f 63 6b 20 3d 20 31 3b 0a 7d 0a 0a 76 6f 69 64 20 6e 63 70 5f 75 6e server->lock.=.1;.}..void.ncp_un
25b40 6c 6f 63 6b 5f 73 65 72 76 65 72 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 lock_server(struct.ncp_server.*s
25b60 65 72 76 65 72 29 0a 7b 0a 09 69 66 20 28 21 73 65 72 76 65 72 2d 3e 6c 6f 63 6b 29 20 7b 0a 09 erver).{..if.(!server->lock).{..
25b80 09 70 72 5f 77 61 72 6e 28 22 25 73 3a 20 77 61 73 20 6e 6f 74 20 6c 6f 63 6b 65 64 21 5c 6e 22 .pr_warn("%s:.was.not.locked!\n"
25ba0 2c 20 5f 5f 66 75 6e 63 5f 5f 29 3b 0a 09 09 72 65 74 75 72 6e 3b 0a 09 7d 0a 09 73 65 72 76 65 ,.__func__);...return;..}..serve
25bc0 72 2d 3e 6c 6f 63 6b 20 3d 20 30 3b 0a 09 6d 75 74 65 78 5f 75 6e 6c 6f 63 6b 28 26 73 65 72 76 r->lock.=.0;..mutex_unlock(&serv
25be0 65 72 2d 3e 6d 75 74 65 78 29 3b 0a 7d 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 er->mutex);.}...................
25c00 6e 63 70 66 73 2f 73 79 6d 6c 69 6e 6b 2e 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ncpfs/symlink.c.................
25c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
25c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
25c60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 ....0000644.0001750.0001750.0000
25c80 30 30 31 30 33 37 32 00 31 33 30 32 33 33 32 33 31 34 32 00 30 31 33 30 32 33 00 20 30 00 00 00 0010372.13023323142.013023..0...
25ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
25cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
25ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
25d00 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...kubax..................
25d20 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........kubax..................
25d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
25d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
25d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
25da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
25dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
25de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
25e00 2f 2a 0a 20 2a 20 20 6c 69 6e 75 78 2f 66 73 2f 6e 63 70 66 73 2f 73 79 6d 6c 69 6e 6b 2e 63 0a /*..*..linux/fs/ncpfs/symlink.c.
25e20 20 2a 0a 20 2a 20 20 43 6f 64 65 20 66 6f 72 20 61 6c 6c 6f 77 69 6e 67 20 73 79 6d 62 6f 6c 69 .*..*..Code.for.allowing.symboli
25e40 63 20 6c 69 6e 6b 73 20 6f 6e 20 4e 43 50 46 53 20 28 69 2e 65 2e 20 4e 65 74 57 61 72 65 29 0a c.links.on.NCPFS.(i.e..NetWare).
25e60 20 2a 20 20 53 79 6d 62 6f 6c 69 63 20 6c 69 6e 6b 73 20 61 72 65 20 6e 6f 74 20 73 75 70 70 6f .*..Symbolic.links.are.not.suppo
25e80 72 74 65 64 20 6f 6e 20 6e 61 74 69 76 65 20 4e 65 74 57 61 72 65 2c 20 73 6f 20 77 65 20 75 73 rted.on.native.NetWare,.so.we.us
25ea0 65 20 61 6e 0a 20 2a 20 20 69 6e 66 72 65 71 75 65 6e 74 6c 79 2d 75 73 65 64 20 66 6c 61 67 20 e.an..*..infrequently-used.flag.
25ec0 28 53 68 29 20 61 6e 64 20 73 74 6f 72 65 20 61 20 74 77 6f 2d 77 6f 72 64 20 6d 61 67 69 63 20 (Sh).and.store.a.two-word.magic.
25ee0 68 65 61 64 65 72 20 69 6e 0a 20 2a 20 20 74 68 65 20 66 69 6c 65 20 74 6f 20 6d 61 6b 65 20 73 header.in..*..the.file.to.make.s
25f00 75 72 65 20 77 65 20 64 6f 6e 27 74 20 61 63 63 69 64 65 6e 74 61 6c 6c 79 20 75 73 65 20 61 20 ure.we.don't.accidentally.use.a.
25f20 6e 6f 6e 2d 6c 69 6e 6b 20 66 69 6c 65 0a 20 2a 20 20 61 73 20 61 20 6c 69 6e 6b 2e 0a 20 2a 0a non-link.file..*..as.a.link...*.
25f40 20 2a 20 20 57 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 4e 46 53 20 6e 61 6d 65 73 70 61 63 65 .*..When.using.the.NFS.namespace
25f60 2c 20 77 65 20 73 65 74 20 74 68 65 20 6d 6f 64 65 20 74 6f 20 69 6e 64 69 63 61 74 65 20 61 20 ,.we.set.the.mode.to.indicate.a.
25f80 73 79 6d 6c 69 6e 6b 20 61 6e 64 0a 20 2a 20 20 64 6f 6e 27 74 20 62 6f 74 68 65 72 20 77 69 74 symlink.and..*..don't.bother.wit
25fa0 68 20 74 68 65 20 6d 61 67 69 63 20 6e 75 6d 62 65 72 73 2e 0a 20 2a 0a 20 2a 20 20 66 72 6f 6d h.the.magic.numbers...*..*..from
25fc0 20 6c 69 6e 75 78 2f 66 73 2f 65 78 74 32 2f 73 79 6d 6c 69 6e 6b 2e 63 0a 20 2a 0a 20 2a 20 20 .linux/fs/ext2/symlink.c..*..*..
25fe0 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 31 39 39 38 2d 39 39 2c 20 46 72 61 6e 6b 20 41 2e 20 Copyright.(C).1998-99,.Frank.A..
26000 56 6f 72 73 74 65 6e 62 6f 73 63 68 0a 20 2a 0a 20 2a 20 20 6e 63 70 66 73 20 73 79 6d 6c 69 6e Vorstenbosch..*..*..ncpfs.symlin
26020 6b 20 68 61 6e 64 6c 69 6e 67 20 63 6f 64 65 0a 20 2a 20 20 4e 4c 53 20 73 75 70 70 6f 72 74 20 k.handling.code..*..NLS.support.
26040 28 63 29 20 31 39 39 39 20 50 65 74 72 20 56 61 6e 64 72 6f 76 65 63 0a 20 2a 20 20 4d 6f 64 69 (c).1999.Petr.Vandrovec..*..Modi
26060 66 69 65 64 20 32 30 30 30 20 42 65 6e 20 48 61 72 72 69 73 2c 20 55 6e 69 76 65 72 73 69 74 79 fied.2000.Ben.Harris,.University
26080 20 6f 66 20 43 61 6d 62 72 69 64 67 65 20 66 6f 72 20 4e 46 53 20 4e 53 20 6d 65 74 61 2d 69 6e .of.Cambridge.for.NFS.NS.meta-in
260a0 66 6f 0a 20 2a 0a 20 2a 2f 0a 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 61 73 6d 2f 75 61 63 63 65 73 fo..*..*/...#include.<asm/uacces
260c0 73 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 65 72 72 6e 6f 2e 68 3e 0a 23 s.h>..#include.<linux/errno.h>.#
260e0 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 66 73 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c include.<linux/fs.h>.#include.<l
26100 69 6e 75 78 2f 74 69 6d 65 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 6c 61 inux/time.h>.#include.<linux/sla
26120 62 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6d 6d 2e 68 3e 0a 23 69 6e 63 6c b.h>.#include.<linux/mm.h>.#incl
26140 75 64 65 20 3c 6c 69 6e 75 78 2f 73 74 61 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 22 6e 63 70 ude.<linux/stat.h>.#include."ncp
26160 5f 66 73 2e 68 22 0a 0a 2f 2a 20 74 68 65 73 65 20 6d 61 67 69 63 20 6e 75 6d 62 65 72 73 20 6d _fs.h"../*.these.magic.numbers.m
26180 75 73 74 20 61 70 70 65 61 72 20 69 6e 20 74 68 65 20 73 79 6d 6c 69 6e 6b 20 66 69 6c 65 20 2d ust.appear.in.the.symlink.file.-
261a0 2d 20 74 68 69 73 20 6d 61 6b 65 73 20 69 74 20 61 20 62 69 74 0a 20 20 20 6d 6f 72 65 20 72 65 -.this.makes.it.a.bit....more.re
261c0 73 69 6c 69 65 6e 74 20 61 67 61 69 6e 73 74 20 74 68 65 20 6d 61 67 69 63 20 61 74 74 72 69 62 silient.against.the.magic.attrib
261e0 75 74 65 73 20 62 65 69 6e 67 20 73 65 74 20 6f 6e 20 72 61 6e 64 6f 6d 20 66 69 6c 65 73 2e 20 utes.being.set.on.random.files..
26200 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 53 59 4d 4c 49 4e 4b 5f 4d 41 47 49 43 30 09 63 */..#define.NCP_SYMLINK_MAGIC0.c
26220 70 75 5f 74 6f 5f 6c 65 33 32 28 30 78 36 63 36 64 37 39 37 33 29 20 20 20 20 20 2f 2a 20 22 73 pu_to_le32(0x6c6d7973)...../*."s
26240 79 6d 6c 6e 6b 2d 3e 22 20 2a 2f 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 53 59 4d 4c 49 4e 4b 5f ymlnk->".*/.#define.NCP_SYMLINK_
26260 4d 41 47 49 43 31 09 63 70 75 5f 74 6f 5f 6c 65 33 32 28 30 78 33 65 32 64 36 62 36 65 29 0a 0a MAGIC1.cpu_to_le32(0x3e2d6b6e)..
26280 2f 2a 20 2d 2d 2d 2d 2d 20 72 65 61 64 20 61 20 73 79 6d 62 6f 6c 69 63 20 6c 69 6e 6b 20 2d 2d /*.-----.read.a.symbolic.link.--
262a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
262c0 2d 2d 2d 2d 2d 2d 2d 2d 20 2a 2f 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 73 79 6d 6c --------.*/..static.int.ncp_syml
262e0 69 6e 6b 5f 72 65 61 64 70 61 67 65 28 73 74 72 75 63 74 20 66 69 6c 65 20 2a 66 69 6c 65 2c 20 ink_readpage(struct.file.*file,.
26300 73 74 72 75 63 74 20 70 61 67 65 20 2a 70 61 67 65 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f struct.page.*page).{..struct.ino
26320 64 65 20 2a 69 6e 6f 64 65 20 3d 20 70 61 67 65 2d 3e 6d 61 70 70 69 6e 67 2d 3e 68 6f 73 74 3b de.*inode.=.page->mapping->host;
26340 0a 09 69 6e 74 20 65 72 72 6f 72 2c 20 6c 65 6e 67 74 68 2c 20 6c 65 6e 3b 0a 09 63 68 61 72 20 ..int.error,.length,.len;..char.
26360 2a 6c 69 6e 6b 2c 20 2a 72 61 77 6c 69 6e 6b 3b 0a 09 63 68 61 72 20 2a 62 75 66 20 3d 20 6b 6d *link,.*rawlink;..char.*buf.=.km
26380 61 70 28 70 61 67 65 29 3b 0a 0a 09 65 72 72 6f 72 20 3d 20 2d 45 4e 4f 4d 45 4d 3b 0a 09 72 61 ap(page);...error.=.-ENOMEM;..ra
263a0 77 6c 69 6e 6b 20 3d 20 6b 6d 61 6c 6c 6f 63 28 4e 43 50 5f 4d 41 58 5f 53 59 4d 4c 49 4e 4b 5f wlink.=.kmalloc(NCP_MAX_SYMLINK_
263c0 53 49 5a 45 2c 20 47 46 50 5f 4b 45 52 4e 45 4c 29 3b 0a 09 69 66 20 28 21 72 61 77 6c 69 6e 6b SIZE,.GFP_KERNEL);..if.(!rawlink
263e0 29 0a 09 09 67 6f 74 6f 20 66 61 69 6c 3b 0a 0a 09 69 66 20 28 6e 63 70 5f 6d 61 6b 65 5f 6f 70 )...goto.fail;...if.(ncp_make_op
26400 65 6e 28 69 6e 6f 64 65 2c 4f 5f 52 44 4f 4e 4c 59 29 29 0a 09 09 67 6f 74 6f 20 66 61 69 6c 45 en(inode,O_RDONLY))...goto.failE
26420 49 4f 3b 0a 0a 09 65 72 72 6f 72 3d 6e 63 70 5f 72 65 61 64 5f 6b 65 72 6e 65 6c 28 4e 43 50 5f IO;...error=ncp_read_kernel(NCP_
26440 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2c 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e SERVER(inode),NCP_FINFO(inode)->
26460 66 69 6c 65 5f 68 61 6e 64 6c 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 file_handle,....................
26480 20 20 20 20 20 20 30 2c 4e 43 50 5f 4d 41 58 5f 53 59 4d 4c 49 4e 4b 5f 53 49 5a 45 2c 72 61 77 ......0,NCP_MAX_SYMLINK_SIZE,raw
264a0 6c 69 6e 6b 2c 26 6c 65 6e 67 74 68 29 3b 0a 0a 09 6e 63 70 5f 69 6e 6f 64 65 5f 63 6c 6f 73 65 link,&length);...ncp_inode_close
264c0 28 69 6e 6f 64 65 29 3b 0a 09 2f 2a 20 43 6c 6f 73 65 20 66 69 6c 65 20 68 61 6e 64 6c 65 20 69 (inode);../*.Close.file.handle.i
264e0 66 20 6e 6f 20 6f 74 68 65 72 20 75 73 65 72 73 2e 2e 2e 20 2a 2f 0a 09 6e 63 70 5f 6d 61 6b 65 f.no.other.users....*/..ncp_make
26500 5f 63 6c 6f 73 65 64 28 69 6e 6f 64 65 29 3b 0a 09 69 66 20 28 65 72 72 6f 72 29 0a 09 09 67 6f _closed(inode);..if.(error)...go
26520 74 6f 20 66 61 69 6c 45 49 4f 3b 0a 0a 09 69 66 20 28 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 to.failEIO;...if.(NCP_FINFO(inod
26540 65 29 2d 3e 66 6c 61 67 73 20 26 20 4e 43 50 49 5f 4b 4c 55 44 47 45 5f 53 59 4d 4c 49 4e 4b 29 e)->flags.&.NCPI_KLUDGE_SYMLINK)
26560 20 7b 0a 09 09 69 66 20 28 6c 65 6e 67 74 68 3c 4e 43 50 5f 4d 49 4e 5f 53 59 4d 4c 49 4e 4b 5f .{...if.(length<NCP_MIN_SYMLINK_
26580 53 49 5a 45 20 7c 7c 20 0a 09 09 20 20 20 20 28 28 5f 5f 6c 65 33 32 20 2a 29 72 61 77 6c 69 6e SIZE.||........((__le32.*)rawlin
265a0 6b 29 5b 30 5d 21 3d 4e 43 50 5f 53 59 4d 4c 49 4e 4b 5f 4d 41 47 49 43 30 20 7c 7c 0a 09 09 20 k)[0]!=NCP_SYMLINK_MAGIC0.||....
265c0 20 20 20 28 28 5f 5f 6c 65 33 32 20 2a 29 72 61 77 6c 69 6e 6b 29 5b 31 5d 21 3d 4e 43 50 5f 53 ...((__le32.*)rawlink)[1]!=NCP_S
265e0 59 4d 4c 49 4e 4b 5f 4d 41 47 49 43 31 29 0a 09 09 20 20 20 20 09 67 6f 74 6f 20 66 61 69 6c 45 YMLINK_MAGIC1)........goto.failE
26600 49 4f 3b 0a 09 09 6c 69 6e 6b 20 3d 20 72 61 77 6c 69 6e 6b 20 2b 20 38 3b 0a 09 09 6c 65 6e 67 IO;...link.=.rawlink.+.8;...leng
26620 74 68 20 2d 3d 20 38 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 6c 69 6e 6b 20 3d 20 72 61 77 6c th.-=.8;..}.else.{...link.=.rawl
26640 69 6e 6b 3b 0a 09 7d 0a 0a 09 6c 65 6e 20 3d 20 4e 43 50 5f 4d 41 58 5f 53 59 4d 4c 49 4e 4b 5f ink;..}...len.=.NCP_MAX_SYMLINK_
26660 53 49 5a 45 3b 0a 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 76 6f 6c 32 69 6f 28 4e 43 50 5f 53 45 SIZE;..error.=.ncp_vol2io(NCP_SE
26680 52 56 45 52 28 69 6e 6f 64 65 29 2c 20 62 75 66 2c 20 26 6c 65 6e 2c 20 6c 69 6e 6b 2c 20 6c 65 RVER(inode),.buf,.&len,.link,.le
266a0 6e 67 74 68 2c 20 30 29 3b 0a 09 6b 66 72 65 65 28 72 61 77 6c 69 6e 6b 29 3b 0a 09 69 66 20 28 ngth,.0);..kfree(rawlink);..if.(
266c0 65 72 72 6f 72 29 0a 09 09 67 6f 74 6f 20 66 61 69 6c 3b 0a 09 53 65 74 50 61 67 65 55 70 74 6f error)...goto.fail;..SetPageUpto
266e0 64 61 74 65 28 70 61 67 65 29 3b 0a 09 6b 75 6e 6d 61 70 28 70 61 67 65 29 3b 0a 09 75 6e 6c 6f date(page);..kunmap(page);..unlo
26700 63 6b 5f 70 61 67 65 28 70 61 67 65 29 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 0a 66 61 69 6c 45 ck_page(page);..return.0;..failE
26720 49 4f 3a 0a 09 65 72 72 6f 72 20 3d 20 2d 45 49 4f 3b 0a 09 6b 66 72 65 65 28 72 61 77 6c 69 6e IO:..error.=.-EIO;..kfree(rawlin
26740 6b 29 3b 0a 66 61 69 6c 3a 0a 09 53 65 74 50 61 67 65 45 72 72 6f 72 28 70 61 67 65 29 3b 0a 09 k);.fail:..SetPageError(page);..
26760 6b 75 6e 6d 61 70 28 70 61 67 65 29 3b 0a 09 75 6e 6c 6f 63 6b 5f 70 61 67 65 28 70 61 67 65 29 kunmap(page);..unlock_page(page)
26780 3b 0a 09 72 65 74 75 72 6e 20 65 72 72 6f 72 3b 0a 7d 0a 0a 2f 2a 0a 20 2a 20 73 79 6d 6c 69 6e ;..return.error;.}../*..*.symlin
267a0 6b 73 20 63 61 6e 27 74 20 64 6f 20 6d 75 63 68 2e 2e 2e 0a 20 2a 2f 0a 63 6f 6e 73 74 20 73 74 ks.can't.do.much.....*/.const.st
267c0 72 75 63 74 20 61 64 64 72 65 73 73 5f 73 70 61 63 65 5f 6f 70 65 72 61 74 69 6f 6e 73 20 6e 63 ruct.address_space_operations.nc
267e0 70 5f 73 79 6d 6c 69 6e 6b 5f 61 6f 70 73 20 3d 20 7b 0a 09 2e 72 65 61 64 70 61 67 65 09 3d 20 p_symlink_aops.=.{...readpage.=.
26800 6e 63 70 5f 73 79 6d 6c 69 6e 6b 5f 72 65 61 64 70 61 67 65 2c 0a 7d 3b 0a 09 0a 2f 2a 20 2d 2d ncp_symlink_readpage,.};.../*.--
26820 2d 2d 2d 20 63 72 65 61 74 65 20 61 20 6e 65 77 20 73 79 6d 62 6f 6c 69 63 20 6c 69 6e 6b 20 2d ---.create.a.new.symbolic.link.-
26840 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
26860 2d 2d 2d 2d 2d 20 2a 2f 0a 20 0a 69 6e 74 20 6e 63 70 5f 73 79 6d 6c 69 6e 6b 28 73 74 72 75 63 -----.*/...int.ncp_symlink(struc
26880 74 20 69 6e 6f 64 65 20 2a 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e t.inode.*dir,.struct.dentry.*den
268a0 74 72 79 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 79 6d 6e 61 6d 65 29 20 7b 0a 09 73 74 72 try,.const.char.*symname).{..str
268c0 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 3b 0a 09 63 68 61 72 20 2a 72 61 77 6c 69 6e 6b uct.inode.*inode;..char.*rawlink
268e0 3b 0a 09 69 6e 74 20 6c 65 6e 67 74 68 2c 20 65 72 72 2c 20 69 2c 20 6f 75 74 6c 65 6e 3b 0a 09 ;..int.length,.err,.i,.outlen;..
26900 69 6e 74 20 6b 6c 75 64 67 65 3b 0a 09 75 6d 6f 64 65 5f 74 20 6d 6f 64 65 3b 0a 09 5f 5f 6c 65 int.kludge;..umode_t.mode;..__le
26920 33 32 20 61 74 74 72 3b 0a 09 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 68 64 72 3b 0a 0a 09 6e 63 32.attr;..unsigned.int.hdr;...nc
26940 70 5f 64 62 67 28 31 2c 20 22 64 69 72 3d 25 70 2c 20 64 65 6e 74 72 79 3d 25 70 2c 20 73 79 6d p_dbg(1,."dir=%p,.dentry=%p,.sym
26960 6e 61 6d 65 3d 25 73 5c 6e 22 2c 20 64 69 72 2c 20 64 65 6e 74 72 79 2c 20 73 79 6d 6e 61 6d 65 name=%s\n",.dir,.dentry,.symname
26980 29 3b 0a 0a 09 69 66 20 28 6e 63 70 5f 69 73 5f 6e 66 73 5f 65 78 74 72 61 73 28 4e 43 50 5f 53 );...if.(ncp_is_nfs_extras(NCP_S
269a0 45 52 56 45 52 28 64 69 72 29 2c 20 4e 43 50 5f 46 49 4e 46 4f 28 64 69 72 29 2d 3e 76 6f 6c 4e ERVER(dir),.NCP_FINFO(dir)->volN
269c0 75 6d 62 65 72 29 29 0a 09 09 6b 6c 75 64 67 65 20 3d 20 30 3b 0a 09 65 6c 73 65 0a 23 69 66 64 umber))...kludge.=.0;..else.#ifd
269e0 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 45 58 54 52 41 53 0a 09 69 66 20 28 4e 43 50 5f ef.CONFIG_NCPFS_EXTRAS..if.(NCP_
26a00 53 45 52 56 45 52 28 64 69 72 29 2d 3e 6d 2e 66 6c 61 67 73 20 26 20 4e 43 50 5f 4d 4f 55 4e 54 SERVER(dir)->m.flags.&.NCP_MOUNT
26a20 5f 53 59 4d 4c 49 4e 4b 53 29 0a 09 09 6b 6c 75 64 67 65 20 3d 20 31 3b 0a 09 65 6c 73 65 0a 23 _SYMLINKS)...kludge.=.1;..else.#
26a40 65 6e 64 69 66 0a 09 2f 2a 20 45 50 45 52 4d 20 69 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 56 endif../*.EPERM.is.returned.by.V
26a60 46 53 20 69 66 20 73 79 6d 6c 69 6e 6b 20 70 72 6f 63 65 64 75 72 65 20 64 6f 65 73 20 6e 6f 74 FS.if.symlink.procedure.does.not
26a80 20 65 78 69 73 74 20 2a 2f 0a 09 09 72 65 74 75 72 6e 20 2d 45 50 45 52 4d 3b 0a 20 20 0a 09 72 .exist.*/...return.-EPERM;.....r
26aa0 61 77 6c 69 6e 6b 20 3d 20 6b 6d 61 6c 6c 6f 63 28 4e 43 50 5f 4d 41 58 5f 53 59 4d 4c 49 4e 4b awlink.=.kmalloc(NCP_MAX_SYMLINK
26ac0 5f 53 49 5a 45 2c 20 47 46 50 5f 4b 45 52 4e 45 4c 29 3b 0a 09 69 66 20 28 21 72 61 77 6c 69 6e _SIZE,.GFP_KERNEL);..if.(!rawlin
26ae0 6b 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 4e 4f 4d 45 4d 3b 0a 0a 09 69 66 20 28 6b 6c 75 64 67 k)...return.-ENOMEM;...if.(kludg
26b00 65 29 20 7b 0a 09 09 6d 6f 64 65 20 3d 20 30 3b 0a 09 09 61 74 74 72 20 3d 20 61 53 48 41 52 45 e).{...mode.=.0;...attr.=.aSHARE
26b20 44 20 7c 20 61 48 49 44 44 45 4e 3b 0a 09 09 28 28 5f 5f 6c 65 33 32 20 2a 29 72 61 77 6c 69 6e D.|.aHIDDEN;...((__le32.*)rawlin
26b40 6b 29 5b 30 5d 3d 4e 43 50 5f 53 59 4d 4c 49 4e 4b 5f 4d 41 47 49 43 30 3b 0a 09 09 28 28 5f 5f k)[0]=NCP_SYMLINK_MAGIC0;...((__
26b60 6c 65 33 32 20 2a 29 72 61 77 6c 69 6e 6b 29 5b 31 5d 3d 4e 43 50 5f 53 59 4d 4c 49 4e 4b 5f 4d le32.*)rawlink)[1]=NCP_SYMLINK_M
26b80 41 47 49 43 31 3b 0a 09 09 68 64 72 20 3d 20 38 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 6d 6f AGIC1;...hdr.=.8;..}.else.{...mo
26ba0 64 65 20 3d 20 53 5f 49 46 4c 4e 4b 20 7c 20 53 5f 49 52 57 58 55 47 4f 3b 0a 09 09 61 74 74 72 de.=.S_IFLNK.|.S_IRWXUGO;...attr
26bc0 20 3d 20 30 3b 0a 09 09 68 64 72 20 3d 20 30 3b 0a 09 7d 09 09 09 0a 0a 09 6c 65 6e 67 74 68 20 .=.0;...hdr.=.0;..}......length.
26be0 3d 20 73 74 72 6c 65 6e 28 73 79 6d 6e 61 6d 65 29 3b 0a 09 2f 2a 20 6d 61 70 20 74 6f 2f 66 72 =.strlen(symname);../*.map.to/fr
26c00 6f 6d 20 73 65 72 76 65 72 20 63 68 61 72 73 65 74 2c 20 64 6f 20 6e 6f 74 20 74 6f 75 63 68 20 om.server.charset,.do.not.touch.
26c20 75 70 70 65 72 2f 6c 6f 77 65 72 20 63 61 73 65 20 61 73 0a 09 20 20 20 73 79 6d 6c 69 6e 6b 20 upper/lower.case.as.....symlink.
26c40 63 61 6e 20 70 6f 69 6e 74 20 6f 75 74 20 6f 66 20 6e 63 70 20 66 69 6c 65 73 79 73 74 65 6d 20 can.point.out.of.ncp.filesystem.
26c60 2a 2f 0a 09 6f 75 74 6c 65 6e 20 3d 20 4e 43 50 5f 4d 41 58 5f 53 59 4d 4c 49 4e 4b 5f 53 49 5a */..outlen.=.NCP_MAX_SYMLINK_SIZ
26c80 45 20 2d 20 68 64 72 3b 0a 09 65 72 72 20 3d 20 6e 63 70 5f 69 6f 32 76 6f 6c 28 4e 43 50 5f 53 E.-.hdr;..err.=.ncp_io2vol(NCP_S
26ca0 45 52 56 45 52 28 64 69 72 29 2c 20 72 61 77 6c 69 6e 6b 20 2b 20 68 64 72 2c 20 26 6f 75 74 6c ERVER(dir),.rawlink.+.hdr,.&outl
26cc0 65 6e 2c 20 73 79 6d 6e 61 6d 65 2c 20 6c 65 6e 67 74 68 2c 20 30 29 3b 0a 09 69 66 20 28 65 72 en,.symname,.length,.0);..if.(er
26ce0 72 29 0a 09 09 67 6f 74 6f 20 66 61 69 6c 66 72 65 65 3b 0a 0a 09 6f 75 74 6c 65 6e 20 2b 3d 20 r)...goto.failfree;...outlen.+=.
26d00 68 64 72 3b 0a 0a 09 65 72 72 20 3d 20 2d 45 49 4f 3b 0a 09 69 66 20 28 6e 63 70 5f 63 72 65 61 hdr;...err.=.-EIO;..if.(ncp_crea
26d20 74 65 5f 6e 65 77 28 64 69 72 2c 64 65 6e 74 72 79 2c 6d 6f 64 65 2c 30 2c 61 74 74 72 29 29 20 te_new(dir,dentry,mode,0,attr)).
26d40 7b 0a 09 09 67 6f 74 6f 20 66 61 69 6c 66 72 65 65 3b 0a 09 7d 0a 0a 09 69 6e 6f 64 65 3d 64 5f {...goto.failfree;..}...inode=d_
26d60 69 6e 6f 64 65 28 64 65 6e 74 72 79 29 3b 0a 0a 09 69 66 20 28 6e 63 70 5f 6d 61 6b 65 5f 6f 70 inode(dentry);...if.(ncp_make_op
26d80 65 6e 28 69 6e 6f 64 65 2c 20 4f 5f 57 52 4f 4e 4c 59 29 29 0a 09 09 67 6f 74 6f 20 66 61 69 6c en(inode,.O_WRONLY))...goto.fail
26da0 66 72 65 65 3b 0a 0a 09 69 66 20 28 6e 63 70 5f 77 72 69 74 65 5f 6b 65 72 6e 65 6c 28 4e 43 50 free;...if.(ncp_write_kernel(NCP
26dc0 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2c 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 _SERVER(inode),.NCP_FINFO(inode)
26de0 2d 3e 66 69 6c 65 5f 68 61 6e 64 6c 65 2c 20 0a 09 09 09 20 20 20 20 20 30 2c 20 6f 75 74 6c 65 ->file_handle,..........0,.outle
26e00 6e 2c 20 72 61 77 6c 69 6e 6b 2c 20 26 69 29 20 7c 7c 20 69 21 3d 6f 75 74 6c 65 6e 29 20 7b 0a n,.rawlink,.&i).||.i!=outlen).{.
26e20 09 09 67 6f 74 6f 20 66 61 69 6c 3b 0a 09 7d 0a 0a 09 6e 63 70 5f 69 6e 6f 64 65 5f 63 6c 6f 73 ..goto.fail;..}...ncp_inode_clos
26e40 65 28 69 6e 6f 64 65 29 3b 0a 09 6e 63 70 5f 6d 61 6b 65 5f 63 6c 6f 73 65 64 28 69 6e 6f 64 65 e(inode);..ncp_make_closed(inode
26e60 29 3b 0a 09 6b 66 72 65 65 28 72 61 77 6c 69 6e 6b 29 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 66 );..kfree(rawlink);..return.0;.f
26e80 61 69 6c 3a 3b 0a 09 6e 63 70 5f 69 6e 6f 64 65 5f 63 6c 6f 73 65 28 69 6e 6f 64 65 29 3b 0a 09 ail:;..ncp_inode_close(inode);..
26ea0 6e 63 70 5f 6d 61 6b 65 5f 63 6c 6f 73 65 64 28 69 6e 6f 64 65 29 3b 0a 66 61 69 6c 66 72 65 65 ncp_make_closed(inode);.failfree
26ec0 3a 3b 0a 09 6b 66 72 65 65 28 72 61 77 6c 69 6e 6b 29 3b 0a 09 72 65 74 75 72 6e 20 65 72 72 3b :;..kfree(rawlink);..return.err;
26ee0 0a 7d 0a 0a 2f 2a 20 2d 2d 2d 2d 2d 20 45 4f 46 20 2d 2d 2d 2d 2d 20 2a 2f 0a 00 00 00 00 00 00 .}../*.-----.EOF.-----.*/.......
26f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
26f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
26f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
26f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
26f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
26fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
26fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
26fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27000 6e 63 70 66 73 2f 64 69 72 2e 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ncpfs/dir.c.....................
27020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27060 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 ....0000644.0001750.0001750.0000
27080 30 30 37 35 36 30 30 00 31 33 30 35 35 30 30 30 36 34 37 00 30 31 32 31 32 37 00 20 30 00 00 00 0075600.13055000647.012127..0...
270a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
270c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
270e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27100 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...kubax..................
27120 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........kubax..................
27140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
271a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
271c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
271e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27200 2f 2a 0a 20 2a 20 20 64 69 72 2e 63 0a 20 2a 0a 20 2a 20 20 43 6f 70 79 72 69 67 68 74 20 28 43 /*..*..dir.c..*..*..Copyright.(C
27220 29 20 31 39 39 35 2c 20 31 39 39 36 20 62 79 20 56 6f 6c 6b 65 72 20 4c 65 6e 64 65 63 6b 65 0a ).1995,.1996.by.Volker.Lendecke.
27240 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 66 6f 72 20 62 69 67 20 65 6e 64 69 61 6e 20 62 79 20 4a .*..Modified.for.big.endian.by.J
27260 2e 46 2e 20 43 68 61 64 69 6d 61 20 61 6e 64 20 44 61 76 69 64 20 53 2e 20 4d 69 6c 6c 65 72 0a .F..Chadima.and.David.S..Miller.
27280 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 37 20 50 65 74 65 72 20 57 61 6c 74 65 6e 62 65 .*..Modified.1997.Peter.Waltenbe
272a0 72 67 2c 20 42 69 6c 6c 20 48 61 77 65 73 2c 20 44 61 76 69 64 20 57 6f 6f 64 68 6f 75 73 65 20 rg,.Bill.Hawes,.David.Woodhouse.
272c0 66 6f 72 20 32 2e 31 20 64 63 61 63 68 65 0a 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 38 for.2.1.dcache..*..Modified.1998
272e0 2c 20 31 39 39 39 20 57 6f 6c 66 72 61 6d 20 50 69 65 6e 6b 6f 73 73 20 66 6f 72 20 4e 4c 53 0a ,.1999.Wolfram.Pienkoss.for.NLS.
27300 20 2a 20 20 4d 6f 64 69 66 69 65 64 20 31 39 39 39 20 57 6f 6c 66 72 61 6d 20 50 69 65 6e 6b 6f .*..Modified.1999.Wolfram.Pienko
27320 73 73 20 66 6f 72 20 64 69 72 65 63 74 6f 72 79 20 63 61 63 68 69 6e 67 0a 20 2a 20 20 4d 6f 64 ss.for.directory.caching..*..Mod
27340 69 66 69 65 64 20 32 30 30 30 20 42 65 6e 20 48 61 72 72 69 73 2c 20 55 6e 69 76 65 72 73 69 74 ified.2000.Ben.Harris,.Universit
27360 79 20 6f 66 20 43 61 6d 62 72 69 64 67 65 20 66 6f 72 20 4e 46 53 20 4e 53 20 6d 65 74 61 2d 69 y.of.Cambridge.for.NFS.NS.meta-i
27380 6e 66 6f 0a 20 2a 0a 20 2a 2f 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 74 69 6d 65 nfo..*..*/..#include.<linux/time
273a0 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 65 72 72 6e 6f 2e 68 3e 0a 23 69 6e .h>.#include.<linux/errno.h>.#in
273c0 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 74 61 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c clude.<linux/stat.h>.#include.<l
273e0 69 6e 75 78 2f 6b 65 72 6e 65 6c 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 76 inux/kernel.h>.#include.<linux/v
27400 6d 61 6c 6c 6f 63 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6d 6d 2e 68 3e 0a malloc.h>.#include.<linux/mm.h>.
27420 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 6e 61 6d 65 69 2e 68 3e 0a 23 69 6e 63 6c 75 64 #include.<linux/namei.h>.#includ
27440 65 20 3c 61 73 6d 2f 75 61 63 63 65 73 73 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 61 73 6d 2f e.<asm/uaccess.h>.#include.<asm/
27460 62 79 74 65 6f 72 64 65 72 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 22 6e 63 70 5f 66 73 2e 68 byteorder.h>..#include."ncp_fs.h
27480 22 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 72 65 61 64 5f 76 6f 6c 75 6d 65 5f 6c "..static.void.ncp_read_volume_l
274a0 69 73 74 28 73 74 72 75 63 74 20 66 69 6c 65 20 2a 2c 20 73 74 72 75 63 74 20 64 69 72 5f 63 6f ist(struct.file.*,.struct.dir_co
274c0 6e 74 65 78 74 20 2a 2c 0a 09 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f 63 61 63 68 65 5f 63 6f ntext.*,.....struct.ncp_cache_co
274e0 6e 74 72 6f 6c 20 2a 29 3b 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 64 6f 5f 72 65 61 ntrol.*);.static.void.ncp_do_rea
27500 64 64 69 72 28 73 74 72 75 63 74 20 66 69 6c 65 20 2a 2c 20 73 74 72 75 63 74 20 64 69 72 5f 63 ddir(struct.file.*,.struct.dir_c
27520 6f 6e 74 65 78 74 20 2a 2c 0a 09 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f 63 61 63 68 65 5f 63 ontext.*,.....struct.ncp_cache_c
27540 6f 6e 74 72 6f 6c 20 2a 29 3b 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 72 65 61 64 64 ontrol.*);..static.int.ncp_readd
27560 69 72 28 73 74 72 75 63 74 20 66 69 6c 65 20 2a 2c 20 73 74 72 75 63 74 20 64 69 72 5f 63 6f 6e ir(struct.file.*,.struct.dir_con
27580 74 65 78 74 20 2a 29 3b 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 63 72 65 61 74 65 28 text.*);..static.int.ncp_create(
275a0 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 2c struct.inode.*,.struct.dentry.*,
275c0 20 75 6d 6f 64 65 5f 74 2c 20 62 6f 6f 6c 29 3b 0a 73 74 61 74 69 63 20 73 74 72 75 63 74 20 64 .umode_t,.bool);.static.struct.d
275e0 65 6e 74 72 79 20 2a 6e 63 70 5f 6c 6f 6f 6b 75 70 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a entry.*ncp_lookup(struct.inode.*
27600 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 29 ,.struct.dentry.*,.unsigned.int)
27620 3b 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 75 6e 6c 69 6e 6b 28 73 74 72 75 63 74 20 69 ;.static.int.ncp_unlink(struct.i
27640 6e 6f 64 65 20 2a 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 29 3b 0a 73 74 61 74 69 63 node.*,.struct.dentry.*);.static
27660 20 69 6e 74 20 6e 63 70 5f 6d 6b 64 69 72 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 73 .int.ncp_mkdir(struct.inode.*,.s
27680 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 2c 20 75 6d 6f 64 65 5f 74 29 3b 0a 73 74 61 74 69 63 truct.dentry.*,.umode_t);.static
276a0 20 69 6e 74 20 6e 63 70 5f 72 6d 64 69 72 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 73 .int.ncp_rmdir(struct.inode.*,.s
276c0 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 29 3b 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f truct.dentry.*);.static.int.ncp_
276e0 72 65 6e 61 6d 65 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 73 74 72 75 63 74 20 64 65 rename(struct.inode.*,.struct.de
27700 6e 74 72 79 20 2a 2c 0a 09 09 20 20 20 20 20 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 ntry.*,.........struct.inode.*,.
27720 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 29 3b 0a struct.dentry.*,.unsigned.int);.
27740 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 6d 6b 6e 6f 64 28 73 74 72 75 63 74 20 69 6e 6f 64 static.int.ncp_mknod(struct.inod
27760 65 20 2a 20 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 2c 0a e.*.dir,.struct.dentry.*dentry,.
27780 09 09 20 20 20 20 20 75 6d 6f 64 65 5f 74 20 6d 6f 64 65 2c 20 64 65 76 5f 74 20 72 64 65 76 29 .......umode_t.mode,.dev_t.rdev)
277a0 3b 0a 23 69 66 20 64 65 66 69 6e 65 64 28 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 45 58 54 52 41 ;.#if.defined(CONFIG_NCPFS_EXTRA
277c0 53 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e S).||.defined(CONFIG_NCPFS_NFS_N
277e0 53 29 0a 65 78 74 65 72 6e 20 69 6e 74 20 6e 63 70 5f 73 79 6d 6c 69 6e 6b 28 73 74 72 75 63 74 S).extern.int.ncp_symlink(struct
27800 20 69 6e 6f 64 65 20 2a 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 2c 20 63 6f 6e 73 74 .inode.*,.struct.dentry.*,.const
27820 20 63 68 61 72 20 2a 29 3b 0a 23 65 6c 73 65 0a 23 64 65 66 69 6e 65 20 6e 63 70 5f 73 79 6d 6c .char.*);.#else.#define.ncp_syml
27840 69 6e 6b 20 4e 55 4c 4c 0a 23 65 6e 64 69 66 0a 09 09 20 20 20 20 20 20 0a 63 6f 6e 73 74 20 73 ink.NULL.#endif..........const.s
27860 74 72 75 63 74 20 66 69 6c 65 5f 6f 70 65 72 61 74 69 6f 6e 73 20 6e 63 70 5f 64 69 72 5f 6f 70 truct.file_operations.ncp_dir_op
27880 65 72 61 74 69 6f 6e 73 20 3d 0a 7b 0a 09 2e 6c 6c 73 65 65 6b 09 09 3d 20 67 65 6e 65 72 69 63 erations.=.{...llseek..=.generic
278a0 5f 66 69 6c 65 5f 6c 6c 73 65 65 6b 2c 0a 09 2e 72 65 61 64 09 09 3d 20 67 65 6e 65 72 69 63 5f _file_llseek,...read..=.generic_
278c0 72 65 61 64 5f 64 69 72 2c 0a 09 2e 69 74 65 72 61 74 65 09 3d 20 6e 63 70 5f 72 65 61 64 64 69 read_dir,...iterate.=.ncp_readdi
278e0 72 2c 0a 09 2e 75 6e 6c 6f 63 6b 65 64 5f 69 6f 63 74 6c 09 3d 20 6e 63 70 5f 69 6f 63 74 6c 2c r,...unlocked_ioctl.=.ncp_ioctl,
27900 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 43 4f 4d 50 41 54 0a 09 2e 63 6f 6d 70 61 74 5f 69 .#ifdef.CONFIG_COMPAT...compat_i
27920 6f 63 74 6c 09 3d 20 6e 63 70 5f 63 6f 6d 70 61 74 5f 69 6f 63 74 6c 2c 0a 23 65 6e 64 69 66 0a octl.=.ncp_compat_ioctl,.#endif.
27940 7d 3b 0a 0a 63 6f 6e 73 74 20 73 74 72 75 63 74 20 69 6e 6f 64 65 5f 6f 70 65 72 61 74 69 6f 6e };..const.struct.inode_operation
27960 73 20 6e 63 70 5f 64 69 72 5f 69 6e 6f 64 65 5f 6f 70 65 72 61 74 69 6f 6e 73 20 3d 0a 7b 0a 09 s.ncp_dir_inode_operations.=.{..
27980 2e 63 72 65 61 74 65 09 09 3d 20 6e 63 70 5f 63 72 65 61 74 65 2c 0a 09 2e 6c 6f 6f 6b 75 70 09 .create..=.ncp_create,...lookup.
279a0 09 3d 20 6e 63 70 5f 6c 6f 6f 6b 75 70 2c 0a 09 2e 75 6e 6c 69 6e 6b 09 09 3d 20 6e 63 70 5f 75 .=.ncp_lookup,...unlink..=.ncp_u
279c0 6e 6c 69 6e 6b 2c 0a 09 2e 73 79 6d 6c 69 6e 6b 09 3d 20 6e 63 70 5f 73 79 6d 6c 69 6e 6b 2c 0a nlink,...symlink.=.ncp_symlink,.
279e0 09 2e 6d 6b 64 69 72 09 09 3d 20 6e 63 70 5f 6d 6b 64 69 72 2c 0a 09 2e 72 6d 64 69 72 09 09 3d ..mkdir..=.ncp_mkdir,...rmdir..=
27a00 20 6e 63 70 5f 72 6d 64 69 72 2c 0a 09 2e 6d 6b 6e 6f 64 09 09 3d 20 6e 63 70 5f 6d 6b 6e 6f 64 .ncp_rmdir,...mknod..=.ncp_mknod
27a20 2c 0a 09 2e 72 65 6e 61 6d 65 09 09 3d 20 6e 63 70 5f 72 65 6e 61 6d 65 2c 0a 09 2e 73 65 74 61 ,...rename..=.ncp_rename,...seta
27a40 74 74 72 09 3d 20 6e 63 70 5f 6e 6f 74 69 66 79 5f 63 68 61 6e 67 65 2c 0a 7d 3b 0a 0a 2f 2a 0a ttr.=.ncp_notify_change,.};../*.
27a60 20 2a 20 44 65 6e 74 72 79 20 6f 70 65 72 61 74 69 6f 6e 73 20 72 6f 75 74 69 6e 65 73 0a 20 2a .*.Dentry.operations.routines..*
27a80 2f 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 6c 6f 6f 6b 75 70 5f 76 61 6c 69 64 61 74 65 /.static.int.ncp_lookup_validate
27aa0 28 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 29 3b (struct.dentry.*,.unsigned.int);
27ac0 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 68 61 73 68 5f 64 65 6e 74 72 79 28 63 6f 6e 73 .static.int.ncp_hash_dentry(cons
27ae0 74 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 2c 20 73 74 72 75 63 74 20 71 73 74 72 20 2a t.struct.dentry.*,.struct.qstr.*
27b00 29 3b 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 63 6f 6d 70 61 72 65 5f 64 65 6e 74 72 79 );.static.int.ncp_compare_dentry
27b20 28 63 6f 6e 73 74 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 2c 0a 09 09 75 6e 73 69 67 6e (const.struct.dentry.*,...unsign
27b40 65 64 20 69 6e 74 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2c 20 63 6f 6e 73 74 20 73 74 72 75 ed.int,.const.char.*,.const.stru
27b60 63 74 20 71 73 74 72 20 2a 29 3b 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 64 65 6c 65 74 ct.qstr.*);.static.int.ncp_delet
27b80 65 5f 64 65 6e 74 72 79 28 63 6f 6e 73 74 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 29 3b e_dentry(const.struct.dentry.*);
27ba0 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 64 5f 70 72 75 6e 65 28 73 74 72 75 63 74 20 .static.void.ncp_d_prune(struct.
27bc0 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 29 3b 0a 0a 63 6f 6e 73 74 20 73 74 72 75 63 74 20 64 dentry.*dentry);..const.struct.d
27be0 65 6e 74 72 79 5f 6f 70 65 72 61 74 69 6f 6e 73 20 6e 63 70 5f 64 65 6e 74 72 79 5f 6f 70 65 72 entry_operations.ncp_dentry_oper
27c00 61 74 69 6f 6e 73 20 3d 0a 7b 0a 09 2e 64 5f 72 65 76 61 6c 69 64 61 74 65 09 3d 20 6e 63 70 5f ations.=.{...d_revalidate.=.ncp_
27c20 6c 6f 6f 6b 75 70 5f 76 61 6c 69 64 61 74 65 2c 0a 09 2e 64 5f 68 61 73 68 09 09 3d 20 6e 63 70 lookup_validate,...d_hash..=.ncp
27c40 5f 68 61 73 68 5f 64 65 6e 74 72 79 2c 0a 09 2e 64 5f 63 6f 6d 70 61 72 65 09 3d 20 6e 63 70 5f _hash_dentry,...d_compare.=.ncp_
27c60 63 6f 6d 70 61 72 65 5f 64 65 6e 74 72 79 2c 0a 09 2e 64 5f 64 65 6c 65 74 65 09 3d 20 6e 63 70 compare_dentry,...d_delete.=.ncp
27c80 5f 64 65 6c 65 74 65 5f 64 65 6e 74 72 79 2c 0a 09 2e 64 5f 70 72 75 6e 65 09 3d 20 6e 63 70 5f _delete_dentry,...d_prune.=.ncp_
27ca0 64 5f 70 72 75 6e 65 2c 0a 7d 3b 0a 0a 23 64 65 66 69 6e 65 20 6e 63 70 5f 6e 61 6d 65 73 70 61 d_prune,.};..#define.ncp_namespa
27cc0 63 65 28 69 29 09 28 4e 43 50 5f 53 45 52 56 45 52 28 69 29 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 ce(i).(NCP_SERVER(i)->name_space
27ce0 5b 4e 43 50 5f 46 49 4e 46 4f 28 69 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 5d 29 0a 0a 73 74 61 74 [NCP_FINFO(i)->volNumber])..stat
27d00 69 63 20 69 6e 6c 69 6e 65 20 69 6e 74 20 6e 63 70 5f 70 72 65 73 65 72 76 65 5f 65 6e 74 72 79 ic.inline.int.ncp_preserve_entry
27d20 5f 63 61 73 65 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 2c 20 5f 5f 75 33 32 20 6e 73 63 _case(struct.inode.*i,.__u32.nsc
27d40 72 65 61 74 6f 72 29 0a 7b 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 53 4d reator).{.#ifdef.CONFIG_NCPFS_SM
27d60 41 4c 4c 44 4f 53 0a 09 69 6e 74 20 6e 73 20 3d 20 6e 63 70 5f 6e 61 6d 65 73 70 61 63 65 28 69 ALLDOS..int.ns.=.ncp_namespace(i
27d80 29 3b 0a 0a 09 69 66 20 28 28 6e 73 20 3d 3d 20 4e 57 5f 4e 53 5f 44 4f 53 29 0a 23 69 66 64 65 );...if.((ns.==.NW_NS_DOS).#ifde
27da0 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4f 53 32 5f 4e 53 0a 09 09 7c 7c 20 28 28 6e 73 20 f.CONFIG_NCPFS_OS2_NS...||.((ns.
27dc0 3d 3d 20 4e 57 5f 4e 53 5f 4f 53 32 29 20 26 26 20 28 6e 73 63 72 65 61 74 6f 72 20 3d 3d 20 4e ==.NW_NS_OS2).&&.(nscreator.==.N
27de0 57 5f 4e 53 5f 44 4f 53 29 29 0a 23 65 6e 64 69 66 20 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 W_NS_DOS)).#endif./*.CONFIG_NCPF
27e00 53 5f 4f 53 32 5f 4e 53 20 2a 2f 0a 09 20 20 20 29 0a 09 09 72 65 74 75 72 6e 20 30 3b 0a 23 65 S_OS2_NS.*/.....)...return.0;.#e
27e20 6e 64 69 66 20 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 53 4d 41 4c 4c 44 4f 53 20 2a 2f ndif./*.CONFIG_NCPFS_SMALLDOS.*/
27e40 0a 09 72 65 74 75 72 6e 20 31 3b 0a 7d 0a 0a 23 64 65 66 69 6e 65 20 6e 63 70 5f 70 72 65 73 65 ..return.1;.}..#define.ncp_prese
27e60 72 76 65 5f 63 61 73 65 28 69 29 09 28 6e 63 70 5f 6e 61 6d 65 73 70 61 63 65 28 69 29 20 21 3d rve_case(i).(ncp_namespace(i).!=
27e80 20 4e 57 5f 4e 53 5f 44 4f 53 29 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 69 6e 74 20 6e .NW_NS_DOS)..static.inline.int.n
27ea0 63 70 5f 63 61 73 65 5f 73 65 6e 73 69 74 69 76 65 28 63 6f 6e 73 74 20 73 74 72 75 63 74 20 69 cp_case_sensitive(const.struct.i
27ec0 6e 6f 64 65 20 2a 69 29 0a 7b 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e node.*i).{.#ifdef.CONFIG_NCPFS_N
27ee0 46 53 5f 4e 53 0a 09 72 65 74 75 72 6e 20 6e 63 70 5f 6e 61 6d 65 73 70 61 63 65 28 69 29 20 3d FS_NS..return.ncp_namespace(i).=
27f00 3d 20 4e 57 5f 4e 53 5f 4e 46 53 3b 0a 23 65 6c 73 65 0a 09 72 65 74 75 72 6e 20 30 3b 0a 23 65 =.NW_NS_NFS;.#else..return.0;.#e
27f20 6e 64 69 66 20 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 20 2a 2f 0a 7d ndif./*.CONFIG_NCPFS_NFS_NS.*/.}
27f40 0a 0a 2f 2a 0a 20 2a 20 4e 6f 74 65 3a 20 6c 65 61 76 65 20 74 68 65 20 68 61 73 68 20 75 6e 63 ../*..*.Note:.leave.the.hash.unc
27f60 68 61 6e 67 65 64 20 69 66 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 0a 20 2a 20 69 73 20 63 61 hanged.if.the.directory..*.is.ca
27f80 73 65 2d 73 65 6e 73 69 74 69 76 65 2e 0a 20 2a 0a 20 2a 20 41 63 63 65 73 73 69 6e 67 20 74 68 se-sensitive...*..*.Accessing.th
27fa0 65 20 70 61 72 65 6e 74 20 69 6e 6f 64 65 20 63 61 6e 20 62 65 20 72 61 63 79 20 75 6e 64 65 72 e.parent.inode.can.be.racy.under
27fc0 20 52 43 55 20 70 61 74 68 77 61 6c 6b 69 6e 67 2e 0a 20 2a 20 55 73 65 20 41 43 43 45 53 53 5f .RCU.pathwalking...*.Use.ACCESS_
27fe0 4f 4e 43 45 28 29 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 77 65 20 75 73 65 20 5f 6f 6e 65 5f ONCE().to.make.sure.we.use._one_
28000 20 70 61 72 74 69 63 75 6c 61 72 20 69 6e 6f 64 65 2c 0a 20 2a 20 74 68 65 20 63 61 6c 6c 65 72 .particular.inode,..*.the.caller
28020 73 20 77 69 6c 6c 20 68 61 6e 64 6c 65 20 72 61 63 65 73 2e 0a 20 2a 2f 0a 73 74 61 74 69 63 20 s.will.handle.races...*/.static.
28040 69 6e 74 20 0a 6e 63 70 5f 68 61 73 68 5f 64 65 6e 74 72 79 28 63 6f 6e 73 74 20 73 74 72 75 63 int..ncp_hash_dentry(const.struc
28060 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 2c 20 73 74 72 75 63 74 20 71 73 74 72 20 2a 74 t.dentry.*dentry,.struct.qstr.*t
28080 68 69 73 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 20 3d 20 64 5f his).{..struct.inode.*inode.=.d_
280a0 69 6e 6f 64 65 5f 72 63 75 28 64 65 6e 74 72 79 29 3b 0a 0a 09 69 66 20 28 21 69 6e 6f 64 65 29 inode_rcu(dentry);...if.(!inode)
280c0 0a 09 09 72 65 74 75 72 6e 20 30 3b 0a 0a 09 69 66 20 28 21 6e 63 70 5f 63 61 73 65 5f 73 65 6e ...return.0;...if.(!ncp_case_sen
280e0 73 69 74 69 76 65 28 69 6e 6f 64 65 29 29 20 7b 0a 09 09 73 74 72 75 63 74 20 6e 6c 73 5f 74 61 sitive(inode)).{...struct.nls_ta
28100 62 6c 65 20 2a 74 3b 0a 09 09 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 68 61 73 68 3b 0a 09 09 ble.*t;...unsigned.long.hash;...
28120 69 6e 74 20 69 3b 0a 0a 09 09 74 20 3d 20 4e 43 50 5f 49 4f 5f 54 41 42 4c 45 28 64 65 6e 74 72 int.i;....t.=.NCP_IO_TABLE(dentr
28140 79 2d 3e 64 5f 73 62 29 3b 0a 09 09 68 61 73 68 20 3d 20 69 6e 69 74 5f 6e 61 6d 65 5f 68 61 73 y->d_sb);...hash.=.init_name_has
28160 68 28 64 65 6e 74 72 79 29 3b 0a 09 09 66 6f 72 20 28 69 3d 30 3b 20 69 3c 74 68 69 73 2d 3e 6c h(dentry);...for.(i=0;.i<this->l
28180 65 6e 20 3b 20 69 2b 2b 29 0a 09 09 09 68 61 73 68 20 3d 20 70 61 72 74 69 61 6c 5f 6e 61 6d 65 en.;.i++)....hash.=.partial_name
281a0 5f 68 61 73 68 28 6e 63 70 5f 74 6f 6c 6f 77 65 72 28 74 2c 20 74 68 69 73 2d 3e 6e 61 6d 65 5b _hash(ncp_tolower(t,.this->name[
281c0 69 5d 29 2c 0a 09 09 09 09 09 09 09 09 09 68 61 73 68 29 3b 0a 09 09 74 68 69 73 2d 3e 68 61 73 i]),..........hash);...this->has
281e0 68 20 3d 20 65 6e 64 5f 6e 61 6d 65 5f 68 61 73 68 28 68 61 73 68 29 3b 0a 09 7d 0a 09 72 65 74 h.=.end_name_hash(hash);..}..ret
28200 75 72 6e 20 30 3b 0a 7d 0a 0a 2f 2a 0a 20 2a 20 41 63 63 65 73 73 69 6e 67 20 74 68 65 20 70 61 urn.0;.}../*..*.Accessing.the.pa
28220 72 65 6e 74 20 69 6e 6f 64 65 20 63 61 6e 20 62 65 20 72 61 63 79 20 75 6e 64 65 72 20 52 43 55 rent.inode.can.be.racy.under.RCU
28240 20 70 61 74 68 77 61 6c 6b 69 6e 67 2e 0a 20 2a 20 55 73 65 20 41 43 43 45 53 53 5f 4f 4e 43 45 .pathwalking...*.Use.ACCESS_ONCE
28260 28 29 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 77 65 20 75 73 65 20 5f 6f 6e 65 5f 20 70 61 72 ().to.make.sure.we.use._one_.par
28280 74 69 63 75 6c 61 72 20 69 6e 6f 64 65 2c 0a 20 2a 20 74 68 65 20 63 61 6c 6c 65 72 73 20 77 69 ticular.inode,..*.the.callers.wi
282a0 6c 6c 20 68 61 6e 64 6c 65 20 72 61 63 65 73 2e 0a 20 2a 2f 0a 73 74 61 74 69 63 20 69 6e 74 0a ll.handle.races...*/.static.int.
282c0 6e 63 70 5f 63 6f 6d 70 61 72 65 5f 64 65 6e 74 72 79 28 63 6f 6e 73 74 20 73 74 72 75 63 74 20 ncp_compare_dentry(const.struct.
282e0 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 2c 0a 09 09 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 6c dentry.*dentry,...unsigned.int.l
28300 65 6e 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 74 72 2c 20 63 6f 6e 73 74 20 73 74 72 75 63 en,.const.char.*str,.const.struc
28320 74 20 71 73 74 72 20 2a 6e 61 6d 65 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 70 t.qstr.*name).{..struct.inode.*p
28340 69 6e 6f 64 65 3b 0a 0a 09 69 66 20 28 6c 65 6e 20 21 3d 20 6e 61 6d 65 2d 3e 6c 65 6e 29 0a 09 inode;...if.(len.!=.name->len)..
28360 09 72 65 74 75 72 6e 20 31 3b 0a 0a 09 70 69 6e 6f 64 65 20 3d 20 64 5f 69 6e 6f 64 65 5f 72 63 .return.1;...pinode.=.d_inode_rc
28380 75 28 64 65 6e 74 72 79 2d 3e 64 5f 70 61 72 65 6e 74 29 3b 0a 09 69 66 20 28 21 70 69 6e 6f 64 u(dentry->d_parent);..if.(!pinod
283a0 65 29 0a 09 09 72 65 74 75 72 6e 20 31 3b 0a 0a 09 69 66 20 28 6e 63 70 5f 63 61 73 65 5f 73 65 e)...return.1;...if.(ncp_case_se
283c0 6e 73 69 74 69 76 65 28 70 69 6e 6f 64 65 29 29 0a 09 09 72 65 74 75 72 6e 20 73 74 72 6e 63 6d nsitive(pinode))...return.strncm
283e0 70 28 73 74 72 2c 20 6e 61 6d 65 2d 3e 6e 61 6d 65 2c 20 6c 65 6e 29 3b 0a 0a 09 72 65 74 75 72 p(str,.name->name,.len);...retur
28400 6e 20 6e 63 70 5f 73 74 72 6e 69 63 6d 70 28 4e 43 50 5f 49 4f 5f 54 41 42 4c 45 28 70 69 6e 6f n.ncp_strnicmp(NCP_IO_TABLE(pino
28420 64 65 2d 3e 69 5f 73 62 29 2c 20 73 74 72 2c 20 6e 61 6d 65 2d 3e 6e 61 6d 65 2c 20 6c 65 6e 29 de->i_sb),.str,.name->name,.len)
28440 3b 0a 7d 0a 0a 2f 2a 0a 20 2a 20 54 68 69 73 20 69 73 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 ;.}../*..*.This.is.the.callback.
28460 66 72 6f 6d 20 64 70 75 74 28 29 20 77 68 65 6e 20 64 5f 63 6f 75 6e 74 20 69 73 20 67 6f 69 6e from.dput().when.d_count.is.goin
28480 67 20 74 6f 20 30 2e 0a 20 2a 20 57 65 20 75 73 65 20 74 68 69 73 20 74 6f 20 75 6e 68 61 73 68 g.to.0...*.We.use.this.to.unhash
284a0 20 64 65 6e 74 72 69 65 73 20 77 69 74 68 20 62 61 64 20 69 6e 6f 64 65 73 2e 0a 20 2a 20 43 6c .dentries.with.bad.inodes...*.Cl
284c0 6f 73 69 6e 67 20 66 69 6c 65 73 20 63 61 6e 20 62 65 20 73 61 66 65 6c 79 20 70 6f 73 74 70 6f osing.files.can.be.safely.postpo
284e0 6e 65 64 20 75 6e 74 69 6c 20 69 70 75 74 28 29 20 2d 20 69 74 27 73 20 64 6f 6e 65 20 74 68 65 ned.until.iput().-.it's.done.the
28500 72 65 20 61 6e 79 77 61 79 2e 0a 20 2a 2f 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 64 65 re.anyway...*/.static.int.ncp_de
28520 6c 65 74 65 5f 64 65 6e 74 72 79 28 63 6f 6e 73 74 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 lete_dentry(const.struct.dentry.
28540 2a 20 64 65 6e 74 72 79 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 *.dentry).{..struct.inode.*inode
28560 20 3d 20 64 5f 69 6e 6f 64 65 28 64 65 6e 74 72 79 29 3b 0a 0a 09 69 66 20 28 69 6e 6f 64 65 29 .=.d_inode(dentry);...if.(inode)
28580 20 7b 0a 09 09 69 66 20 28 69 73 5f 62 61 64 5f 69 6e 6f 64 65 28 69 6e 6f 64 65 29 29 0a 09 09 .{...if.(is_bad_inode(inode))...
285a0 09 72 65 74 75 72 6e 20 31 3b 0a 09 7d 20 65 6c 73 65 0a 09 7b 0a 09 2f 2a 20 4e 2e 42 2e 20 55 .return.1;..}.else..{../*.N.B..U
285c0 6e 68 61 73 68 20 6e 65 67 61 74 69 76 65 20 64 65 6e 74 72 69 65 73 3f 20 2a 2f 0a 09 7d 0a 09 nhash.negative.dentries?.*/..}..
285e0 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 69 6e 74 0a 6e return.0;.}..static.inline.int.n
28600 63 70 5f 73 69 6e 67 6c 65 5f 76 6f 6c 75 6d 65 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 cp_single_volume(struct.ncp_serv
28620 65 72 20 2a 73 65 72 76 65 72 29 0a 7b 0a 09 72 65 74 75 72 6e 20 28 73 65 72 76 65 72 2d 3e 6d er.*server).{..return.(server->m
28640 2e 6d 6f 75 6e 74 65 64 5f 76 6f 6c 5b 30 5d 20 21 3d 20 27 5c 30 27 29 3b 0a 7d 0a 0a 73 74 61 .mounted_vol[0].!=.'\0');.}..sta
28660 74 69 63 20 69 6e 6c 69 6e 65 20 69 6e 74 20 6e 63 70 5f 69 73 5f 73 65 72 76 65 72 5f 72 6f 6f tic.inline.int.ncp_is_server_roo
28680 74 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 29 0a 7b 0a 09 72 65 74 75 72 6e t(struct.inode.*inode).{..return
286a0 20 21 6e 63 70 5f 73 69 6e 67 6c 65 5f 76 6f 6c 75 6d 65 28 4e 43 50 5f 53 45 52 56 45 52 28 69 .!ncp_single_volume(NCP_SERVER(i
286c0 6e 6f 64 65 29 29 20 26 26 0a 09 09 69 73 5f 72 6f 6f 74 5f 69 6e 6f 64 65 28 69 6e 6f 64 65 29 node)).&&...is_root_inode(inode)
286e0 3b 0a 7d 0a 0a 0a 2f 2a 0a 20 2a 20 54 68 69 73 20 69 73 20 74 68 65 20 63 61 6c 6c 62 61 63 6b ;.}.../*..*.This.is.the.callback
28700 20 77 68 65 6e 20 74 68 65 20 64 63 61 63 68 65 20 68 61 73 20 61 20 6c 6f 6f 6b 75 70 20 68 69 .when.the.dcache.has.a.lookup.hi
28720 74 2e 0a 20 2a 2f 0a 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 53 54 52 t...*/...#ifdef.CONFIG_NCPFS_STR
28740 4f 4e 47 0a 2f 2a 20 74 72 79 20 74 6f 20 64 65 6c 65 74 65 20 61 20 72 65 61 64 6f 6e 6c 79 20 ONG./*.try.to.delete.a.readonly.
28760 66 69 6c 65 20 28 4e 57 20 52 20 62 69 74 20 73 65 74 29 20 2a 2f 0a 0a 73 74 61 74 69 63 20 69 file.(NW.R.bit.set).*/..static.i
28780 6e 74 0a 6e 63 70 5f 66 6f 72 63 65 5f 75 6e 6c 69 6e 6b 28 73 74 72 75 63 74 20 69 6e 6f 64 65 nt.ncp_force_unlink(struct.inode
287a0 20 2a 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 2a 20 64 65 6e 74 72 79 29 0a 7b 0a .*dir,.struct.dentry*.dentry).{.
287c0 20 20 20 20 20 20 20 20 69 6e 74 20 72 65 73 3d 30 78 39 63 2c 72 65 73 32 3b 0a 09 73 74 72 75 ........int.res=0x9c,res2;..stru
287e0 63 74 20 6e 77 5f 6d 6f 64 69 66 79 5f 64 6f 73 5f 69 6e 66 6f 20 69 6e 66 6f 3b 0a 09 5f 5f 6c ct.nw_modify_dos_info.info;..__l
28800 65 33 32 20 6f 6c 64 5f 6e 77 61 74 74 72 3b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 e32.old_nwattr;..struct.inode.*i
28820 6e 6f 64 65 3b 0a 0a 09 6d 65 6d 73 65 74 28 26 69 6e 66 6f 2c 20 30 2c 20 73 69 7a 65 6f 66 28 node;...memset(&info,.0,.sizeof(
28840 69 6e 66 6f 29 29 3b 0a 09 0a 20 20 20 20 20 20 20 20 2f 2a 20 72 65 6d 6f 76 65 20 74 68 65 20 info));.........../*.remove.the.
28860 52 65 61 64 2d 4f 6e 6c 79 20 66 6c 61 67 20 6f 6e 20 74 68 65 20 4e 57 20 73 65 72 76 65 72 20 Read-Only.flag.on.the.NW.server.
28880 2a 2f 0a 09 69 6e 6f 64 65 20 3d 20 64 5f 69 6e 6f 64 65 28 64 65 6e 74 72 79 29 3b 0a 0a 09 6f */..inode.=.d_inode(dentry);...o
288a0 6c 64 5f 6e 77 61 74 74 72 20 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6e 77 ld_nwattr.=.NCP_FINFO(inode)->nw
288c0 61 74 74 72 3b 0a 09 69 6e 66 6f 2e 61 74 74 72 69 62 75 74 65 73 20 3d 20 6f 6c 64 5f 6e 77 61 attr;..info.attributes.=.old_nwa
288e0 74 74 72 20 26 20 7e 28 61 52 4f 4e 4c 59 7c 61 44 45 4c 45 54 45 49 4e 48 49 42 49 54 7c 61 52 ttr.&.~(aRONLY|aDELETEINHIBIT|aR
28900 45 4e 41 4d 45 49 4e 48 49 42 49 54 29 3b 0a 09 72 65 73 32 20 3d 20 6e 63 70 5f 6d 6f 64 69 66 ENAMEINHIBIT);..res2.=.ncp_modif
28920 79 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 5f 64 6f 73 5f 69 6e 66 6f 5f 70 61 74 68 28 4e y_file_or_subdir_dos_info_path(N
28940 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2c 20 69 6e 6f 64 65 2c 20 4e 55 4c 4c 2c 20 44 CP_SERVER(inode),.inode,.NULL,.D
28960 4d 5f 41 54 54 52 49 42 55 54 45 53 2c 20 26 69 6e 66 6f 29 3b 0a 09 69 66 20 28 72 65 73 32 29 M_ATTRIBUTES,.&info);..if.(res2)
28980 0a 09 09 67 6f 74 6f 20 6c 65 61 76 65 5f 6d 65 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2a 20 6e 6f ...goto.leave_me;........../*.no
289a0 77 20 74 72 79 20 61 67 61 69 6e 20 74 68 65 20 64 65 6c 65 74 65 20 6f 70 65 72 61 74 69 6f 6e w.try.again.the.delete.operation
289c0 20 2a 2f 0a 20 20 20 20 20 20 20 20 72 65 73 20 3d 20 6e 63 70 5f 64 65 6c 5f 66 69 6c 65 5f 6f .*/.........res.=.ncp_del_file_o
289e0 72 5f 73 75 62 64 69 72 32 28 4e 43 50 5f 53 45 52 56 45 52 28 64 69 72 29 2c 20 64 65 6e 74 72 r_subdir2(NCP_SERVER(dir),.dentr
28a00 79 29 3b 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 72 65 73 29 20 20 2f 2a 20 64 65 6c 65 74 65 y);..........if.(res)../*.delete
28a20 20 66 61 69 6c 65 64 2c 20 73 65 74 20 52 20 62 69 74 20 61 67 61 69 6e 20 2a 2f 0a 20 20 20 20 .failed,.set.R.bit.again.*/.....
28a40 20 20 20 20 7b 0a 09 09 69 6e 66 6f 2e 61 74 74 72 69 62 75 74 65 73 20 3d 20 6f 6c 64 5f 6e 77 ....{...info.attributes.=.old_nw
28a60 61 74 74 72 3b 0a 09 09 72 65 73 32 20 3d 20 6e 63 70 5f 6d 6f 64 69 66 79 5f 66 69 6c 65 5f 6f attr;...res2.=.ncp_modify_file_o
28a80 72 5f 73 75 62 64 69 72 5f 64 6f 73 5f 69 6e 66 6f 5f 70 61 74 68 28 4e 43 50 5f 53 45 52 56 45 r_subdir_dos_info_path(NCP_SERVE
28aa0 52 28 69 6e 6f 64 65 29 2c 20 69 6e 6f 64 65 2c 20 4e 55 4c 4c 2c 20 44 4d 5f 41 54 54 52 49 42 R(inode),.inode,.NULL,.DM_ATTRIB
28ac0 55 54 45 53 2c 20 26 69 6e 66 6f 29 3b 0a 09 09 69 66 20 28 72 65 73 32 29 0a 20 20 20 20 20 20 UTES,.&info);...if.(res2).......
28ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 6f 74 6f 20 6c 65 61 76 65 5f 6d 65 3b ..................goto.leave_me;
28b00 0a 20 20 20 20 20 20 20 20 7d 0a 6c 65 61 76 65 5f 6d 65 3a 0a 20 20 20 20 20 20 20 20 72 65 74 .........}.leave_me:.........ret
28b20 75 72 6e 28 72 65 73 29 3b 0a 7d 0a 23 65 6e 64 69 66 09 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 urn(res);.}.#endif./*.CONFIG_NCP
28b40 46 53 5f 53 54 52 4f 4e 47 20 2a 2f 0a 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 FS_STRONG.*/..#ifdef.CONFIG_NCPF
28b60 53 5f 53 54 52 4f 4e 47 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 66 6f 72 63 65 5f 72 65 S_STRONG.static.int.ncp_force_re
28b80 6e 61 6d 65 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 6f 6c 64 5f 64 69 72 2c 20 73 74 72 75 name(struct.inode.*old_dir,.stru
28ba0 63 74 20 64 65 6e 74 72 79 2a 20 6f 6c 64 5f 64 65 6e 74 72 79 2c 20 63 68 61 72 20 2a 5f 6f 6c ct.dentry*.old_dentry,.char.*_ol
28bc0 64 5f 6e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 75 63 74 20 d_name,..................struct.
28be0 69 6e 6f 64 65 20 2a 6e 65 77 5f 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 2a 20 6e inode.*new_dir,.struct.dentry*.n
28c00 65 77 5f 64 65 6e 74 72 79 2c 20 63 68 61 72 20 2a 5f 6e 65 77 5f 6e 61 6d 65 29 0a 7b 0a 09 73 ew_dentry,.char.*_new_name).{..s
28c20 74 72 75 63 74 20 6e 77 5f 6d 6f 64 69 66 79 5f 64 6f 73 5f 69 6e 66 6f 20 69 6e 66 6f 3b 0a 20 truct.nw_modify_dos_info.info;..
28c40 20 20 20 20 20 20 20 69 6e 74 20 72 65 73 3d 30 78 39 30 2c 72 65 73 32 3b 0a 09 73 74 72 75 63 .......int.res=0x90,res2;..struc
28c60 74 20 69 6e 6f 64 65 20 2a 6f 6c 64 5f 69 6e 6f 64 65 20 3d 20 64 5f 69 6e 6f 64 65 28 6f 6c 64 t.inode.*old_inode.=.d_inode(old
28c80 5f 64 65 6e 74 72 79 29 3b 0a 09 5f 5f 6c 65 33 32 20 6f 6c 64 5f 6e 77 61 74 74 72 20 3d 20 4e _dentry);..__le32.old_nwattr.=.N
28ca0 43 50 5f 46 49 4e 46 4f 28 6f 6c 64 5f 69 6e 6f 64 65 29 2d 3e 6e 77 61 74 74 72 3b 0a 09 5f 5f CP_FINFO(old_inode)->nwattr;..__
28cc0 6c 65 33 32 20 6e 65 77 5f 6e 77 61 74 74 72 20 3d 20 30 3b 20 2f 2a 20 73 68 75 74 20 63 6f 6d le32.new_nwattr.=.0;./*.shut.com
28ce0 70 69 6c 65 72 20 77 61 72 6e 69 6e 67 20 2a 2f 0a 09 69 6e 74 20 6f 6c 64 5f 6e 77 61 74 74 72 piler.warning.*/..int.old_nwattr
28d00 5f 63 68 61 6e 67 65 64 20 3d 20 30 3b 0a 09 69 6e 74 20 6e 65 77 5f 6e 77 61 74 74 72 5f 63 68 _changed.=.0;..int.new_nwattr_ch
28d20 61 6e 67 65 64 20 3d 20 30 3b 0a 0a 09 6d 65 6d 73 65 74 28 26 69 6e 66 6f 2c 20 30 2c 20 73 69 anged.=.0;...memset(&info,.0,.si
28d40 7a 65 6f 66 28 69 6e 66 6f 29 29 3b 0a 09 0a 20 20 20 20 20 20 20 20 2f 2a 20 72 65 6d 6f 76 65 zeof(info));.........../*.remove
28d60 20 74 68 65 20 52 65 61 64 2d 4f 6e 6c 79 20 66 6c 61 67 20 6f 6e 20 74 68 65 20 4e 57 20 73 65 .the.Read-Only.flag.on.the.NW.se
28d80 72 76 65 72 20 2a 2f 0a 0a 09 69 6e 66 6f 2e 61 74 74 72 69 62 75 74 65 73 20 3d 20 6f 6c 64 5f rver.*/...info.attributes.=.old_
28da0 6e 77 61 74 74 72 20 26 20 7e 28 61 52 4f 4e 4c 59 7c 61 52 45 4e 41 4d 45 49 4e 48 49 42 49 54 nwattr.&.~(aRONLY|aRENAMEINHIBIT
28dc0 7c 61 44 45 4c 45 54 45 49 4e 48 49 42 49 54 29 3b 0a 09 72 65 73 32 20 3d 20 6e 63 70 5f 6d 6f |aDELETEINHIBIT);..res2.=.ncp_mo
28de0 64 69 66 79 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 5f 64 6f 73 5f 69 6e 66 6f 5f 70 61 74 dify_file_or_subdir_dos_info_pat
28e00 68 28 4e 43 50 5f 53 45 52 56 45 52 28 6f 6c 64 5f 69 6e 6f 64 65 29 2c 20 6f 6c 64 5f 69 6e 6f h(NCP_SERVER(old_inode),.old_ino
28e20 64 65 2c 20 4e 55 4c 4c 2c 20 44 4d 5f 41 54 54 52 49 42 55 54 45 53 2c 20 26 69 6e 66 6f 29 3b de,.NULL,.DM_ATTRIBUTES,.&info);
28e40 0a 09 69 66 20 28 21 72 65 73 32 29 0a 09 09 6f 6c 64 5f 6e 77 61 74 74 72 5f 63 68 61 6e 67 65 ..if.(!res2)...old_nwattr_change
28e60 64 20 3d 20 31 3b 0a 09 69 66 20 28 6e 65 77 5f 64 65 6e 74 72 79 20 26 26 20 64 5f 72 65 61 6c d.=.1;..if.(new_dentry.&&.d_real
28e80 6c 79 5f 69 73 5f 70 6f 73 69 74 69 76 65 28 6e 65 77 5f 64 65 6e 74 72 79 29 29 20 7b 0a 09 09 ly_is_positive(new_dentry)).{...
28ea0 6e 65 77 5f 6e 77 61 74 74 72 20 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 64 5f 69 6e 6f 64 65 28 6e new_nwattr.=.NCP_FINFO(d_inode(n
28ec0 65 77 5f 64 65 6e 74 72 79 29 29 2d 3e 6e 77 61 74 74 72 3b 0a 09 09 69 6e 66 6f 2e 61 74 74 72 ew_dentry))->nwattr;...info.attr
28ee0 69 62 75 74 65 73 20 3d 20 6e 65 77 5f 6e 77 61 74 74 72 20 26 20 7e 28 61 52 4f 4e 4c 59 7c 61 ibutes.=.new_nwattr.&.~(aRONLY|a
28f00 52 45 4e 41 4d 45 49 4e 48 49 42 49 54 7c 61 44 45 4c 45 54 45 49 4e 48 49 42 49 54 29 3b 0a 09 RENAMEINHIBIT|aDELETEINHIBIT);..
28f20 09 72 65 73 32 20 3d 20 6e 63 70 5f 6d 6f 64 69 66 79 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 .res2.=.ncp_modify_file_or_subdi
28f40 72 5f 64 6f 73 5f 69 6e 66 6f 5f 70 61 74 68 28 4e 43 50 5f 53 45 52 56 45 52 28 6e 65 77 5f 64 r_dos_info_path(NCP_SERVER(new_d
28f60 69 72 29 2c 20 6e 65 77 5f 64 69 72 2c 20 5f 6e 65 77 5f 6e 61 6d 65 2c 20 44 4d 5f 41 54 54 52 ir),.new_dir,._new_name,.DM_ATTR
28f80 49 42 55 54 45 53 2c 20 26 69 6e 66 6f 29 3b 0a 09 09 69 66 20 28 21 72 65 73 32 29 0a 09 09 09 IBUTES,.&info);...if.(!res2)....
28fa0 6e 65 77 5f 6e 77 61 74 74 72 5f 63 68 61 6e 67 65 64 20 3d 20 31 3b 0a 09 7d 0a 20 20 20 20 20 new_nwattr_changed.=.1;..}......
28fc0 20 20 20 2f 2a 20 6e 6f 77 20 74 72 79 20 61 67 61 69 6e 20 74 68 65 20 72 65 6e 61 6d 65 20 6f .../*.now.try.again.the.rename.o
28fe0 70 65 72 61 74 69 6f 6e 20 2a 2f 0a 09 2f 2a 20 62 75 74 20 6f 6e 6c 79 20 69 66 20 73 6f 6d 65 peration.*/../*.but.only.if.some
29000 74 68 69 6e 67 20 72 65 61 6c 6c 79 20 68 61 70 70 65 6e 65 64 20 2a 2f 0a 09 69 66 20 28 6e 65 thing.really.happened.*/..if.(ne
29020 77 5f 6e 77 61 74 74 72 5f 63 68 61 6e 67 65 64 20 7c 7c 20 6f 6c 64 5f 6e 77 61 74 74 72 5f 63 w_nwattr_changed.||.old_nwattr_c
29040 68 61 6e 67 65 64 29 20 7b 0a 09 20 20 20 20 20 20 20 20 72 65 73 20 3d 20 6e 63 70 5f 72 65 6e hanged).{..........res.=.ncp_ren
29060 5f 6f 72 5f 6d 6f 76 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 4e 43 50 5f 53 45 52 56 45 _or_mov_file_or_subdir(NCP_SERVE
29080 52 28 6f 6c 64 5f 64 69 72 29 2c 0a 20 20 20 20 20 20 20 20 09 20 20 20 20 20 20 20 20 20 20 20 R(old_dir),.....................
290a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 6c 64 5f 64 69 72 .........................old_dir
290c0 2c 20 5f 6f 6c 64 5f 6e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 09 20 20 ,._old_name,....................
290e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 5f 64 69 ..........................new_di
29100 72 2c 20 5f 6e 65 77 5f 6e 61 6d 65 29 3b 0a 09 7d 20 0a 09 69 66 20 28 72 65 73 29 0a 09 09 67 r,._new_name);..}...if.(res)...g
29120 6f 74 6f 20 6c 65 61 76 65 5f 6d 65 3b 0a 09 2f 2a 20 66 69 6c 65 20 77 61 73 20 73 75 63 63 65 oto.leave_me;../*.file.was.succe
29140 73 73 66 75 6c 6c 79 20 72 65 6e 61 6d 65 64 2c 20 73 6f 3a 0a 09 20 20 20 64 6f 20 6e 6f 74 20 ssfully.renamed,.so:.....do.not.
29160 73 65 74 20 61 74 74 72 69 62 75 74 65 73 20 6f 6e 20 6f 6c 64 20 66 69 6c 65 20 2d 20 69 74 20 set.attributes.on.old.file.-.it.
29180 6e 6f 20 6c 6f 6e 67 65 72 20 65 78 69 73 74 73 0a 09 20 20 20 63 6f 70 79 20 61 74 74 72 69 62 no.longer.exists.....copy.attrib
291a0 75 74 65 73 20 66 72 6f 6d 20 6f 6c 64 20 66 69 6c 65 20 74 6f 20 6e 65 77 20 2a 2f 0a 09 6e 65 utes.from.old.file.to.new.*/..ne
291c0 77 5f 6e 77 61 74 74 72 5f 63 68 61 6e 67 65 64 20 3d 20 6f 6c 64 5f 6e 77 61 74 74 72 5f 63 68 w_nwattr_changed.=.old_nwattr_ch
291e0 61 6e 67 65 64 3b 0a 09 6e 65 77 5f 6e 77 61 74 74 72 20 3d 20 6f 6c 64 5f 6e 77 61 74 74 72 3b anged;..new_nwattr.=.old_nwattr;
29200 0a 09 6f 6c 64 5f 6e 77 61 74 74 72 5f 63 68 61 6e 67 65 64 20 3d 20 30 3b 0a 09 0a 6c 65 61 76 ..old_nwattr_changed.=.0;...leav
29220 65 5f 6d 65 3a 3b 0a 09 69 66 20 28 6f 6c 64 5f 6e 77 61 74 74 72 5f 63 68 61 6e 67 65 64 29 20 e_me:;..if.(old_nwattr_changed).
29240 7b 0a 09 09 69 6e 66 6f 2e 61 74 74 72 69 62 75 74 65 73 20 3d 20 6f 6c 64 5f 6e 77 61 74 74 72 {...info.attributes.=.old_nwattr
29260 3b 0a 09 09 72 65 73 32 20 3d 20 6e 63 70 5f 6d 6f 64 69 66 79 5f 66 69 6c 65 5f 6f 72 5f 73 75 ;...res2.=.ncp_modify_file_or_su
29280 62 64 69 72 5f 64 6f 73 5f 69 6e 66 6f 5f 70 61 74 68 28 4e 43 50 5f 53 45 52 56 45 52 28 6f 6c bdir_dos_info_path(NCP_SERVER(ol
292a0 64 5f 69 6e 6f 64 65 29 2c 20 6f 6c 64 5f 69 6e 6f 64 65 2c 20 4e 55 4c 4c 2c 20 44 4d 5f 41 54 d_inode),.old_inode,.NULL,.DM_AT
292c0 54 52 49 42 55 54 45 53 2c 20 26 69 6e 66 6f 29 3b 0a 09 09 2f 2a 20 69 67 6e 6f 72 65 20 65 72 TRIBUTES,.&info);.../*.ignore.er
292e0 72 6f 72 73 20 2a 2f 0a 09 7d 0a 09 69 66 20 28 6e 65 77 5f 6e 77 61 74 74 72 5f 63 68 61 6e 67 rors.*/..}..if.(new_nwattr_chang
29300 65 64 29 09 7b 0a 09 09 69 6e 66 6f 2e 61 74 74 72 69 62 75 74 65 73 20 3d 20 6e 65 77 5f 6e 77 ed).{...info.attributes.=.new_nw
29320 61 74 74 72 3b 0a 09 09 72 65 73 32 20 3d 20 6e 63 70 5f 6d 6f 64 69 66 79 5f 66 69 6c 65 5f 6f attr;...res2.=.ncp_modify_file_o
29340 72 5f 73 75 62 64 69 72 5f 64 6f 73 5f 69 6e 66 6f 5f 70 61 74 68 28 4e 43 50 5f 53 45 52 56 45 r_subdir_dos_info_path(NCP_SERVE
29360 52 28 6e 65 77 5f 64 69 72 29 2c 20 6e 65 77 5f 64 69 72 2c 20 5f 6e 65 77 5f 6e 61 6d 65 2c 20 R(new_dir),.new_dir,._new_name,.
29380 44 4d 5f 41 54 54 52 49 42 55 54 45 53 2c 20 26 69 6e 66 6f 29 3b 0a 09 09 2f 2a 20 69 67 6e 6f DM_ATTRIBUTES,.&info);.../*.igno
293a0 72 65 20 65 72 72 6f 72 73 20 2a 2f 0a 09 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 28 72 re.errors.*/..}.........return(r
293c0 65 73 29 3b 0a 7d 0a 23 65 6e 64 69 66 09 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 53 54 es);.}.#endif./*.CONFIG_NCPFS_ST
293e0 52 4f 4e 47 20 2a 2f 0a 0a 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 6c 6f 6f 6b 75 70 5f RONG.*/...static.int.ncp_lookup_
29400 76 61 6c 69 64 61 74 65 28 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 2c 20 validate(struct.dentry.*dentry,.
29420 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 66 6c 61 67 73 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 unsigned.int.flags).{..struct.nc
29440 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 3b 0a 09 73 74 72 75 63 74 20 64 65 6e 74 72 79 p_server.*server;..struct.dentry
29460 20 2a 70 61 72 65 6e 74 3b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 3b 0a 09 73 .*parent;..struct.inode.*dir;..s
29480 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 66 69 6e 66 6f 3b 0a 09 69 6e 74 truct.ncp_entry_info.finfo;..int
294a0 20 72 65 73 2c 20 76 61 6c 20 3d 20 30 2c 20 6c 65 6e 3b 0a 09 5f 5f 75 38 20 5f 5f 6e 61 6d 65 .res,.val.=.0,.len;..__u8.__name
294c0 5b 4e 43 50 5f 4d 41 58 50 41 54 48 4c 45 4e 20 2b 20 31 5d 3b 0a 0a 09 69 66 20 28 64 65 6e 74 [NCP_MAXPATHLEN.+.1];...if.(dent
294e0 72 79 20 3d 3d 20 64 65 6e 74 72 79 2d 3e 64 5f 73 62 2d 3e 73 5f 72 6f 6f 74 29 0a 09 09 72 65 ry.==.dentry->d_sb->s_root)...re
29500 74 75 72 6e 20 31 3b 0a 0a 09 69 66 20 28 66 6c 61 67 73 20 26 20 4c 4f 4f 4b 55 50 5f 52 43 55 turn.1;...if.(flags.&.LOOKUP_RCU
29520 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 43 48 49 4c 44 3b 0a 0a 09 70 61 72 65 6e 74 20 3d 20 64 )...return.-ECHILD;...parent.=.d
29540 67 65 74 5f 70 61 72 65 6e 74 28 64 65 6e 74 72 79 29 3b 0a 09 64 69 72 20 3d 20 64 5f 69 6e 6f get_parent(dentry);..dir.=.d_ino
29560 64 65 28 70 61 72 65 6e 74 29 3b 0a 0a 09 69 66 20 28 64 5f 72 65 61 6c 6c 79 5f 69 73 5f 6e 65 de(parent);...if.(d_really_is_ne
29580 67 61 74 69 76 65 28 64 65 6e 74 72 79 29 29 0a 09 09 67 6f 74 6f 20 66 69 6e 69 73 68 65 64 3b gative(dentry))...goto.finished;
295a0 0a 0a 09 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 64 69 72 29 3b 0a 0a 09 2f ...server.=.NCP_SERVER(dir);.../
295c0 2a 0a 09 20 2a 20 49 6e 73 70 69 72 65 64 20 62 79 20 73 6d 62 66 73 3a 0a 09 20 2a 20 54 68 65 *...*.Inspired.by.smbfs:...*.The
295e0 20 64 65 66 61 75 6c 74 20 76 61 6c 69 64 61 74 69 6f 6e 20 69 73 20 62 61 73 65 64 20 6f 6e 20 .default.validation.is.based.on.
29600 64 65 6e 74 72 79 20 61 67 65 3a 0a 09 20 2a 20 57 65 20 73 65 74 20 74 68 65 20 6d 61 78 20 61 dentry.age:...*.We.set.the.max.a
29620 67 65 20 61 74 20 6d 6f 75 6e 74 20 74 69 6d 65 2e 20 20 28 42 75 74 20 65 61 63 68 0a 09 20 2a ge.at.mount.time...(But.each...*
29640 20 73 75 63 63 65 73 73 66 75 6c 20 73 65 72 76 65 72 20 6c 6f 6f 6b 75 70 20 72 65 6e 65 77 73 .successful.server.lookup.renews
29660 20 74 68 65 20 74 69 6d 65 73 74 61 6d 70 2e 29 0a 09 20 2a 2f 0a 09 76 61 6c 20 3d 20 4e 43 50 .the.timestamp.)...*/..val.=.NCP
29680 5f 54 45 53 54 5f 41 47 45 28 73 65 72 76 65 72 2c 20 64 65 6e 74 72 79 29 3b 0a 09 69 66 20 28 _TEST_AGE(server,.dentry);..if.(
296a0 76 61 6c 29 0a 09 09 67 6f 74 6f 20 66 69 6e 69 73 68 65 64 3b 0a 0a 09 6e 63 70 5f 64 62 67 28 val)...goto.finished;...ncp_dbg(
296c0 32 2c 20 22 25 70 64 32 20 6e 6f 74 20 76 61 6c 69 64 2c 20 61 67 65 3d 25 6c 64 2c 20 73 65 72 2,."%pd2.not.valid,.age=%ld,.ser
296e0 76 65 72 20 6c 6f 6f 6b 75 70 5c 6e 22 2c 0a 09 09 64 65 6e 74 72 79 2c 20 4e 43 50 5f 47 45 54 ver.lookup\n",...dentry,.NCP_GET
29700 5f 41 47 45 28 64 65 6e 74 72 79 29 29 3b 0a 0a 09 6c 65 6e 20 3d 20 73 69 7a 65 6f 66 28 5f 5f _AGE(dentry));...len.=.sizeof(__
29720 6e 61 6d 65 29 3b 0a 09 69 66 20 28 6e 63 70 5f 69 73 5f 73 65 72 76 65 72 5f 72 6f 6f 74 28 64 name);..if.(ncp_is_server_root(d
29740 69 72 29 29 20 7b 0a 09 09 72 65 73 20 3d 20 6e 63 70 5f 69 6f 32 76 6f 6c 28 73 65 72 76 65 72 ir)).{...res.=.ncp_io2vol(server
29760 2c 20 5f 5f 6e 61 6d 65 2c 20 26 6c 65 6e 2c 20 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6e ,.__name,.&len,.dentry->d_name.n
29780 61 6d 65 2c 0a 09 09 09 09 20 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6c 65 6e 2c 20 31 29 ame,......dentry->d_name.len,.1)
297a0 3b 0a 09 09 69 66 20 28 21 72 65 73 29 20 7b 0a 09 09 09 72 65 73 20 3d 20 6e 63 70 5f 6c 6f 6f ;...if.(!res).{....res.=.ncp_loo
297c0 6b 75 70 5f 76 6f 6c 75 6d 65 28 73 65 72 76 65 72 2c 20 5f 5f 6e 61 6d 65 2c 20 26 28 66 69 6e kup_volume(server,.__name,.&(fin
297e0 66 6f 2e 69 29 29 3b 0a 09 09 09 69 66 20 28 21 72 65 73 29 0a 09 09 09 09 6e 63 70 5f 75 70 64 fo.i));....if.(!res).....ncp_upd
29800 61 74 65 5f 6b 6e 6f 77 6e 5f 6e 61 6d 65 73 70 61 63 65 28 73 65 72 76 65 72 2c 20 66 69 6e 66 ate_known_namespace(server,.finf
29820 6f 2e 69 2e 76 6f 6c 4e 75 6d 62 65 72 2c 20 4e 55 4c 4c 29 3b 0a 09 09 7d 0a 09 7d 20 65 6c 73 o.i.volNumber,.NULL);...}..}.els
29840 65 20 7b 0a 09 09 72 65 73 20 3d 20 6e 63 70 5f 69 6f 32 76 6f 6c 28 73 65 72 76 65 72 2c 20 5f e.{...res.=.ncp_io2vol(server,._
29860 5f 6e 61 6d 65 2c 20 26 6c 65 6e 2c 20 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6e 61 6d 65 _name,.&len,.dentry->d_name.name
29880 2c 0a 09 09 09 09 20 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6c 65 6e 2c 20 21 6e 63 70 5f ,......dentry->d_name.len,.!ncp_
298a0 70 72 65 73 65 72 76 65 5f 63 61 73 65 28 64 69 72 29 29 3b 0a 09 09 69 66 20 28 21 72 65 73 29 preserve_case(dir));...if.(!res)
298c0 0a 09 09 09 72 65 73 20 3d 20 6e 63 70 5f 6f 62 74 61 69 6e 5f 69 6e 66 6f 28 73 65 72 76 65 72 ....res.=.ncp_obtain_info(server
298e0 2c 20 64 69 72 2c 20 5f 5f 6e 61 6d 65 2c 20 26 28 66 69 6e 66 6f 2e 69 29 29 3b 0a 09 7d 0a 09 ,.dir,.__name,.&(finfo.i));..}..
29900 66 69 6e 66 6f 2e 76 6f 6c 75 6d 65 20 3d 20 66 69 6e 66 6f 2e 69 2e 76 6f 6c 4e 75 6d 62 65 72 finfo.volume.=.finfo.i.volNumber
29920 3b 0a 09 6e 63 70 5f 64 62 67 28 32 2c 20 22 6c 6f 6f 6b 65 64 20 66 6f 72 20 25 70 64 2f 25 73 ;..ncp_dbg(2,."looked.for.%pd/%s
29940 2c 20 72 65 73 3d 25 64 5c 6e 22 2c 0a 09 09 64 65 6e 74 72 79 2d 3e 64 5f 70 61 72 65 6e 74 2c ,.res=%d\n",...dentry->d_parent,
29960 20 5f 5f 6e 61 6d 65 2c 20 72 65 73 29 3b 0a 09 2f 2a 0a 09 20 2a 20 49 66 20 77 65 20 64 69 64 .__name,.res);../*...*.If.we.did
29980 6e 27 74 20 66 69 6e 64 20 69 74 2c 20 6f 72 20 69 66 20 69 74 20 68 61 73 20 61 20 64 69 66 66 n't.find.it,.or.if.it.has.a.diff
299a0 65 72 65 6e 74 20 64 69 72 45 6e 74 4e 75 6d 20 74 6f 0a 09 20 2a 20 77 68 61 74 20 77 65 20 72 erent.dirEntNum.to...*.what.we.r
299c0 65 6d 65 6d 62 65 72 2c 20 69 74 27 73 20 6e 6f 74 20 76 61 6c 69 64 20 61 6e 79 20 6d 6f 72 65 emember,.it's.not.valid.any.more
299e0 2e 0a 09 20 2a 2f 0a 09 69 66 20 28 21 72 65 73 29 20 7b 0a 09 09 73 74 72 75 63 74 20 69 6e 6f ....*/..if.(!res).{...struct.ino
29a00 64 65 20 2a 69 6e 6f 64 65 20 3d 20 64 5f 69 6e 6f 64 65 28 64 65 6e 74 72 79 29 3b 0a 0a 09 09 de.*inode.=.d_inode(dentry);....
29a20 69 6e 6f 64 65 5f 6c 6f 63 6b 28 69 6e 6f 64 65 29 3b 0a 09 09 69 66 20 28 66 69 6e 66 6f 2e 69 inode_lock(inode);...if.(finfo.i
29a40 2e 64 69 72 45 6e 74 4e 75 6d 20 3d 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e .dirEntNum.==.NCP_FINFO(inode)->
29a60 64 69 72 45 6e 74 4e 75 6d 29 20 7b 0a 09 09 09 6e 63 70 5f 6e 65 77 5f 64 65 6e 74 72 79 28 64 dirEntNum).{....ncp_new_dentry(d
29a80 65 6e 74 72 79 29 3b 0a 09 09 09 76 61 6c 3d 31 3b 0a 09 09 7d 20 65 6c 73 65 0a 09 09 09 6e 63 entry);....val=1;...}.else....nc
29aa0 70 5f 64 62 67 28 32 2c 20 22 66 6f 75 6e 64 2c 20 62 75 74 20 64 69 72 45 6e 74 4e 75 6d 20 63 p_dbg(2,."found,.but.dirEntNum.c
29ac0 68 61 6e 67 65 64 5c 6e 22 29 3b 0a 0a 09 09 6e 63 70 5f 75 70 64 61 74 65 5f 69 6e 6f 64 65 32 hanged\n");....ncp_update_inode2
29ae0 28 69 6e 6f 64 65 2c 20 26 66 69 6e 66 6f 29 3b 0a 09 09 69 6e 6f 64 65 5f 75 6e 6c 6f 63 6b 28 (inode,.&finfo);...inode_unlock(
29b00 69 6e 6f 64 65 29 3b 0a 09 7d 0a 0a 66 69 6e 69 73 68 65 64 3a 0a 09 6e 63 70 5f 64 62 67 28 32 inode);..}..finished:..ncp_dbg(2
29b20 2c 20 22 72 65 73 75 6c 74 3d 25 64 5c 6e 22 2c 20 76 61 6c 29 3b 0a 09 64 70 75 74 28 70 61 72 ,."result=%d\n",.val);..dput(par
29b40 65 6e 74 29 3b 0a 09 72 65 74 75 72 6e 20 76 61 6c 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 74 69 6d ent);..return.val;.}..static.tim
29b60 65 5f 74 20 6e 63 70 5f 6f 62 74 61 69 6e 5f 6d 74 69 6d 65 28 73 74 72 75 63 74 20 64 65 6e 74 e_t.ncp_obtain_mtime(struct.dent
29b80 72 79 20 2a 64 65 6e 74 72 79 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f ry.*dentry).{..struct.inode.*ino
29ba0 64 65 20 3d 20 64 5f 69 6e 6f 64 65 28 64 65 6e 74 72 79 29 3b 0a 09 73 74 72 75 63 74 20 6e 63 de.=.d_inode(dentry);..struct.nc
29bc0 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 69 6e p_server.*server.=.NCP_SERVER(in
29be0 6f 64 65 29 3b 0a 09 73 74 72 75 63 74 20 6e 77 5f 69 6e 66 6f 5f 73 74 72 75 63 74 20 69 3b 0a ode);..struct.nw_info_struct.i;.
29c00 0a 09 69 66 20 28 21 6e 63 70 5f 63 6f 6e 6e 5f 76 61 6c 69 64 28 73 65 72 76 65 72 29 20 7c 7c ..if.(!ncp_conn_valid(server).||
29c20 20 6e 63 70 5f 69 73 5f 73 65 72 76 65 72 5f 72 6f 6f 74 28 69 6e 6f 64 65 29 29 0a 09 09 72 65 .ncp_is_server_root(inode))...re
29c40 74 75 72 6e 20 30 3b 0a 0a 09 69 66 20 28 6e 63 70 5f 6f 62 74 61 69 6e 5f 69 6e 66 6f 28 73 65 turn.0;...if.(ncp_obtain_info(se
29c60 72 76 65 72 2c 20 69 6e 6f 64 65 2c 20 4e 55 4c 4c 2c 20 26 69 29 29 0a 09 09 72 65 74 75 72 6e rver,.inode,.NULL,.&i))...return
29c80 20 30 3b 0a 0a 09 72 65 74 75 72 6e 20 6e 63 70 5f 64 61 74 65 5f 64 6f 73 32 75 6e 69 78 28 69 .0;...return.ncp_date_dos2unix(i
29ca0 2e 6d 6f 64 69 66 79 54 69 6d 65 2c 20 69 2e 6d 6f 64 69 66 79 44 61 74 65 29 3b 0a 7d 0a 0a 73 .modifyTime,.i.modifyDate);.}..s
29cc0 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 76 6f 69 64 0a 6e 63 70 5f 69 6e 76 61 6c 69 64 61 74 65 tatic.inline.void.ncp_invalidate
29ce0 5f 64 69 72 63 61 63 68 65 5f 65 6e 74 72 69 65 73 28 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 _dircache_entries(struct.dentry.
29d00 2a 70 61 72 65 6e 74 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 *parent).{..struct.ncp_server.*s
29d20 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 64 5f 69 6e 6f 64 65 28 70 61 72 65 6e erver.=.NCP_SERVER(d_inode(paren
29d40 74 29 29 3b 0a 09 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 3b 0a 0a 09 73 t));..struct.dentry.*dentry;...s
29d60 70 69 6e 5f 6c 6f 63 6b 28 26 70 61 72 65 6e 74 2d 3e 64 5f 6c 6f 63 6b 29 3b 0a 09 6c 69 73 74 pin_lock(&parent->d_lock);..list
29d80 5f 66 6f 72 5f 65 61 63 68 5f 65 6e 74 72 79 28 64 65 6e 74 72 79 2c 20 26 70 61 72 65 6e 74 2d _for_each_entry(dentry,.&parent-
29da0 3e 64 5f 73 75 62 64 69 72 73 2c 20 64 5f 63 68 69 6c 64 29 20 7b 0a 09 09 64 65 6e 74 72 79 2d >d_subdirs,.d_child).{...dentry-
29dc0 3e 64 5f 66 73 64 61 74 61 20 3d 20 4e 55 4c 4c 3b 0a 09 09 6e 63 70 5f 61 67 65 5f 64 65 6e 74 >d_fsdata.=.NULL;...ncp_age_dent
29de0 72 79 28 73 65 72 76 65 72 2c 20 64 65 6e 74 72 79 29 3b 0a 09 7d 0a 09 73 70 69 6e 5f 75 6e 6c ry(server,.dentry);..}..spin_unl
29e00 6f 63 6b 28 26 70 61 72 65 6e 74 2d 3e 64 5f 6c 6f 63 6b 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 ock(&parent->d_lock);.}..static.
29e20 69 6e 74 20 6e 63 70 5f 72 65 61 64 64 69 72 28 73 74 72 75 63 74 20 66 69 6c 65 20 2a 66 69 6c int.ncp_readdir(struct.file.*fil
29e40 65 2c 20 73 74 72 75 63 74 20 64 69 72 5f 63 6f 6e 74 65 78 74 20 2a 63 74 78 29 0a 7b 0a 09 73 e,.struct.dir_context.*ctx).{..s
29e60 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 20 3d 20 66 69 6c 65 2d 3e 66 5f 70 truct.dentry.*dentry.=.file->f_p
29e80 61 74 68 2e 64 65 6e 74 72 79 3b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 ath.dentry;..struct.inode.*inode
29ea0 20 3d 20 64 5f 69 6e 6f 64 65 28 64 65 6e 74 72 79 29 3b 0a 09 73 74 72 75 63 74 20 70 61 67 65 .=.d_inode(dentry);..struct.page
29ec0 20 2a 70 61 67 65 20 3d 20 4e 55 4c 4c 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 .*page.=.NULL;..struct.ncp_serve
29ee0 72 20 2a 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 3b 0a 09 r.*server.=.NCP_SERVER(inode);..
29f00 75 6e 69 6f 6e 20 20 6e 63 70 5f 64 69 72 5f 63 61 63 68 65 20 2a 63 61 63 68 65 20 3d 20 4e 55 union..ncp_dir_cache.*cache.=.NU
29f20 4c 4c 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c 20 63 74 LL;..struct.ncp_cache_control.ct
29f40 6c 3b 0a 09 69 6e 74 20 72 65 73 75 6c 74 2c 20 6d 74 69 6d 65 5f 76 61 6c 69 64 20 3d 20 30 3b l;..int.result,.mtime_valid.=.0;
29f60 0a 09 74 69 6d 65 5f 74 20 6d 74 69 6d 65 20 3d 20 30 3b 0a 0a 09 63 74 6c 2e 70 61 67 65 20 20 ..time_t.mtime.=.0;...ctl.page..
29f80 3d 20 4e 55 4c 4c 3b 0a 09 63 74 6c 2e 63 61 63 68 65 20 3d 20 4e 55 4c 4c 3b 0a 0a 09 6e 63 70 =.NULL;..ctl.cache.=.NULL;...ncp
29fa0 5f 64 62 67 28 32 2c 20 22 72 65 61 64 69 6e 67 20 25 70 44 32 2c 20 70 6f 73 3d 25 64 5c 6e 22 _dbg(2,."reading.%pD2,.pos=%d\n"
29fc0 2c 20 66 69 6c 65 2c 20 28 69 6e 74 29 63 74 78 2d 3e 70 6f 73 29 3b 0a 0a 09 72 65 73 75 6c 74 ,.file,.(int)ctx->pos);...result
29fe0 20 3d 20 2d 45 49 4f 3b 0a 09 2f 2a 20 44 6f 20 6e 6f 74 20 67 65 6e 65 72 61 74 65 20 27 2e 27 .=.-EIO;../*.Do.not.generate.'.'
2a000 20 61 6e 64 20 27 2e 2e 27 20 77 68 65 6e 20 73 65 72 76 65 72 20 69 73 20 64 65 61 64 2e 20 2a .and.'..'.when.server.is.dead..*
2a020 2f 0a 09 69 66 20 28 21 6e 63 70 5f 63 6f 6e 6e 5f 76 61 6c 69 64 28 73 65 72 76 65 72 29 29 0a /..if.(!ncp_conn_valid(server)).
2a040 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 72 65 73 75 6c 74 20 3d 20 30 3b 0a 09 69 66 20 28 21 ..goto.out;...result.=.0;..if.(!
2a060 64 69 72 5f 65 6d 69 74 5f 64 6f 74 73 28 66 69 6c 65 2c 20 63 74 78 29 29 0a 09 09 67 6f 74 6f dir_emit_dots(file,.ctx))...goto
2a080 20 6f 75 74 3b 0a 0a 09 70 61 67 65 20 3d 20 67 72 61 62 5f 63 61 63 68 65 5f 70 61 67 65 28 26 .out;...page.=.grab_cache_page(&
2a0a0 69 6e 6f 64 65 2d 3e 69 5f 64 61 74 61 2c 20 30 29 3b 0a 09 69 66 20 28 21 70 61 67 65 29 0a 09 inode->i_data,.0);..if.(!page)..
2a0c0 09 67 6f 74 6f 20 72 65 61 64 5f 72 65 61 6c 6c 79 3b 0a 0a 09 63 74 6c 2e 63 61 63 68 65 20 3d .goto.read_really;...ctl.cache.=
2a0e0 20 63 61 63 68 65 20 3d 20 6b 6d 61 70 28 70 61 67 65 29 3b 0a 09 63 74 6c 2e 68 65 61 64 20 20 .cache.=.kmap(page);..ctl.head..
2a100 3d 20 63 61 63 68 65 2d 3e 68 65 61 64 3b 0a 0a 09 69 66 20 28 21 50 61 67 65 55 70 74 6f 64 61 =.cache->head;...if.(!PageUptoda
2a120 74 65 28 70 61 67 65 29 20 7c 7c 20 21 63 74 6c 2e 68 65 61 64 2e 65 6f 66 29 0a 09 09 67 6f 74 te(page).||.!ctl.head.eof)...got
2a140 6f 20 69 6e 69 74 5f 63 61 63 68 65 3b 0a 0a 09 69 66 20 28 63 74 78 2d 3e 70 6f 73 20 3d 3d 20 o.init_cache;...if.(ctx->pos.==.
2a160 32 29 20 7b 0a 09 09 69 66 20 28 6a 69 66 66 69 65 73 20 2d 20 63 74 6c 2e 68 65 61 64 2e 74 69 2).{...if.(jiffies.-.ctl.head.ti
2a180 6d 65 20 3e 3d 20 4e 43 50 5f 4d 41 58 5f 41 47 45 28 73 65 72 76 65 72 29 29 0a 09 09 09 67 6f me.>=.NCP_MAX_AGE(server))....go
2a1a0 74 6f 20 69 6e 69 74 5f 63 61 63 68 65 3b 0a 0a 09 09 6d 74 69 6d 65 20 3d 20 6e 63 70 5f 6f 62 to.init_cache;....mtime.=.ncp_ob
2a1c0 74 61 69 6e 5f 6d 74 69 6d 65 28 64 65 6e 74 72 79 29 3b 0a 09 09 6d 74 69 6d 65 5f 76 61 6c 69 tain_mtime(dentry);...mtime_vali
2a1e0 64 20 3d 20 31 3b 0a 09 09 69 66 20 28 28 21 6d 74 69 6d 65 29 20 7c 7c 20 28 6d 74 69 6d 65 20 d.=.1;...if.((!mtime).||.(mtime.
2a200 21 3d 20 63 74 6c 2e 68 65 61 64 2e 6d 74 69 6d 65 29 29 0a 09 09 09 67 6f 74 6f 20 69 6e 69 74 !=.ctl.head.mtime))....goto.init
2a220 5f 63 61 63 68 65 3b 0a 09 7d 0a 0a 09 69 66 20 28 63 74 78 2d 3e 70 6f 73 20 3e 20 63 74 6c 2e _cache;..}...if.(ctx->pos.>.ctl.
2a240 68 65 61 64 2e 65 6e 64 29 0a 09 09 67 6f 74 6f 20 66 69 6e 69 73 68 65 64 3b 0a 0a 09 63 74 6c head.end)...goto.finished;...ctl
2a260 2e 66 70 6f 73 20 3d 20 63 74 78 2d 3e 70 6f 73 20 2b 20 28 4e 43 50 5f 44 49 52 43 41 43 48 45 .fpos.=.ctx->pos.+.(NCP_DIRCACHE
2a280 5f 53 54 41 52 54 20 2d 20 32 29 3b 0a 09 63 74 6c 2e 6f 66 73 20 20 3d 20 63 74 6c 2e 66 70 6f _START.-.2);..ctl.ofs..=.ctl.fpo
2a2a0 73 20 2f 20 4e 43 50 5f 44 49 52 43 41 43 48 45 5f 53 49 5a 45 3b 0a 09 63 74 6c 2e 69 64 78 20 s./.NCP_DIRCACHE_SIZE;..ctl.idx.
2a2c0 20 3d 20 63 74 6c 2e 66 70 6f 73 20 25 20 4e 43 50 5f 44 49 52 43 41 43 48 45 5f 53 49 5a 45 3b .=.ctl.fpos.%.NCP_DIRCACHE_SIZE;
2a2e0 0a 0a 09 66 6f 72 20 28 3b 3b 29 20 7b 0a 09 09 69 66 20 28 63 74 6c 2e 6f 66 73 20 21 3d 20 30 ...for.(;;).{...if.(ctl.ofs.!=.0
2a300 29 20 7b 0a 09 09 09 63 74 6c 2e 70 61 67 65 20 3d 20 66 69 6e 64 5f 6c 6f 63 6b 5f 70 61 67 65 ).{....ctl.page.=.find_lock_page
2a320 28 26 69 6e 6f 64 65 2d 3e 69 5f 64 61 74 61 2c 20 63 74 6c 2e 6f 66 73 29 3b 0a 09 09 09 69 66 (&inode->i_data,.ctl.ofs);....if
2a340 20 28 21 63 74 6c 2e 70 61 67 65 29 0a 09 09 09 09 67 6f 74 6f 20 69 6e 76 61 6c 69 64 5f 63 61 .(!ctl.page).....goto.invalid_ca
2a360 63 68 65 3b 0a 09 09 09 63 74 6c 2e 63 61 63 68 65 20 3d 20 6b 6d 61 70 28 63 74 6c 2e 70 61 67 che;....ctl.cache.=.kmap(ctl.pag
2a380 65 29 3b 0a 09 09 09 69 66 20 28 21 50 61 67 65 55 70 74 6f 64 61 74 65 28 63 74 6c 2e 70 61 67 e);....if.(!PageUptodate(ctl.pag
2a3a0 65 29 29 0a 09 09 09 09 67 6f 74 6f 20 69 6e 76 61 6c 69 64 5f 63 61 63 68 65 3b 0a 09 09 7d 0a e)).....goto.invalid_cache;...}.
2a3c0 09 09 77 68 69 6c 65 20 28 63 74 6c 2e 69 64 78 20 3c 20 4e 43 50 5f 44 49 52 43 41 43 48 45 5f ..while.(ctl.idx.<.NCP_DIRCACHE_
2a3e0 53 49 5a 45 29 20 7b 0a 09 09 09 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 3b 0a SIZE).{....struct.dentry.*dent;.
2a400 09 09 09 62 6f 6f 6c 20 6f 76 65 72 3b 0a 0a 09 09 09 73 70 69 6e 5f 6c 6f 63 6b 28 26 64 65 6e ...bool.over;.....spin_lock(&den
2a420 74 72 79 2d 3e 64 5f 6c 6f 63 6b 29 3b 0a 09 09 09 69 66 20 28 21 28 4e 43 50 5f 46 49 4e 46 4f try->d_lock);....if.(!(NCP_FINFO
2a440 28 69 6e 6f 64 65 29 2d 3e 66 6c 61 67 73 20 26 20 4e 43 50 49 5f 44 49 52 5f 43 41 43 48 45 29 (inode)->flags.&.NCPI_DIR_CACHE)
2a460 29 20 7b 20 0a 09 09 09 09 73 70 69 6e 5f 75 6e 6c 6f 63 6b 28 26 64 65 6e 74 72 79 2d 3e 64 5f ).{......spin_unlock(&dentry->d_
2a480 6c 6f 63 6b 29 3b 0a 09 09 09 09 67 6f 74 6f 20 69 6e 76 61 6c 69 64 5f 63 61 63 68 65 3b 0a 09 lock);.....goto.invalid_cache;..
2a4a0 09 09 7d 0a 09 09 09 64 65 6e 74 20 3d 20 63 74 6c 2e 63 61 63 68 65 2d 3e 64 65 6e 74 72 79 5b ..}....dent.=.ctl.cache->dentry[
2a4c0 63 74 6c 2e 69 64 78 5d 3b 0a 09 09 09 69 66 20 28 75 6e 6c 69 6b 65 6c 79 28 21 6c 6f 63 6b 72 ctl.idx];....if.(unlikely(!lockr
2a4e0 65 66 5f 67 65 74 5f 6e 6f 74 5f 64 65 61 64 28 26 64 65 6e 74 2d 3e 64 5f 6c 6f 63 6b 72 65 66 ef_get_not_dead(&dent->d_lockref
2a500 29 29 29 20 7b 0a 09 09 09 09 73 70 69 6e 5f 75 6e 6c 6f 63 6b 28 26 64 65 6e 74 72 79 2d 3e 64 ))).{.....spin_unlock(&dentry->d
2a520 5f 6c 6f 63 6b 29 3b 0a 09 09 09 09 67 6f 74 6f 20 69 6e 76 61 6c 69 64 5f 63 61 63 68 65 3b 0a _lock);.....goto.invalid_cache;.
2a540 09 09 09 7d 0a 09 09 09 73 70 69 6e 5f 75 6e 6c 6f 63 6b 28 26 64 65 6e 74 72 79 2d 3e 64 5f 6c ...}....spin_unlock(&dentry->d_l
2a560 6f 63 6b 29 3b 0a 09 09 09 69 66 20 28 64 5f 72 65 61 6c 6c 79 5f 69 73 5f 6e 65 67 61 74 69 76 ock);....if.(d_really_is_negativ
2a580 65 28 64 65 6e 74 29 29 20 7b 0a 09 09 09 09 64 70 75 74 28 64 65 6e 74 29 3b 0a 09 09 09 09 67 e(dent)).{.....dput(dent);.....g
2a5a0 6f 74 6f 20 69 6e 76 61 6c 69 64 5f 63 61 63 68 65 3b 0a 09 09 09 7d 0a 09 09 09 6f 76 65 72 20 oto.invalid_cache;....}....over.
2a5c0 3d 20 21 64 69 72 5f 65 6d 69 74 28 63 74 78 2c 20 64 65 6e 74 2d 3e 64 5f 6e 61 6d 65 2e 6e 61 =.!dir_emit(ctx,.dent->d_name.na
2a5e0 6d 65 2c 0a 09 09 09 09 09 64 65 6e 74 2d 3e 64 5f 6e 61 6d 65 2e 6c 65 6e 2c 0a 09 09 09 09 09 me,......dent->d_name.len,......
2a600 64 5f 69 6e 6f 64 65 28 64 65 6e 74 29 2d 3e 69 5f 69 6e 6f 2c 20 44 54 5f 55 4e 4b 4e 4f 57 4e d_inode(dent)->i_ino,.DT_UNKNOWN
2a620 29 3b 0a 09 09 09 64 70 75 74 28 64 65 6e 74 29 3b 0a 09 09 09 69 66 20 28 6f 76 65 72 29 0a 09 );....dput(dent);....if.(over)..
2a640 09 09 09 67 6f 74 6f 20 66 69 6e 69 73 68 65 64 3b 0a 09 09 09 63 74 78 2d 3e 70 6f 73 20 2b 3d ...goto.finished;....ctx->pos.+=
2a660 20 31 3b 0a 09 09 09 63 74 6c 2e 69 64 78 20 2b 3d 20 31 3b 0a 09 09 09 69 66 20 28 63 74 78 2d .1;....ctl.idx.+=.1;....if.(ctx-
2a680 3e 70 6f 73 20 3e 20 63 74 6c 2e 68 65 61 64 2e 65 6e 64 29 0a 09 09 09 09 67 6f 74 6f 20 66 69 >pos.>.ctl.head.end).....goto.fi
2a6a0 6e 69 73 68 65 64 3b 0a 09 09 7d 0a 09 09 69 66 20 28 63 74 6c 2e 70 61 67 65 29 20 7b 0a 09 09 nished;...}...if.(ctl.page).{...
2a6c0 09 6b 75 6e 6d 61 70 28 63 74 6c 2e 70 61 67 65 29 3b 0a 09 09 09 53 65 74 50 61 67 65 55 70 74 .kunmap(ctl.page);....SetPageUpt
2a6e0 6f 64 61 74 65 28 63 74 6c 2e 70 61 67 65 29 3b 0a 09 09 09 75 6e 6c 6f 63 6b 5f 70 61 67 65 28 odate(ctl.page);....unlock_page(
2a700 63 74 6c 2e 70 61 67 65 29 3b 0a 09 09 09 70 75 74 5f 70 61 67 65 28 63 74 6c 2e 70 61 67 65 29 ctl.page);....put_page(ctl.page)
2a720 3b 0a 09 09 09 63 74 6c 2e 70 61 67 65 20 3d 20 4e 55 4c 4c 3b 0a 09 09 7d 0a 09 09 63 74 6c 2e ;....ctl.page.=.NULL;...}...ctl.
2a740 69 64 78 20 20 3d 20 30 3b 0a 09 09 63 74 6c 2e 6f 66 73 20 2b 3d 20 31 3b 0a 09 7d 0a 69 6e 76 idx..=.0;...ctl.ofs.+=.1;..}.inv
2a760 61 6c 69 64 5f 63 61 63 68 65 3a 0a 09 69 66 20 28 63 74 6c 2e 70 61 67 65 29 20 7b 0a 09 09 6b alid_cache:..if.(ctl.page).{...k
2a780 75 6e 6d 61 70 28 63 74 6c 2e 70 61 67 65 29 3b 0a 09 09 75 6e 6c 6f 63 6b 5f 70 61 67 65 28 63 unmap(ctl.page);...unlock_page(c
2a7a0 74 6c 2e 70 61 67 65 29 3b 0a 09 09 70 75 74 5f 70 61 67 65 28 63 74 6c 2e 70 61 67 65 29 3b 0a tl.page);...put_page(ctl.page);.
2a7c0 09 09 63 74 6c 2e 70 61 67 65 20 3d 20 4e 55 4c 4c 3b 0a 09 7d 0a 09 63 74 6c 2e 63 61 63 68 65 ..ctl.page.=.NULL;..}..ctl.cache
2a7e0 20 3d 20 63 61 63 68 65 3b 0a 69 6e 69 74 5f 63 61 63 68 65 3a 0a 09 6e 63 70 5f 69 6e 76 61 6c .=.cache;.init_cache:..ncp_inval
2a800 69 64 61 74 65 5f 64 69 72 63 61 63 68 65 5f 65 6e 74 72 69 65 73 28 64 65 6e 74 72 79 29 3b 0a idate_dircache_entries(dentry);.
2a820 09 69 66 20 28 21 6d 74 69 6d 65 5f 76 61 6c 69 64 29 20 7b 0a 09 09 6d 74 69 6d 65 20 3d 20 6e .if.(!mtime_valid).{...mtime.=.n
2a840 63 70 5f 6f 62 74 61 69 6e 5f 6d 74 69 6d 65 28 64 65 6e 74 72 79 29 3b 0a 09 09 6d 74 69 6d 65 cp_obtain_mtime(dentry);...mtime
2a860 5f 76 61 6c 69 64 20 3d 20 31 3b 0a 09 7d 0a 09 63 74 6c 2e 68 65 61 64 2e 6d 74 69 6d 65 20 3d _valid.=.1;..}..ctl.head.mtime.=
2a880 20 6d 74 69 6d 65 3b 0a 09 63 74 6c 2e 68 65 61 64 2e 74 69 6d 65 20 3d 20 6a 69 66 66 69 65 73 .mtime;..ctl.head.time.=.jiffies
2a8a0 3b 0a 09 63 74 6c 2e 68 65 61 64 2e 65 6f 66 20 3d 20 30 3b 0a 09 63 74 6c 2e 66 70 6f 73 20 3d ;..ctl.head.eof.=.0;..ctl.fpos.=
2a8c0 20 32 3b 0a 09 63 74 6c 2e 6f 66 73 20 3d 20 30 3b 0a 09 63 74 6c 2e 69 64 78 20 3d 20 4e 43 50 .2;..ctl.ofs.=.0;..ctl.idx.=.NCP
2a8e0 5f 44 49 52 43 41 43 48 45 5f 53 54 41 52 54 3b 0a 09 63 74 6c 2e 66 69 6c 6c 65 64 20 3d 20 30 _DIRCACHE_START;..ctl.filled.=.0
2a900 3b 0a 09 63 74 6c 2e 76 61 6c 69 64 20 20 3d 20 31 3b 0a 72 65 61 64 5f 72 65 61 6c 6c 79 3a 0a ;..ctl.valid..=.1;.read_really:.
2a920 09 73 70 69 6e 5f 6c 6f 63 6b 28 26 64 65 6e 74 72 79 2d 3e 64 5f 6c 6f 63 6b 29 3b 0a 09 4e 43 .spin_lock(&dentry->d_lock);..NC
2a940 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 66 6c 61 67 73 20 7c 3d 20 4e 43 50 49 5f 44 49 P_FINFO(inode)->flags.|=.NCPI_DI
2a960 52 5f 43 41 43 48 45 3b 0a 09 73 70 69 6e 5f 75 6e 6c 6f 63 6b 28 26 64 65 6e 74 72 79 2d 3e 64 R_CACHE;..spin_unlock(&dentry->d
2a980 5f 6c 6f 63 6b 29 3b 0a 09 69 66 20 28 6e 63 70 5f 69 73 5f 73 65 72 76 65 72 5f 72 6f 6f 74 28 _lock);..if.(ncp_is_server_root(
2a9a0 69 6e 6f 64 65 29 29 20 7b 0a 09 09 6e 63 70 5f 72 65 61 64 5f 76 6f 6c 75 6d 65 5f 6c 69 73 74 inode)).{...ncp_read_volume_list
2a9c0 28 66 69 6c 65 2c 20 63 74 78 2c 20 26 63 74 6c 29 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 6e (file,.ctx,.&ctl);..}.else.{...n
2a9e0 63 70 5f 64 6f 5f 72 65 61 64 64 69 72 28 66 69 6c 65 2c 20 63 74 78 2c 20 26 63 74 6c 29 3b 0a cp_do_readdir(file,.ctx,.&ctl);.
2aa00 09 7d 0a 09 63 74 6c 2e 68 65 61 64 2e 65 6e 64 20 3d 20 63 74 6c 2e 66 70 6f 73 20 2d 20 31 3b .}..ctl.head.end.=.ctl.fpos.-.1;
2aa20 0a 09 63 74 6c 2e 68 65 61 64 2e 65 6f 66 20 3d 20 63 74 6c 2e 76 61 6c 69 64 3b 0a 66 69 6e 69 ..ctl.head.eof.=.ctl.valid;.fini
2aa40 73 68 65 64 3a 0a 09 69 66 20 28 63 74 6c 2e 70 61 67 65 29 20 7b 0a 09 09 6b 75 6e 6d 61 70 28 shed:..if.(ctl.page).{...kunmap(
2aa60 63 74 6c 2e 70 61 67 65 29 3b 0a 09 09 53 65 74 50 61 67 65 55 70 74 6f 64 61 74 65 28 63 74 6c ctl.page);...SetPageUptodate(ctl
2aa80 2e 70 61 67 65 29 3b 0a 09 09 75 6e 6c 6f 63 6b 5f 70 61 67 65 28 63 74 6c 2e 70 61 67 65 29 3b .page);...unlock_page(ctl.page);
2aaa0 0a 09 09 70 75 74 5f 70 61 67 65 28 63 74 6c 2e 70 61 67 65 29 3b 0a 09 7d 0a 09 69 66 20 28 70 ...put_page(ctl.page);..}..if.(p
2aac0 61 67 65 29 20 7b 0a 09 09 63 61 63 68 65 2d 3e 68 65 61 64 20 3d 20 63 74 6c 2e 68 65 61 64 3b age).{...cache->head.=.ctl.head;
2aae0 0a 09 09 6b 75 6e 6d 61 70 28 70 61 67 65 29 3b 0a 09 09 53 65 74 50 61 67 65 55 70 74 6f 64 61 ...kunmap(page);...SetPageUptoda
2ab00 74 65 28 70 61 67 65 29 3b 0a 09 09 75 6e 6c 6f 63 6b 5f 70 61 67 65 28 70 61 67 65 29 3b 0a 09 te(page);...unlock_page(page);..
2ab20 09 70 75 74 5f 70 61 67 65 28 70 61 67 65 29 3b 0a 09 7d 0a 6f 75 74 3a 0a 09 72 65 74 75 72 6e .put_page(page);..}.out:..return
2ab40 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 64 5f 70 72 .result;.}..static.void.ncp_d_pr
2ab60 75 6e 65 28 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 29 0a 7b 0a 09 69 66 une(struct.dentry.*dentry).{..if
2ab80 20 28 21 64 65 6e 74 72 79 2d 3e 64 5f 66 73 64 61 74 61 29 09 2f 2a 20 6e 6f 74 20 72 65 66 65 .(!dentry->d_fsdata)./*.not.refe
2aba0 72 65 6e 63 65 64 20 66 72 6f 6d 20 70 61 67 65 20 63 61 63 68 65 20 2a 2f 0a 09 09 72 65 74 75 renced.from.page.cache.*/...retu
2abc0 72 6e 3b 0a 09 4e 43 50 5f 46 49 4e 46 4f 28 64 5f 69 6e 6f 64 65 28 64 65 6e 74 72 79 2d 3e 64 rn;..NCP_FINFO(d_inode(dentry->d
2abe0 5f 70 61 72 65 6e 74 29 29 2d 3e 66 6c 61 67 73 20 26 3d 20 7e 4e 43 50 49 5f 44 49 52 5f 43 41 _parent))->flags.&=.~NCPI_DIR_CA
2ac00 43 48 45 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 66 69 6c 6c 5f 63 61 63 68 CHE;.}..static.int.ncp_fill_cach
2ac20 65 28 73 74 72 75 63 74 20 66 69 6c 65 20 2a 66 69 6c 65 2c 20 73 74 72 75 63 74 20 64 69 72 5f e(struct.file.*file,.struct.dir_
2ac40 63 6f 6e 74 65 78 74 20 2a 63 74 78 2c 0a 09 09 73 74 72 75 63 74 20 6e 63 70 5f 63 61 63 68 65 context.*ctx,...struct.ncp_cache
2ac60 5f 63 6f 6e 74 72 6f 6c 20 2a 63 74 72 6c 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 _control.*ctrl,.struct.ncp_entry
2ac80 5f 69 6e 66 6f 20 2a 65 6e 74 72 79 2c 0a 09 09 69 6e 74 20 69 6e 76 61 6c 5f 63 68 69 6c 64 73 _info.*entry,...int.inval_childs
2aca0 29 0a 7b 0a 09 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 6e 65 77 64 65 6e 74 2c 20 2a 64 65 ).{..struct.dentry.*newdent,.*de
2acc0 6e 74 72 79 20 3d 20 66 69 6c 65 2d 3e 66 5f 70 61 74 68 2e 64 65 6e 74 72 79 3b 0a 09 73 74 72 ntry.=.file->f_path.dentry;..str
2ace0 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 20 3d 20 64 5f 69 6e 6f 64 65 28 64 65 6e 74 72 79 29 uct.inode.*dir.=.d_inode(dentry)
2ad00 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c 20 63 74 6c 20 ;..struct.ncp_cache_control.ctl.
2ad20 3d 20 2a 63 74 72 6c 3b 0a 09 73 74 72 75 63 74 20 71 73 74 72 20 71 6e 61 6d 65 3b 0a 09 69 6e =.*ctrl;..struct.qstr.qname;..in
2ad40 74 20 76 61 6c 69 64 20 3d 20 30 3b 0a 09 69 6e 74 20 68 61 73 68 65 64 20 3d 20 30 3b 0a 09 69 t.valid.=.0;..int.hashed.=.0;..i
2ad60 6e 6f 5f 74 20 69 6e 6f 20 3d 20 30 3b 0a 09 5f 5f 75 38 20 5f 5f 6e 61 6d 65 5b 4e 43 50 5f 4d no_t.ino.=.0;..__u8.__name[NCP_M
2ad80 41 58 50 41 54 48 4c 45 4e 20 2b 20 31 5d 3b 0a 0a 09 71 6e 61 6d 65 2e 6c 65 6e 20 3d 20 73 69 AXPATHLEN.+.1];...qname.len.=.si
2ada0 7a 65 6f 66 28 5f 5f 6e 61 6d 65 29 3b 0a 09 69 66 20 28 6e 63 70 5f 76 6f 6c 32 69 6f 28 4e 43 zeof(__name);..if.(ncp_vol2io(NC
2adc0 50 5f 53 45 52 56 45 52 28 64 69 72 29 2c 20 5f 5f 6e 61 6d 65 2c 20 26 71 6e 61 6d 65 2e 6c 65 P_SERVER(dir),.__name,.&qname.le
2ade0 6e 2c 0a 09 09 09 65 6e 74 72 79 2d 3e 69 2e 65 6e 74 72 79 4e 61 6d 65 2c 20 65 6e 74 72 79 2d n,....entry->i.entryName,.entry-
2ae00 3e 69 2e 6e 61 6d 65 4c 65 6e 2c 0a 09 09 09 21 6e 63 70 5f 70 72 65 73 65 72 76 65 5f 65 6e 74 >i.nameLen,....!ncp_preserve_ent
2ae20 72 79 5f 63 61 73 65 28 64 69 72 2c 20 65 6e 74 72 79 2d 3e 69 2e 4e 53 43 72 65 61 74 6f 72 29 ry_case(dir,.entry->i.NSCreator)
2ae40 29 29 0a 09 09 72 65 74 75 72 6e 20 31 3b 20 2f 2a 20 49 27 6d 20 6e 6f 74 20 73 75 72 65 20 2a ))...return.1;./*.I'm.not.sure.*
2ae60 2f 0a 0a 09 71 6e 61 6d 65 2e 6e 61 6d 65 20 3d 20 5f 5f 6e 61 6d 65 3b 0a 0a 09 6e 65 77 64 65 /...qname.name.=.__name;...newde
2ae80 6e 74 20 3d 20 64 5f 68 61 73 68 5f 61 6e 64 5f 6c 6f 6f 6b 75 70 28 64 65 6e 74 72 79 2c 20 26 nt.=.d_hash_and_lookup(dentry,.&
2aea0 71 6e 61 6d 65 29 3b 0a 09 69 66 20 28 49 53 5f 45 52 52 28 6e 65 77 64 65 6e 74 29 29 0a 09 09 qname);..if.(IS_ERR(newdent))...
2aec0 67 6f 74 6f 20 65 6e 64 5f 61 64 76 61 6e 63 65 3b 0a 09 69 66 20 28 21 6e 65 77 64 65 6e 74 29 goto.end_advance;..if.(!newdent)
2aee0 20 7b 0a 09 09 6e 65 77 64 65 6e 74 20 3d 20 64 5f 61 6c 6c 6f 63 28 64 65 6e 74 72 79 2c 20 26 .{...newdent.=.d_alloc(dentry,.&
2af00 71 6e 61 6d 65 29 3b 0a 09 09 69 66 20 28 21 6e 65 77 64 65 6e 74 29 0a 09 09 09 67 6f 74 6f 20 qname);...if.(!newdent)....goto.
2af20 65 6e 64 5f 61 64 76 61 6e 63 65 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 68 61 73 68 65 64 20 end_advance;..}.else.{...hashed.
2af40 3d 20 31 3b 0a 0a 09 09 2f 2a 20 49 66 20 63 61 73 65 20 73 65 6e 73 69 74 69 76 69 74 79 20 63 =.1;..../*.If.case.sensitivity.c
2af60 68 61 6e 67 65 64 20 66 6f 72 20 74 68 69 73 20 76 6f 6c 75 6d 65 2c 20 61 6c 6c 20 65 6e 74 72 hanged.for.this.volume,.all.entr
2af80 69 65 73 20 62 65 6c 6f 77 20 74 68 69 73 20 6f 6e 65 0a 09 09 20 20 20 73 68 6f 75 6c 64 20 62 ies.below.this.one......should.b
2afa0 65 20 74 68 72 6f 77 6e 20 61 77 61 79 2e 20 20 54 68 69 73 20 65 6e 74 72 79 20 69 74 73 65 6c e.thrown.away...This.entry.itsel
2afc0 66 20 69 73 20 6e 6f 74 20 61 66 66 65 63 74 65 64 2c 20 61 73 20 69 74 73 20 63 61 73 65 0a 09 f.is.not.affected,.as.its.case..
2afe0 09 20 20 20 73 65 6e 73 69 74 69 76 69 74 79 20 69 73 20 63 6f 6e 74 72 6f 6c 6c 65 64 20 62 79 ....sensitivity.is.controlled.by
2b000 20 69 74 73 20 6f 77 6e 20 70 61 72 65 6e 74 2e 20 2a 2f 0a 09 09 69 66 20 28 69 6e 76 61 6c 5f .its.own.parent..*/...if.(inval_
2b020 63 68 69 6c 64 73 29 0a 09 09 09 73 68 72 69 6e 6b 5f 64 63 61 63 68 65 5f 70 61 72 65 6e 74 28 childs)....shrink_dcache_parent(
2b040 6e 65 77 64 65 6e 74 29 3b 0a 0a 09 09 2f 2a 0a 09 09 20 2a 20 4e 65 74 57 61 72 65 27 73 20 4f newdent);..../*....*.NetWare's.O
2b060 53 32 20 6e 61 6d 65 73 70 61 63 65 20 69 73 20 63 61 73 65 20 70 72 65 73 65 72 76 69 6e 67 20 S2.namespace.is.case.preserving.
2b080 79 65 74 20 63 61 73 65 0a 09 09 20 2a 20 69 6e 73 65 6e 73 69 74 69 76 65 2e 20 20 53 6f 20 77 yet.case....*.insensitive...So.w
2b0a0 65 20 75 70 64 61 74 65 20 64 65 6e 74 72 79 27 73 20 6e 61 6d 65 20 61 73 20 72 65 63 65 69 76 e.update.dentry's.name.as.receiv
2b0c0 65 64 20 66 72 6f 6d 0a 09 09 20 2a 20 73 65 72 76 65 72 2e 20 50 61 72 65 6e 74 20 64 69 72 27 ed.from....*.server..Parent.dir'
2b0e0 73 20 69 5f 6d 75 74 65 78 20 69 73 20 6c 6f 63 6b 65 64 20 62 65 63 61 75 73 65 20 77 65 27 72 s.i_mutex.is.locked.because.we'r
2b100 65 20 69 6e 0a 09 09 20 2a 20 72 65 61 64 64 69 72 2e 0a 09 09 20 2a 2f 0a 09 09 64 65 6e 74 72 e.in....*.readdir.....*/...dentr
2b120 79 5f 75 70 64 61 74 65 5f 6e 61 6d 65 5f 63 61 73 65 28 6e 65 77 64 65 6e 74 2c 20 26 71 6e 61 y_update_name_case(newdent,.&qna
2b140 6d 65 29 3b 0a 09 7d 0a 0a 09 69 66 20 28 64 5f 72 65 61 6c 6c 79 5f 69 73 5f 6e 65 67 61 74 69 me);..}...if.(d_really_is_negati
2b160 76 65 28 6e 65 77 64 65 6e 74 29 29 20 7b 0a 09 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 ve(newdent)).{...struct.inode.*i
2b180 6e 6f 64 65 3b 0a 0a 09 09 65 6e 74 72 79 2d 3e 6f 70 65 6e 65 64 20 3d 20 30 3b 0a 09 09 65 6e node;....entry->opened.=.0;...en
2b1a0 74 72 79 2d 3e 69 6e 6f 20 3d 20 69 75 6e 69 71 75 65 28 64 69 72 2d 3e 69 5f 73 62 2c 20 32 29 try->ino.=.iunique(dir->i_sb,.2)
2b1c0 3b 0a 09 09 69 6e 6f 64 65 20 3d 20 6e 63 70 5f 69 67 65 74 28 64 69 72 2d 3e 69 5f 73 62 2c 20 ;...inode.=.ncp_iget(dir->i_sb,.
2b1e0 65 6e 74 72 79 29 3b 0a 09 09 69 66 20 28 69 6e 6f 64 65 29 20 7b 0a 09 09 09 64 5f 69 6e 73 74 entry);...if.(inode).{....d_inst
2b200 61 6e 74 69 61 74 65 28 6e 65 77 64 65 6e 74 2c 20 69 6e 6f 64 65 29 3b 0a 09 09 09 69 66 20 28 antiate(newdent,.inode);....if.(
2b220 21 68 61 73 68 65 64 29 0a 09 09 09 09 64 5f 72 65 68 61 73 68 28 6e 65 77 64 65 6e 74 29 3b 0a !hashed).....d_rehash(newdent);.
2b240 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 73 70 69 6e 5f 6c 6f 63 6b 28 26 64 65 6e 74 72 79 2d ..}.else.{....spin_lock(&dentry-
2b260 3e 64 5f 6c 6f 63 6b 29 3b 0a 09 09 09 4e 43 50 5f 46 49 4e 46 4f 28 64 69 72 29 2d 3e 66 6c 61 >d_lock);....NCP_FINFO(dir)->fla
2b280 67 73 20 26 3d 20 7e 4e 43 50 49 5f 44 49 52 5f 43 41 43 48 45 3b 0a 09 09 09 73 70 69 6e 5f 75 gs.&=.~NCPI_DIR_CACHE;....spin_u
2b2a0 6e 6c 6f 63 6b 28 26 64 65 6e 74 72 79 2d 3e 64 5f 6c 6f 63 6b 29 3b 0a 09 09 7d 0a 09 7d 20 65 nlock(&dentry->d_lock);...}..}.e
2b2c0 6c 73 65 20 7b 0a 09 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 20 3d 20 64 5f lse.{...struct.inode.*inode.=.d_
2b2e0 69 6e 6f 64 65 28 6e 65 77 64 65 6e 74 29 3b 0a 0a 09 09 69 6e 6f 64 65 5f 6c 6f 63 6b 5f 6e 65 inode(newdent);....inode_lock_ne
2b300 73 74 65 64 28 69 6e 6f 64 65 2c 20 49 5f 4d 55 54 45 58 5f 43 48 49 4c 44 29 3b 0a 09 09 6e 63 sted(inode,.I_MUTEX_CHILD);...nc
2b320 70 5f 75 70 64 61 74 65 5f 69 6e 6f 64 65 32 28 69 6e 6f 64 65 2c 20 65 6e 74 72 79 29 3b 0a 09 p_update_inode2(inode,.entry);..
2b340 09 69 6e 6f 64 65 5f 75 6e 6c 6f 63 6b 28 69 6e 6f 64 65 29 3b 0a 09 7d 0a 0a 09 69 66 20 28 63 .inode_unlock(inode);..}...if.(c
2b360 74 6c 2e 69 64 78 20 3e 3d 20 4e 43 50 5f 44 49 52 43 41 43 48 45 5f 53 49 5a 45 29 20 7b 0a 09 tl.idx.>=.NCP_DIRCACHE_SIZE).{..
2b380 09 69 66 20 28 63 74 6c 2e 70 61 67 65 29 20 7b 0a 09 09 09 6b 75 6e 6d 61 70 28 63 74 6c 2e 70 .if.(ctl.page).{....kunmap(ctl.p
2b3a0 61 67 65 29 3b 0a 09 09 09 53 65 74 50 61 67 65 55 70 74 6f 64 61 74 65 28 63 74 6c 2e 70 61 67 age);....SetPageUptodate(ctl.pag
2b3c0 65 29 3b 0a 09 09 09 75 6e 6c 6f 63 6b 5f 70 61 67 65 28 63 74 6c 2e 70 61 67 65 29 3b 0a 09 09 e);....unlock_page(ctl.page);...
2b3e0 09 70 75 74 5f 70 61 67 65 28 63 74 6c 2e 70 61 67 65 29 3b 0a 09 09 7d 0a 09 09 63 74 6c 2e 63 .put_page(ctl.page);...}...ctl.c
2b400 61 63 68 65 20 3d 20 4e 55 4c 4c 3b 0a 09 09 63 74 6c 2e 69 64 78 20 20 2d 3d 20 4e 43 50 5f 44 ache.=.NULL;...ctl.idx..-=.NCP_D
2b420 49 52 43 41 43 48 45 5f 53 49 5a 45 3b 0a 09 09 63 74 6c 2e 6f 66 73 20 20 2b 3d 20 31 3b 0a 09 IRCACHE_SIZE;...ctl.ofs..+=.1;..
2b440 09 63 74 6c 2e 70 61 67 65 20 20 3d 20 67 72 61 62 5f 63 61 63 68 65 5f 70 61 67 65 28 26 64 69 .ctl.page..=.grab_cache_page(&di
2b460 72 2d 3e 69 5f 64 61 74 61 2c 20 63 74 6c 2e 6f 66 73 29 3b 0a 09 09 69 66 20 28 63 74 6c 2e 70 r->i_data,.ctl.ofs);...if.(ctl.p
2b480 61 67 65 29 0a 09 09 09 63 74 6c 2e 63 61 63 68 65 20 3d 20 6b 6d 61 70 28 63 74 6c 2e 70 61 67 age)....ctl.cache.=.kmap(ctl.pag
2b4a0 65 29 3b 0a 09 7d 0a 09 69 66 20 28 63 74 6c 2e 63 61 63 68 65 29 20 7b 0a 09 09 69 66 20 28 64 e);..}..if.(ctl.cache).{...if.(d
2b4c0 5f 72 65 61 6c 6c 79 5f 69 73 5f 70 6f 73 69 74 69 76 65 28 6e 65 77 64 65 6e 74 29 29 20 7b 0a _really_is_positive(newdent)).{.
2b4e0 09 09 09 6e 65 77 64 65 6e 74 2d 3e 64 5f 66 73 64 61 74 61 20 3d 20 6e 65 77 64 65 6e 74 3b 0a ...newdent->d_fsdata.=.newdent;.
2b500 09 09 09 63 74 6c 2e 63 61 63 68 65 2d 3e 64 65 6e 74 72 79 5b 63 74 6c 2e 69 64 78 5d 20 3d 20 ...ctl.cache->dentry[ctl.idx].=.
2b520 6e 65 77 64 65 6e 74 3b 0a 09 09 09 69 6e 6f 20 3d 20 64 5f 69 6e 6f 64 65 28 6e 65 77 64 65 6e newdent;....ino.=.d_inode(newden
2b540 74 29 2d 3e 69 5f 69 6e 6f 3b 0a 09 09 09 6e 63 70 5f 6e 65 77 5f 64 65 6e 74 72 79 28 6e 65 77 t)->i_ino;....ncp_new_dentry(new
2b560 64 65 6e 74 29 3b 0a 09 09 7d 0a 20 09 09 76 61 6c 69 64 20 3d 20 31 3b 0a 09 7d 0a 09 64 70 75 dent);...}....valid.=.1;..}..dpu
2b580 74 28 6e 65 77 64 65 6e 74 29 3b 0a 65 6e 64 5f 61 64 76 61 6e 63 65 3a 0a 09 69 66 20 28 21 76 t(newdent);.end_advance:..if.(!v
2b5a0 61 6c 69 64 29 0a 09 09 63 74 6c 2e 76 61 6c 69 64 20 3d 20 30 3b 0a 09 69 66 20 28 21 63 74 6c alid)...ctl.valid.=.0;..if.(!ctl
2b5c0 2e 66 69 6c 6c 65 64 20 26 26 20 28 63 74 6c 2e 66 70 6f 73 20 3d 3d 20 63 74 78 2d 3e 70 6f 73 .filled.&&.(ctl.fpos.==.ctx->pos
2b5e0 29 29 20 7b 0a 09 09 69 66 20 28 21 69 6e 6f 29 0a 09 09 09 69 6e 6f 20 3d 20 69 75 6e 69 71 75 )).{...if.(!ino)....ino.=.iuniqu
2b600 65 28 64 69 72 2d 3e 69 5f 73 62 2c 20 32 29 3b 0a 09 09 63 74 6c 2e 66 69 6c 6c 65 64 20 3d 20 e(dir->i_sb,.2);...ctl.filled.=.
2b620 21 64 69 72 5f 65 6d 69 74 28 63 74 78 2c 20 71 6e 61 6d 65 2e 6e 61 6d 65 2c 20 71 6e 61 6d 65 !dir_emit(ctx,.qname.name,.qname
2b640 2e 6c 65 6e 2c 0a 09 09 09 09 20 20 20 20 20 69 6e 6f 2c 20 44 54 5f 55 4e 4b 4e 4f 57 4e 29 3b .len,..........ino,.DT_UNKNOWN);
2b660 0a 09 09 69 66 20 28 21 63 74 6c 2e 66 69 6c 6c 65 64 29 0a 09 09 09 63 74 78 2d 3e 70 6f 73 20 ...if.(!ctl.filled)....ctx->pos.
2b680 2b 3d 20 31 3b 0a 09 7d 0a 09 63 74 6c 2e 66 70 6f 73 20 2b 3d 20 31 3b 0a 09 63 74 6c 2e 69 64 +=.1;..}..ctl.fpos.+=.1;..ctl.id
2b6a0 78 20 20 2b 3d 20 31 3b 0a 09 2a 63 74 72 6c 20 3d 20 63 74 6c 3b 0a 09 72 65 74 75 72 6e 20 28 x..+=.1;..*ctrl.=.ctl;..return.(
2b6c0 63 74 6c 2e 76 61 6c 69 64 20 7c 7c 20 21 63 74 6c 2e 66 69 6c 6c 65 64 29 3b 0a 7d 0a 0a 73 74 ctl.valid.||.!ctl.filled);.}..st
2b6e0 61 74 69 63 20 76 6f 69 64 0a 6e 63 70 5f 72 65 61 64 5f 76 6f 6c 75 6d 65 5f 6c 69 73 74 28 73 atic.void.ncp_read_volume_list(s
2b700 74 72 75 63 74 20 66 69 6c 65 20 2a 66 69 6c 65 2c 20 73 74 72 75 63 74 20 64 69 72 5f 63 6f 6e truct.file.*file,.struct.dir_con
2b720 74 65 78 74 20 2a 63 74 78 2c 0a 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f 63 61 63 68 65 5f 63 text.*ctx,....struct.ncp_cache_c
2b740 6f 6e 74 72 6f 6c 20 2a 63 74 6c 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e ontrol.*ctl).{..struct.inode.*in
2b760 6f 64 65 20 3d 20 66 69 6c 65 5f 69 6e 6f 64 65 28 66 69 6c 65 29 3b 0a 09 73 74 72 75 63 74 20 ode.=.file_inode(file);..struct.
2b780 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 ncp_server.*server.=.NCP_SERVER(
2b7a0 69 6e 6f 64 65 29 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 76 6f 6c 75 6d 65 5f 69 6e 66 6f 20 inode);..struct.ncp_volume_info.
2b7c0 69 6e 66 6f 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 65 6e 74 info;..struct.ncp_entry_info.ent
2b7e0 72 79 3b 0a 09 69 6e 74 20 69 3b 0a 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 70 6f 73 3d 25 6c ry;..int.i;...ncp_dbg(1,."pos=%l
2b800 64 5c 6e 22 2c 20 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 63 74 78 2d 3e 70 6f 73 29 3b 0a d\n",.(unsigned.long)ctx->pos);.
2b820 0a 09 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 4e 43 50 5f 4e 55 4d 42 45 52 5f 4f 46 5f ..for.(i.=.0;.i.<.NCP_NUMBER_OF_
2b840 56 4f 4c 55 4d 45 53 3b 20 69 2b 2b 29 20 7b 0a 09 09 69 6e 74 20 69 6e 76 61 6c 5f 64 65 6e 74 VOLUMES;.i++).{...int.inval_dent
2b860 72 79 3b 0a 0a 09 09 69 66 20 28 6e 63 70 5f 67 65 74 5f 76 6f 6c 75 6d 65 5f 69 6e 66 6f 5f 77 ry;....if.(ncp_get_volume_info_w
2b880 69 74 68 5f 6e 75 6d 62 65 72 28 73 65 72 76 65 72 2c 20 69 2c 20 26 69 6e 66 6f 29 20 21 3d 20 ith_number(server,.i,.&info).!=.
2b8a0 30 29 0a 09 09 09 72 65 74 75 72 6e 3b 0a 09 09 69 66 20 28 21 73 74 72 6c 65 6e 28 69 6e 66 6f 0)....return;...if.(!strlen(info
2b8c0 2e 76 6f 6c 75 6d 65 5f 6e 61 6d 65 29 29 0a 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 0a 09 09 6e .volume_name))....continue;....n
2b8e0 63 70 5f 64 62 67 28 31 2c 20 22 66 6f 75 6e 64 20 76 6f 6c 3a 20 25 73 5c 6e 22 2c 20 69 6e 66 cp_dbg(1,."found.vol:.%s\n",.inf
2b900 6f 2e 76 6f 6c 75 6d 65 5f 6e 61 6d 65 29 3b 0a 0a 09 09 69 66 20 28 6e 63 70 5f 6c 6f 6f 6b 75 o.volume_name);....if.(ncp_looku
2b920 70 5f 76 6f 6c 75 6d 65 28 73 65 72 76 65 72 2c 20 69 6e 66 6f 2e 76 6f 6c 75 6d 65 5f 6e 61 6d p_volume(server,.info.volume_nam
2b940 65 2c 0a 09 09 09 09 09 26 65 6e 74 72 79 2e 69 29 29 20 7b 0a 09 09 09 6e 63 70 5f 64 62 67 28 e,......&entry.i)).{....ncp_dbg(
2b960 31 2c 20 22 63 6f 75 6c 64 20 6e 6f 74 20 6c 6f 6f 6b 75 70 20 76 6f 6c 20 25 73 5c 6e 22 2c 0a 1,."could.not.lookup.vol.%s\n",.
2b980 09 09 09 09 69 6e 66 6f 2e 76 6f 6c 75 6d 65 5f 6e 61 6d 65 29 3b 0a 09 09 09 63 6f 6e 74 69 6e ....info.volume_name);....contin
2b9a0 75 65 3b 0a 09 09 7d 0a 09 09 69 6e 76 61 6c 5f 64 65 6e 74 72 79 20 3d 20 6e 63 70 5f 75 70 64 ue;...}...inval_dentry.=.ncp_upd
2b9c0 61 74 65 5f 6b 6e 6f 77 6e 5f 6e 61 6d 65 73 70 61 63 65 28 73 65 72 76 65 72 2c 20 65 6e 74 72 ate_known_namespace(server,.entr
2b9e0 79 2e 69 2e 76 6f 6c 4e 75 6d 62 65 72 2c 20 4e 55 4c 4c 29 3b 0a 09 09 65 6e 74 72 79 2e 76 6f y.i.volNumber,.NULL);...entry.vo
2ba00 6c 75 6d 65 20 3d 20 65 6e 74 72 79 2e 69 2e 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 09 69 66 20 28 lume.=.entry.i.volNumber;...if.(
2ba20 21 6e 63 70 5f 66 69 6c 6c 5f 63 61 63 68 65 28 66 69 6c 65 2c 20 63 74 78 2c 20 63 74 6c 2c 20 !ncp_fill_cache(file,.ctx,.ctl,.
2ba40 26 65 6e 74 72 79 2c 20 69 6e 76 61 6c 5f 64 65 6e 74 72 79 29 29 0a 09 09 09 72 65 74 75 72 6e &entry,.inval_dentry))....return
2ba60 3b 0a 09 7d 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 0a 6e 63 70 5f 64 6f 5f 72 65 61 64 64 ;..}.}..static.void.ncp_do_readd
2ba80 69 72 28 73 74 72 75 63 74 20 66 69 6c 65 20 2a 66 69 6c 65 2c 20 73 74 72 75 63 74 20 64 69 72 ir(struct.file.*file,.struct.dir
2baa0 5f 63 6f 6e 74 65 78 74 20 2a 63 74 78 2c 0a 09 09 09 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f _context.*ctx,.......struct.ncp_
2bac0 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c 20 2a 63 74 6c 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e cache_control.*ctl).{..struct.in
2bae0 6f 64 65 20 2a 64 69 72 20 3d 20 66 69 6c 65 5f 69 6e 6f 64 65 28 66 69 6c 65 29 3b 0a 09 73 74 ode.*dir.=.file_inode(file);..st
2bb00 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 ruct.ncp_server.*server.=.NCP_SE
2bb20 52 56 45 52 28 64 69 72 29 3b 0a 09 73 74 72 75 63 74 20 6e 77 5f 73 65 61 72 63 68 5f 73 65 71 RVER(dir);..struct.nw_search_seq
2bb40 75 65 6e 63 65 20 73 65 71 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 5f 69 6e 66 uence.seq;..struct.ncp_entry_inf
2bb60 6f 20 65 6e 74 72 79 3b 0a 09 69 6e 74 20 65 72 72 3b 0a 09 76 6f 69 64 2a 20 62 75 66 3b 0a 09 o.entry;..int.err;..void*.buf;..
2bb80 69 6e 74 20 6d 6f 72 65 3b 0a 09 73 69 7a 65 5f 74 20 62 75 66 73 69 7a 65 3b 0a 0a 09 6e 63 70 int.more;..size_t.bufsize;...ncp
2bba0 5f 64 62 67 28 31 2c 20 22 25 70 44 32 2c 20 66 70 6f 73 3d 25 6c 64 5c 6e 22 2c 20 66 69 6c 65 _dbg(1,."%pD2,.fpos=%ld\n",.file
2bbc0 2c 20 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 63 74 78 2d 3e 70 6f 73 29 3b 0a 09 6e 63 70 ,.(unsigned.long)ctx->pos);..ncp
2bbe0 5f 76 64 62 67 28 22 69 6e 69 74 20 25 70 44 2c 20 76 6f 6c 6e 75 6d 3d 25 64 2c 20 64 69 72 65 _vdbg("init.%pD,.volnum=%d,.dire
2bc00 6e 74 3d 25 75 5c 6e 22 2c 0a 09 09 20 66 69 6c 65 2c 20 4e 43 50 5f 46 49 4e 46 4f 28 64 69 72 nt=%u\n",....file,.NCP_FINFO(dir
2bc20 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 2c 20 4e 43 50 5f 46 49 4e 46 4f 28 64 69 72 29 2d 3e 64 69 )->volNumber,.NCP_FINFO(dir)->di
2bc40 72 45 6e 74 4e 75 6d 29 3b 0a 0a 09 65 72 72 20 3d 20 6e 63 70 5f 69 6e 69 74 69 61 6c 69 7a 65 rEntNum);...err.=.ncp_initialize
2bc60 5f 73 65 61 72 63 68 28 73 65 72 76 65 72 2c 20 64 69 72 2c 20 26 73 65 71 29 3b 0a 09 69 66 20 _search(server,.dir,.&seq);..if.
2bc80 28 65 72 72 29 20 7b 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 69 6e 69 74 20 66 61 69 6c 65 (err).{...ncp_dbg(1,."init.faile
2bca0 64 2c 20 65 72 72 3d 25 64 5c 6e 22 2c 20 65 72 72 29 3b 0a 09 09 72 65 74 75 72 6e 3b 0a 09 7d d,.err=%d\n",.err);...return;..}
2bcc0 0a 09 2f 2a 20 57 65 20 4d 55 53 54 20 4e 4f 54 20 75 73 65 20 73 65 72 76 65 72 2d 3e 62 75 66 ../*.We.MUST.NOT.use.server->buf
2bce0 66 65 72 5f 73 69 7a 65 20 68 61 6e 64 73 68 61 6b 65 64 20 77 69 74 68 20 73 65 72 76 65 72 20 fer_size.handshaked.with.server.
2bd00 69 66 20 77 65 20 61 72 65 0a 09 20 20 20 75 73 69 6e 67 20 55 44 50 2c 20 61 73 20 66 6f 72 20 if.we.are.....using.UDP,.as.for.
2bd20 55 44 50 20 73 65 72 76 65 72 20 75 73 65 73 20 6d 61 78 2e 20 62 75 66 66 65 72 20 73 69 7a 65 UDP.server.uses.max..buffer.size
2bd40 20 64 65 74 65 72 6d 69 6e 65 64 20 62 79 0a 09 20 20 20 4d 54 55 2c 20 61 6e 64 20 66 6f 72 20 .determined.by.....MTU,.and.for.
2bd60 54 43 50 20 73 65 72 76 65 72 20 75 73 65 73 20 68 61 72 64 77 69 72 65 64 20 76 61 6c 75 65 20 TCP.server.uses.hardwired.value.
2bd80 36 35 4b 42 20 28 3d 3d 20 36 36 35 36 30 20 62 79 74 65 73 29 2e 20 0a 09 20 20 20 53 6f 20 77 65KB.(==.66560.bytes).......So.w
2bda0 65 20 75 73 65 20 31 32 38 4b 42 2c 20 6a 75 73 74 20 74 6f 20 62 65 20 73 75 72 65 2c 20 61 73 e.use.128KB,.just.to.be.sure,.as
2bdc0 20 74 68 65 72 65 20 69 73 20 6e 6f 20 77 61 79 20 68 6f 77 20 74 6f 20 6b 6e 6f 77 0a 09 20 20 .there.is.no.way.how.to.know....
2bde0 20 74 68 69 73 20 76 61 6c 75 65 20 69 6e 20 61 64 76 61 6e 63 65 2e 20 2a 2f 0a 09 62 75 66 73 .this.value.in.advance..*/..bufs
2be00 69 7a 65 20 3d 20 31 33 31 30 37 32 3b 0a 09 62 75 66 20 3d 20 76 6d 61 6c 6c 6f 63 28 62 75 66 ize.=.131072;..buf.=.vmalloc(buf
2be20 73 69 7a 65 29 3b 0a 09 69 66 20 28 21 62 75 66 29 0a 09 09 72 65 74 75 72 6e 3b 0a 09 64 6f 20 size);..if.(!buf)...return;..do.
2be40 7b 0a 09 09 69 6e 74 20 63 6e 74 3b 0a 09 09 63 68 61 72 2a 20 72 70 6c 3b 0a 09 09 73 69 7a 65 {...int.cnt;...char*.rpl;...size
2be60 5f 74 20 72 70 6c 73 3b 0a 0a 09 09 65 72 72 20 3d 20 6e 63 70 5f 73 65 61 72 63 68 5f 66 6f 72 _t.rpls;....err.=.ncp_search_for
2be80 5f 66 69 6c 65 73 65 74 28 73 65 72 76 65 72 2c 20 26 73 65 71 2c 20 26 6d 6f 72 65 2c 20 26 63 _fileset(server,.&seq,.&more,.&c
2bea0 6e 74 2c 20 62 75 66 2c 20 62 75 66 73 69 7a 65 2c 20 26 72 70 6c 2c 20 26 72 70 6c 73 29 3b 0a nt,.buf,.bufsize,.&rpl,.&rpls);.
2bec0 09 09 69 66 20 28 65 72 72 29 09 09 2f 2a 20 45 72 72 6f 72 20 2a 2f 0a 09 09 09 62 72 65 61 6b ..if.(err)../*.Error.*/....break
2bee0 3b 0a 09 09 69 66 20 28 21 63 6e 74 29 09 09 2f 2a 20 70 72 65 76 65 6e 74 20 65 6e 64 6c 65 73 ;...if.(!cnt)../*.prevent.endles
2bf00 73 20 6c 6f 6f 70 20 2a 2f 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 77 68 69 6c 65 20 28 63 6e 74 s.loop.*/....break;...while.(cnt
2bf20 2d 2d 29 20 7b 0a 09 09 09 73 69 7a 65 5f 74 20 6f 6e 65 72 70 6c 3b 0a 09 09 09 0a 09 09 09 69 --).{....size_t.onerpl;........i
2bf40 66 20 28 72 70 6c 73 20 3c 20 6f 66 66 73 65 74 6f 66 28 73 74 72 75 63 74 20 6e 77 5f 69 6e 66 f.(rpls.<.offsetof(struct.nw_inf
2bf60 6f 5f 73 74 72 75 63 74 2c 20 65 6e 74 72 79 4e 61 6d 65 29 29 0a 09 09 09 09 62 72 65 61 6b 3b o_struct,.entryName)).....break;
2bf80 09 2f 2a 20 73 68 6f 72 74 20 70 61 63 6b 65 74 20 2a 2f 0a 09 09 09 6e 63 70 5f 65 78 74 72 61 ./*.short.packet.*/....ncp_extra
2bfa0 63 74 5f 66 69 6c 65 5f 69 6e 66 6f 28 72 70 6c 2c 20 26 65 6e 74 72 79 2e 69 29 3b 0a 09 09 09 ct_file_info(rpl,.&entry.i);....
2bfc0 6f 6e 65 72 70 6c 20 3d 20 6f 66 66 73 65 74 6f 66 28 73 74 72 75 63 74 20 6e 77 5f 69 6e 66 6f onerpl.=.offsetof(struct.nw_info
2bfe0 5f 73 74 72 75 63 74 2c 20 65 6e 74 72 79 4e 61 6d 65 29 20 2b 20 65 6e 74 72 79 2e 69 2e 6e 61 _struct,.entryName).+.entry.i.na
2c000 6d 65 4c 65 6e 3b 0a 09 09 09 69 66 20 28 72 70 6c 73 20 3c 20 6f 6e 65 72 70 6c 29 0a 09 09 09 meLen;....if.(rpls.<.onerpl)....
2c020 09 62 72 65 61 6b 3b 09 2f 2a 20 73 68 6f 72 74 20 70 61 63 6b 65 74 20 2a 2f 0a 09 09 09 28 76 .break;./*.short.packet.*/....(v
2c040 6f 69 64 29 6e 63 70 5f 6f 62 74 61 69 6e 5f 6e 66 73 5f 69 6e 66 6f 28 73 65 72 76 65 72 2c 20 oid)ncp_obtain_nfs_info(server,.
2c060 26 65 6e 74 72 79 2e 69 29 3b 0a 09 09 09 72 70 6c 20 2b 3d 20 6f 6e 65 72 70 6c 3b 0a 09 09 09 &entry.i);....rpl.+=.onerpl;....
2c080 72 70 6c 73 20 2d 3d 20 6f 6e 65 72 70 6c 3b 0a 09 09 09 65 6e 74 72 79 2e 76 6f 6c 75 6d 65 20 rpls.-=.onerpl;....entry.volume.
2c0a0 3d 20 65 6e 74 72 79 2e 69 2e 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 09 09 69 66 20 28 21 6e 63 70 =.entry.i.volNumber;....if.(!ncp
2c0c0 5f 66 69 6c 6c 5f 63 61 63 68 65 28 66 69 6c 65 2c 20 63 74 78 2c 20 63 74 6c 2c 20 26 65 6e 74 _fill_cache(file,.ctx,.ctl,.&ent
2c0e0 72 79 2c 20 30 29 29 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 7d 0a 09 7d 20 77 68 69 6c 65 20 ry,.0)).....break;...}..}.while.
2c100 28 6d 6f 72 65 29 3b 0a 09 76 66 72 65 65 28 62 75 66 29 3b 0a 09 72 65 74 75 72 6e 3b 0a 7d 0a (more);..vfree(buf);..return;.}.
2c120 0a 69 6e 74 20 6e 63 70 5f 63 6f 6e 6e 5f 6c 6f 67 67 65 64 5f 69 6e 28 73 74 72 75 63 74 20 73 .int.ncp_conn_logged_in(struct.s
2c140 75 70 65 72 5f 62 6c 6f 63 6b 20 2a 73 62 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 uper_block.*sb).{..struct.ncp_se
2c160 72 76 65 72 2a 20 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 42 50 28 73 62 29 3b 0a 09 69 6e 74 rver*.server.=.NCP_SBP(sb);..int
2c180 20 72 65 73 75 6c 74 3b 0a 0a 09 69 66 20 28 6e 63 70 5f 73 69 6e 67 6c 65 5f 76 6f 6c 75 6d 65 .result;...if.(ncp_single_volume
2c1a0 28 73 65 72 76 65 72 29 29 20 7b 0a 09 09 69 6e 74 20 6c 65 6e 3b 0a 09 09 73 74 72 75 63 74 20 (server)).{...int.len;...struct.
2c1c0 64 65 6e 74 72 79 2a 20 64 65 6e 74 3b 0a 09 09 5f 5f 75 33 32 20 76 6f 6c 4e 75 6d 62 65 72 3b dentry*.dent;...__u32.volNumber;
2c1e0 0a 09 09 5f 5f 6c 65 33 32 20 64 69 72 45 6e 74 4e 75 6d 3b 0a 09 09 5f 5f 6c 65 33 32 20 44 6f ...__le32.dirEntNum;...__le32.Do
2c200 73 44 69 72 4e 75 6d 3b 0a 09 09 5f 5f 75 38 20 5f 5f 6e 61 6d 65 5b 4e 43 50 5f 4d 41 58 50 41 sDirNum;...__u8.__name[NCP_MAXPA
2c220 54 48 4c 45 4e 20 2b 20 31 5d 3b 0a 0a 09 09 6c 65 6e 20 3d 20 73 69 7a 65 6f 66 28 5f 5f 6e 61 THLEN.+.1];....len.=.sizeof(__na
2c240 6d 65 29 3b 0a 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 69 6f 32 76 6f 6c 28 73 65 72 76 65 me);...result.=.ncp_io2vol(serve
2c260 72 2c 20 5f 5f 6e 61 6d 65 2c 20 26 6c 65 6e 2c 20 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 r,.__name,.&len,.server->m.mount
2c280 65 64 5f 76 6f 6c 2c 0a 09 09 09 09 20 20 20 20 73 74 72 6c 65 6e 28 73 65 72 76 65 72 2d 3e 6d ed_vol,.........strlen(server->m
2c2a0 2e 6d 6f 75 6e 74 65 64 5f 76 6f 6c 29 2c 20 31 29 3b 0a 09 09 69 66 20 28 72 65 73 75 6c 74 29 .mounted_vol),.1);...if.(result)
2c2c0 0a 09 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 4e 4f 45 4e 54 ....goto.out;...result.=.-ENOENT
2c2e0 3b 0a 09 09 69 66 20 28 6e 63 70 5f 67 65 74 5f 76 6f 6c 75 6d 65 5f 72 6f 6f 74 28 73 65 72 76 ;...if.(ncp_get_volume_root(serv
2c300 65 72 2c 20 5f 5f 6e 61 6d 65 2c 20 26 76 6f 6c 4e 75 6d 62 65 72 2c 20 26 64 69 72 45 6e 74 4e er,.__name,.&volNumber,.&dirEntN
2c320 75 6d 2c 20 26 44 6f 73 44 69 72 4e 75 6d 29 29 20 7b 0a 09 09 09 6e 63 70 5f 76 64 62 67 28 22 um,.&DosDirNum)).{....ncp_vdbg("
2c340 25 73 20 6e 6f 74 20 66 6f 75 6e 64 5c 6e 22 2c 20 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 %s.not.found\n",.server->m.mount
2c360 65 64 5f 76 6f 6c 29 3b 0a 09 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 09 7d 0a 09 09 64 65 6e 74 ed_vol);....goto.out;...}...dent
2c380 20 3d 20 73 62 2d 3e 73 5f 72 6f 6f 74 3b 0a 09 09 69 66 20 28 64 65 6e 74 29 20 7b 0a 09 09 09 .=.sb->s_root;...if.(dent).{....
2c3a0 73 74 72 75 63 74 20 69 6e 6f 64 65 2a 20 69 6e 6f 20 3d 20 64 5f 69 6e 6f 64 65 28 64 65 6e 74 struct.inode*.ino.=.d_inode(dent
2c3c0 29 3b 0a 09 09 09 69 66 20 28 69 6e 6f 29 20 7b 0a 09 09 09 09 6e 63 70 5f 75 70 64 61 74 65 5f );....if.(ino).{.....ncp_update_
2c3e0 6b 6e 6f 77 6e 5f 6e 61 6d 65 73 70 61 63 65 28 73 65 72 76 65 72 2c 20 76 6f 6c 4e 75 6d 62 65 known_namespace(server,.volNumbe
2c400 72 2c 20 4e 55 4c 4c 29 3b 0a 09 09 09 09 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 29 2d 3e 76 6f r,.NULL);.....NCP_FINFO(ino)->vo
2c420 6c 4e 75 6d 62 65 72 20 3d 20 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 09 09 09 4e 43 50 5f 46 49 4e lNumber.=.volNumber;.....NCP_FIN
2c440 46 4f 28 69 6e 6f 29 2d 3e 64 69 72 45 6e 74 4e 75 6d 20 3d 20 64 69 72 45 6e 74 4e 75 6d 3b 0a FO(ino)->dirEntNum.=.dirEntNum;.
2c460 09 09 09 09 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 29 2d 3e 44 6f 73 44 69 72 4e 75 6d 20 3d 20 ....NCP_FINFO(ino)->DosDirNum.=.
2c480 44 6f 73 44 69 72 4e 75 6d 3b 0a 09 09 09 09 72 65 73 75 6c 74 20 3d 20 30 3b 0a 09 09 09 7d 20 DosDirNum;.....result.=.0;....}.
2c4a0 65 6c 73 65 20 7b 0a 09 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 64 5f 69 6e 6f 64 65 28 73 else.{.....ncp_dbg(1,."d_inode(s
2c4c0 62 2d 3e 73 5f 72 6f 6f 74 29 20 3d 3d 20 4e 55 4c 4c 21 5c 6e 22 29 3b 0a 09 09 09 7d 0a 09 09 b->s_root).==.NULL!\n");....}...
2c4e0 7d 20 65 6c 73 65 20 7b 0a 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 73 62 2d 3e 73 5f 72 6f }.else.{....ncp_dbg(1,."sb->s_ro
2c500 6f 74 20 3d 3d 20 4e 55 4c 4c 21 5c 6e 22 29 3b 0a 09 09 7d 0a 09 7d 20 65 6c 73 65 0a 09 09 72 ot.==.NULL!\n");...}..}.else...r
2c520 65 73 75 6c 74 20 3d 20 30 3b 0a 0a 6f 75 74 3a 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b esult.=.0;..out:..return.result;
2c540 0a 7d 0a 0a 73 74 61 74 69 63 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 6e 63 70 5f 6c 6f .}..static.struct.dentry.*ncp_lo
2c560 6f 6b 75 70 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 2c 20 73 74 72 75 63 74 20 64 okup(struct.inode.*dir,.struct.d
2c580 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 66 6c 61 67 entry.*dentry,.unsigned.int.flag
2c5a0 73 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 s).{..struct.ncp_server.*server.
2c5c0 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 64 69 72 29 3b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 =.NCP_SERVER(dir);..struct.inode
2c5e0 20 2a 69 6e 6f 64 65 20 3d 20 4e 55 4c 4c 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 .*inode.=.NULL;..struct.ncp_entr
2c600 79 5f 69 6e 66 6f 20 66 69 6e 66 6f 3b 0a 09 69 6e 74 20 65 72 72 6f 72 2c 20 72 65 73 2c 20 6c y_info.finfo;..int.error,.res,.l
2c620 65 6e 3b 0a 09 5f 5f 75 38 20 5f 5f 6e 61 6d 65 5b 4e 43 50 5f 4d 41 58 50 41 54 48 4c 45 4e 20 en;..__u8.__name[NCP_MAXPATHLEN.
2c640 2b 20 31 5d 3b 0a 0a 09 65 72 72 6f 72 20 3d 20 2d 45 49 4f 3b 0a 09 69 66 20 28 21 6e 63 70 5f +.1];...error.=.-EIO;..if.(!ncp_
2c660 63 6f 6e 6e 5f 76 61 6c 69 64 28 73 65 72 76 65 72 29 29 0a 09 09 67 6f 74 6f 20 66 69 6e 69 73 conn_valid(server))...goto.finis
2c680 68 65 64 3b 0a 0a 09 6e 63 70 5f 76 64 62 67 28 22 73 65 72 76 65 72 20 6c 6f 6f 6b 75 70 20 66 hed;...ncp_vdbg("server.lookup.f
2c6a0 6f 72 20 25 70 64 32 5c 6e 22 2c 20 64 65 6e 74 72 79 29 3b 0a 0a 09 6c 65 6e 20 3d 20 73 69 7a or.%pd2\n",.dentry);...len.=.siz
2c6c0 65 6f 66 28 5f 5f 6e 61 6d 65 29 3b 0a 09 69 66 20 28 6e 63 70 5f 69 73 5f 73 65 72 76 65 72 5f eof(__name);..if.(ncp_is_server_
2c6e0 72 6f 6f 74 28 64 69 72 29 29 20 7b 0a 09 09 72 65 73 20 3d 20 6e 63 70 5f 69 6f 32 76 6f 6c 28 root(dir)).{...res.=.ncp_io2vol(
2c700 73 65 72 76 65 72 2c 20 5f 5f 6e 61 6d 65 2c 20 26 6c 65 6e 2c 20 64 65 6e 74 72 79 2d 3e 64 5f server,.__name,.&len,.dentry->d_
2c720 6e 61 6d 65 2e 6e 61 6d 65 2c 0a 09 09 09 09 20 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6c name.name,......dentry->d_name.l
2c740 65 6e 2c 20 31 29 3b 0a 09 09 69 66 20 28 21 72 65 73 29 0a 09 09 09 72 65 73 20 3d 20 6e 63 70 en,.1);...if.(!res)....res.=.ncp
2c760 5f 6c 6f 6f 6b 75 70 5f 76 6f 6c 75 6d 65 28 73 65 72 76 65 72 2c 20 5f 5f 6e 61 6d 65 2c 20 26 _lookup_volume(server,.__name,.&
2c780 28 66 69 6e 66 6f 2e 69 29 29 3b 0a 09 09 69 66 20 28 21 72 65 73 29 0a 09 09 09 6e 63 70 5f 75 (finfo.i));...if.(!res)....ncp_u
2c7a0 70 64 61 74 65 5f 6b 6e 6f 77 6e 5f 6e 61 6d 65 73 70 61 63 65 28 73 65 72 76 65 72 2c 20 66 69 pdate_known_namespace(server,.fi
2c7c0 6e 66 6f 2e 69 2e 76 6f 6c 4e 75 6d 62 65 72 2c 20 4e 55 4c 4c 29 3b 0a 09 7d 20 65 6c 73 65 20 nfo.i.volNumber,.NULL);..}.else.
2c7e0 7b 0a 09 09 72 65 73 20 3d 20 6e 63 70 5f 69 6f 32 76 6f 6c 28 73 65 72 76 65 72 2c 20 5f 5f 6e {...res.=.ncp_io2vol(server,.__n
2c800 61 6d 65 2c 20 26 6c 65 6e 2c 20 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6e 61 6d 65 2c 0a ame,.&len,.dentry->d_name.name,.
2c820 09 09 09 09 20 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6c 65 6e 2c 20 21 6e 63 70 5f 70 72 .....dentry->d_name.len,.!ncp_pr
2c840 65 73 65 72 76 65 5f 63 61 73 65 28 64 69 72 29 29 3b 0a 09 09 69 66 20 28 21 72 65 73 29 0a 09 eserve_case(dir));...if.(!res)..
2c860 09 09 72 65 73 20 3d 20 6e 63 70 5f 6f 62 74 61 69 6e 5f 69 6e 66 6f 28 73 65 72 76 65 72 2c 20 ..res.=.ncp_obtain_info(server,.
2c880 64 69 72 2c 20 5f 5f 6e 61 6d 65 2c 20 26 28 66 69 6e 66 6f 2e 69 29 29 3b 0a 09 7d 0a 09 6e 63 dir,.__name,.&(finfo.i));..}..nc
2c8a0 70 5f 76 64 62 67 28 22 6c 6f 6f 6b 65 64 20 66 6f 72 20 25 70 64 32 2c 20 72 65 73 3d 25 64 5c p_vdbg("looked.for.%pd2,.res=%d\
2c8c0 6e 22 2c 20 64 65 6e 74 72 79 2c 20 72 65 73 29 3b 0a 09 2f 2a 0a 09 20 2a 20 49 66 20 77 65 20 n",.dentry,.res);../*...*.If.we.
2c8e0 64 69 64 6e 27 74 20 66 69 6e 64 20 61 6e 20 65 6e 74 72 79 2c 20 6d 61 6b 65 20 61 20 6e 65 67 didn't.find.an.entry,.make.a.neg
2c900 61 74 69 76 65 20 64 65 6e 74 72 79 2e 0a 09 20 2a 2f 0a 09 69 66 20 28 72 65 73 29 0a 09 09 67 ative.dentry....*/..if.(res)...g
2c920 6f 74 6f 20 61 64 64 5f 65 6e 74 72 79 3b 0a 0a 09 2f 2a 0a 09 20 2a 20 43 72 65 61 74 65 20 61 oto.add_entry;.../*...*.Create.a
2c940 6e 20 69 6e 6f 64 65 20 66 6f 72 20 74 68 65 20 65 6e 74 72 79 2e 0a 09 20 2a 2f 0a 09 66 69 6e n.inode.for.the.entry....*/..fin
2c960 66 6f 2e 6f 70 65 6e 65 64 20 3d 20 30 3b 0a 09 66 69 6e 66 6f 2e 69 6e 6f 20 3d 20 69 75 6e 69 fo.opened.=.0;..finfo.ino.=.iuni
2c980 71 75 65 28 64 69 72 2d 3e 69 5f 73 62 2c 20 32 29 3b 0a 09 66 69 6e 66 6f 2e 76 6f 6c 75 6d 65 que(dir->i_sb,.2);..finfo.volume
2c9a0 20 3d 20 66 69 6e 66 6f 2e 69 2e 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 65 72 72 6f 72 20 3d 20 2d .=.finfo.i.volNumber;..error.=.-
2c9c0 45 41 43 43 45 53 3b 0a 09 69 6e 6f 64 65 20 3d 20 6e 63 70 5f 69 67 65 74 28 64 69 72 2d 3e 69 EACCES;..inode.=.ncp_iget(dir->i
2c9e0 5f 73 62 2c 20 26 66 69 6e 66 6f 29 3b 0a 0a 09 69 66 20 28 69 6e 6f 64 65 29 20 7b 0a 09 09 6e _sb,.&finfo);...if.(inode).{...n
2ca00 63 70 5f 6e 65 77 5f 64 65 6e 74 72 79 28 64 65 6e 74 72 79 29 3b 0a 61 64 64 5f 65 6e 74 72 79 cp_new_dentry(dentry);.add_entry
2ca20 3a 0a 09 09 64 5f 61 64 64 28 64 65 6e 74 72 79 2c 20 69 6e 6f 64 65 29 3b 0a 09 09 65 72 72 6f :...d_add(dentry,.inode);...erro
2ca40 72 20 3d 20 30 3b 0a 09 7d 0a 0a 66 69 6e 69 73 68 65 64 3a 0a 09 6e 63 70 5f 76 64 62 67 28 22 r.=.0;..}..finished:..ncp_vdbg("
2ca60 72 65 73 75 6c 74 3d 25 64 5c 6e 22 2c 20 65 72 72 6f 72 29 3b 0a 09 72 65 74 75 72 6e 20 45 52 result=%d\n",.error);..return.ER
2ca80 52 5f 50 54 52 28 65 72 72 6f 72 29 3b 0a 7d 0a 0a 2f 2a 0a 20 2a 20 54 68 69 73 20 63 6f 64 65 R_PTR(error);.}../*..*.This.code
2caa0 20 69 73 20 63 6f 6d 6d 6f 6e 20 74 6f 20 63 72 65 61 74 65 2c 20 6d 6b 64 69 72 2c 20 61 6e 64 .is.common.to.create,.mkdir,.and
2cac0 20 6d 6b 6e 6f 64 2e 0a 20 2a 2f 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 69 6e 73 74 61 .mknod...*/.static.int.ncp_insta
2cae0 6e 74 69 61 74 65 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 2c 20 73 74 72 75 63 74 ntiate(struct.inode.*dir,.struct
2cb00 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 2c 0a 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f 65 .dentry.*dentry,....struct.ncp_e
2cb20 6e 74 72 79 5f 69 6e 66 6f 20 2a 66 69 6e 66 6f 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 ntry_info.*finfo).{..struct.inod
2cb40 65 20 2a 69 6e 6f 64 65 3b 0a 09 69 6e 74 20 65 72 72 6f 72 20 3d 20 2d 45 49 4e 56 41 4c 3b 0a e.*inode;..int.error.=.-EINVAL;.
2cb60 0a 09 66 69 6e 66 6f 2d 3e 69 6e 6f 20 3d 20 69 75 6e 69 71 75 65 28 64 69 72 2d 3e 69 5f 73 62 ..finfo->ino.=.iunique(dir->i_sb
2cb80 2c 20 32 29 3b 0a 09 69 6e 6f 64 65 20 3d 20 6e 63 70 5f 69 67 65 74 28 64 69 72 2d 3e 69 5f 73 ,.2);..inode.=.ncp_iget(dir->i_s
2cba0 62 2c 20 66 69 6e 66 6f 29 3b 0a 09 69 66 20 28 21 69 6e 6f 64 65 29 0a 09 09 67 6f 74 6f 20 6f b,.finfo);..if.(!inode)...goto.o
2cbc0 75 74 5f 63 6c 6f 73 65 3b 0a 09 64 5f 69 6e 73 74 61 6e 74 69 61 74 65 28 64 65 6e 74 72 79 2c ut_close;..d_instantiate(dentry,
2cbe0 69 6e 6f 64 65 29 3b 0a 09 65 72 72 6f 72 20 3d 20 30 3b 0a 6f 75 74 3a 0a 09 72 65 74 75 72 6e inode);..error.=.0;.out:..return
2cc00 20 65 72 72 6f 72 3b 0a 0a 6f 75 74 5f 63 6c 6f 73 65 3a 0a 09 6e 63 70 5f 76 64 62 67 28 22 25 .error;..out_close:..ncp_vdbg("%
2cc20 70 64 32 20 66 61 69 6c 65 64 2c 20 63 6c 6f 73 69 6e 67 20 66 69 6c 65 5c 6e 22 2c 20 64 65 6e pd2.failed,.closing.file\n",.den
2cc40 74 72 79 29 3b 0a 09 6e 63 70 5f 63 6c 6f 73 65 5f 66 69 6c 65 28 4e 43 50 5f 53 45 52 56 45 52 try);..ncp_close_file(NCP_SERVER
2cc60 28 64 69 72 29 2c 20 66 69 6e 66 6f 2d 3e 66 69 6c 65 5f 68 61 6e 64 6c 65 29 3b 0a 09 67 6f 74 (dir),.finfo->file_handle);..got
2cc80 6f 20 6f 75 74 3b 0a 7d 0a 0a 69 6e 74 20 6e 63 70 5f 63 72 65 61 74 65 5f 6e 65 77 28 73 74 72 o.out;.}..int.ncp_create_new(str
2cca0 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 uct.inode.*dir,.struct.dentry.*d
2ccc0 65 6e 74 72 79 2c 20 75 6d 6f 64 65 5f 74 20 6d 6f 64 65 2c 0a 09 09 20 20 20 64 65 76 5f 74 20 entry,.umode_t.mode,......dev_t.
2cce0 72 64 65 76 2c 20 5f 5f 6c 65 33 32 20 61 74 74 72 69 62 75 74 65 73 29 0a 7b 0a 09 73 74 72 75 rdev,.__le32.attributes).{..stru
2cd00 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 52 56 ct.ncp_server.*server.=.NCP_SERV
2cd20 45 52 28 64 69 72 29 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 ER(dir);..struct.ncp_entry_info.
2cd40 66 69 6e 66 6f 3b 0a 09 69 6e 74 20 65 72 72 6f 72 2c 20 72 65 73 75 6c 74 2c 20 6c 65 6e 3b 0a finfo;..int.error,.result,.len;.
2cd60 09 69 6e 74 20 6f 70 6d 6f 64 65 3b 0a 09 5f 5f 75 38 20 5f 5f 6e 61 6d 65 5b 4e 43 50 5f 4d 41 .int.opmode;..__u8.__name[NCP_MA
2cd80 58 50 41 54 48 4c 45 4e 20 2b 20 31 5d 3b 0a 09 0a 09 6e 63 70 5f 76 64 62 67 28 22 63 72 65 61 XPATHLEN.+.1];....ncp_vdbg("crea
2cda0 74 69 6e 67 20 25 70 64 32 2c 20 6d 6f 64 65 3d 25 68 78 5c 6e 22 2c 20 64 65 6e 74 72 79 2c 20 ting.%pd2,.mode=%hx\n",.dentry,.
2cdc0 6d 6f 64 65 29 3b 0a 0a 09 6e 63 70 5f 61 67 65 5f 64 65 6e 74 72 79 28 73 65 72 76 65 72 2c 20 mode);...ncp_age_dentry(server,.
2cde0 64 65 6e 74 72 79 29 3b 0a 09 6c 65 6e 20 3d 20 73 69 7a 65 6f 66 28 5f 5f 6e 61 6d 65 29 3b 0a dentry);..len.=.sizeof(__name);.
2ce00 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 69 6f 32 76 6f 6c 28 73 65 72 76 65 72 2c 20 5f 5f 6e 61 .error.=.ncp_io2vol(server,.__na
2ce20 6d 65 2c 20 26 6c 65 6e 2c 20 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6e 61 6d 65 2c 0a 09 me,.&len,.dentry->d_name.name,..
2ce40 09 09 20 20 20 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6c 65 6e 2c 20 21 6e 63 70 5f 70 72 .....dentry->d_name.len,.!ncp_pr
2ce60 65 73 65 72 76 65 5f 63 61 73 65 28 64 69 72 29 29 3b 0a 09 69 66 20 28 65 72 72 6f 72 29 0a 09 eserve_case(dir));..if.(error)..
2ce80 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 65 72 72 6f 72 20 3d 20 2d 45 41 43 43 45 53 3b 0a 09 0a .goto.out;...error.=.-EACCES;...
2cea0 09 69 66 20 28 53 5f 49 53 52 45 47 28 6d 6f 64 65 29 20 26 26 20 0a 09 20 20 20 20 28 73 65 72 .if.(S_ISREG(mode).&&.......(ser
2cec0 76 65 72 2d 3e 6d 2e 66 6c 61 67 73 20 26 20 4e 43 50 5f 4d 4f 55 4e 54 5f 45 58 54 52 41 53 29 ver->m.flags.&.NCP_MOUNT_EXTRAS)
2cee0 20 26 26 20 0a 09 20 20 20 20 28 6d 6f 64 65 20 26 20 53 5f 49 58 55 47 4f 29 29 0a 09 09 61 74 .&&.......(mode.&.S_IXUGO))...at
2cf00 74 72 69 62 75 74 65 73 20 7c 3d 20 61 53 59 53 54 45 4d 20 7c 20 61 53 48 41 52 45 44 3b 0a 09 tributes.|=.aSYSTEM.|.aSHARED;..
2cf20 0a 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 6f 70 65 6e 5f 63 72 65 61 74 65 5f 66 69 6c 65 5f ..result.=.ncp_open_create_file_
2cf40 6f 72 5f 73 75 62 64 69 72 28 73 65 72 76 65 72 2c 20 64 69 72 2c 20 5f 5f 6e 61 6d 65 2c 0a 09 or_subdir(server,.dir,.__name,..
2cf60 09 09 09 4f 43 5f 4d 4f 44 45 5f 43 52 45 41 54 45 20 7c 20 4f 43 5f 4d 4f 44 45 5f 4f 50 45 4e ...OC_MODE_CREATE.|.OC_MODE_OPEN
2cf80 20 7c 20 4f 43 5f 4d 4f 44 45 5f 52 45 50 4c 41 43 45 2c 0a 09 09 09 09 61 74 74 72 69 62 75 74 .|.OC_MODE_REPLACE,.....attribut
2cfa0 65 73 2c 20 41 52 5f 52 45 41 44 20 7c 20 41 52 5f 57 52 49 54 45 2c 20 26 66 69 6e 66 6f 29 3b es,.AR_READ.|.AR_WRITE,.&finfo);
2cfc0 0a 09 6f 70 6d 6f 64 65 20 3d 20 4f 5f 52 44 57 52 3b 0a 09 69 66 20 28 72 65 73 75 6c 74 29 20 ..opmode.=.O_RDWR;..if.(result).
2cfe0 7b 0a 09 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 6f 70 65 6e 5f 63 72 65 61 74 65 5f 66 69 6c {...result.=.ncp_open_create_fil
2d000 65 5f 6f 72 5f 73 75 62 64 69 72 28 73 65 72 76 65 72 2c 20 64 69 72 2c 20 5f 5f 6e 61 6d 65 2c e_or_subdir(server,.dir,.__name,
2d020 0a 09 09 09 09 4f 43 5f 4d 4f 44 45 5f 43 52 45 41 54 45 20 7c 20 4f 43 5f 4d 4f 44 45 5f 4f 50 .....OC_MODE_CREATE.|.OC_MODE_OP
2d040 45 4e 20 7c 20 4f 43 5f 4d 4f 44 45 5f 52 45 50 4c 41 43 45 2c 0a 09 09 09 09 61 74 74 72 69 62 EN.|.OC_MODE_REPLACE,.....attrib
2d060 75 74 65 73 2c 20 41 52 5f 57 52 49 54 45 2c 20 26 66 69 6e 66 6f 29 3b 0a 09 09 69 66 20 28 72 utes,.AR_WRITE,.&finfo);...if.(r
2d080 65 73 75 6c 74 29 20 7b 0a 09 09 09 69 66 20 28 72 65 73 75 6c 74 20 3d 3d 20 30 78 38 37 29 0a esult).{....if.(result.==.0x87).
2d0a0 09 09 09 09 65 72 72 6f 72 20 3d 20 2d 45 4e 41 4d 45 54 4f 4f 4c 4f 4e 47 3b 0a 09 09 09 65 6c ....error.=.-ENAMETOOLONG;....el
2d0c0 73 65 20 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 0a 09 09 09 09 65 72 72 6f 72 20 3d 20 72 se.if.(result.<.0).....error.=.r
2d0e0 65 73 75 6c 74 3b 0a 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 25 70 64 32 20 66 61 69 6c 65 esult;....ncp_dbg(1,."%pd2.faile
2d100 64 5c 6e 22 2c 20 64 65 6e 74 72 79 29 3b 0a 09 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 09 7d 0a d\n",.dentry);....goto.out;...}.
2d120 09 09 6f 70 6d 6f 64 65 20 3d 20 4f 5f 57 52 4f 4e 4c 59 3b 0a 09 7d 0a 09 66 69 6e 66 6f 2e 61 ..opmode.=.O_WRONLY;..}..finfo.a
2d140 63 63 65 73 73 20 3d 20 6f 70 6d 6f 64 65 3b 0a 09 69 66 20 28 6e 63 70 5f 69 73 5f 6e 66 73 5f ccess.=.opmode;..if.(ncp_is_nfs_
2d160 65 78 74 72 61 73 28 73 65 72 76 65 72 2c 20 66 69 6e 66 6f 2e 76 6f 6c 75 6d 65 29 29 20 7b 0a extras(server,.finfo.volume)).{.
2d180 09 09 66 69 6e 66 6f 2e 69 2e 6e 66 73 2e 6d 6f 64 65 20 3d 20 6d 6f 64 65 3b 0a 09 09 66 69 6e ..finfo.i.nfs.mode.=.mode;...fin
2d1a0 66 6f 2e 69 2e 6e 66 73 2e 72 64 65 76 20 3d 20 6e 65 77 5f 65 6e 63 6f 64 65 5f 64 65 76 28 72 fo.i.nfs.rdev.=.new_encode_dev(r
2d1c0 64 65 76 29 3b 0a 09 09 69 66 20 28 6e 63 70 5f 6d 6f 64 69 66 79 5f 6e 66 73 5f 69 6e 66 6f 28 dev);...if.(ncp_modify_nfs_info(
2d1e0 73 65 72 76 65 72 2c 20 66 69 6e 66 6f 2e 76 6f 6c 75 6d 65 2c 0a 09 09 09 09 09 66 69 6e 66 6f server,.finfo.volume,......finfo
2d200 2e 69 2e 64 69 72 45 6e 74 4e 75 6d 2c 0a 09 09 09 09 09 6d 6f 64 65 2c 20 6e 65 77 5f 65 6e 63 .i.dirEntNum,......mode,.new_enc
2d220 6f 64 65 5f 64 65 76 28 72 64 65 76 29 29 20 21 3d 20 30 29 0a 09 09 09 67 6f 74 6f 20 6f 75 74 ode_dev(rdev)).!=.0)....goto.out
2d240 3b 0a 09 7d 0a 0a 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 69 6e 73 74 61 6e 74 69 61 74 65 28 64 ;..}...error.=.ncp_instantiate(d
2d260 69 72 2c 20 64 65 6e 74 72 79 2c 20 26 66 69 6e 66 6f 29 3b 0a 6f 75 74 3a 0a 09 72 65 74 75 72 ir,.dentry,.&finfo);.out:..retur
2d280 6e 20 65 72 72 6f 72 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 63 72 65 61 74 n.error;.}..static.int.ncp_creat
2d2a0 65 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 e(struct.inode.*dir,.struct.dent
2d2c0 72 79 20 2a 64 65 6e 74 72 79 2c 20 75 6d 6f 64 65 5f 74 20 6d 6f 64 65 2c 0a 09 09 62 6f 6f 6c ry.*dentry,.umode_t.mode,...bool
2d2e0 20 65 78 63 6c 29 0a 7b 0a 09 72 65 74 75 72 6e 20 6e 63 70 5f 63 72 65 61 74 65 5f 6e 65 77 28 .excl).{..return.ncp_create_new(
2d300 64 69 72 2c 20 64 65 6e 74 72 79 2c 20 6d 6f 64 65 2c 20 30 2c 20 30 29 3b 0a 7d 0a 0a 73 74 61 dir,.dentry,.mode,.0,.0);.}..sta
2d320 74 69 63 20 69 6e 74 20 6e 63 70 5f 6d 6b 64 69 72 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a tic.int.ncp_mkdir(struct.inode.*
2d340 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 2c 20 75 6d 6f 64 dir,.struct.dentry.*dentry,.umod
2d360 65 5f 74 20 6d 6f 64 65 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 5f 69 6e e_t.mode).{..struct.ncp_entry_in
2d380 66 6f 20 66 69 6e 66 6f 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 fo.finfo;..struct.ncp_server.*se
2d3a0 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 64 69 72 29 3b 0a 09 69 6e 74 20 65 72 72 rver.=.NCP_SERVER(dir);..int.err
2d3c0 6f 72 2c 20 6c 65 6e 3b 0a 09 5f 5f 75 38 20 5f 5f 6e 61 6d 65 5b 4e 43 50 5f 4d 41 58 50 41 54 or,.len;..__u8.__name[NCP_MAXPAT
2d3e0 48 4c 45 4e 20 2b 20 31 5d 3b 0a 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 6d 61 6b 69 6e 67 20 HLEN.+.1];...ncp_dbg(1,."making.
2d400 25 70 64 32 5c 6e 22 2c 20 64 65 6e 74 72 79 29 3b 0a 0a 09 6e 63 70 5f 61 67 65 5f 64 65 6e 74 %pd2\n",.dentry);...ncp_age_dent
2d420 72 79 28 73 65 72 76 65 72 2c 20 64 65 6e 74 72 79 29 3b 0a 09 6c 65 6e 20 3d 20 73 69 7a 65 6f ry(server,.dentry);..len.=.sizeo
2d440 66 28 5f 5f 6e 61 6d 65 29 3b 0a 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 69 6f 32 76 6f 6c 28 73 f(__name);..error.=.ncp_io2vol(s
2d460 65 72 76 65 72 2c 20 5f 5f 6e 61 6d 65 2c 20 26 6c 65 6e 2c 20 64 65 6e 74 72 79 2d 3e 64 5f 6e erver,.__name,.&len,.dentry->d_n
2d480 61 6d 65 2e 6e 61 6d 65 2c 0a 09 09 09 20 20 20 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6c ame.name,.......dentry->d_name.l
2d4a0 65 6e 2c 20 21 6e 63 70 5f 70 72 65 73 65 72 76 65 5f 63 61 73 65 28 64 69 72 29 29 3b 0a 09 69 en,.!ncp_preserve_case(dir));..i
2d4c0 66 20 28 65 72 72 6f 72 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 65 72 72 6f 72 20 3d 20 f.(error)...goto.out;...error.=.
2d4e0 6e 63 70 5f 6f 70 65 6e 5f 63 72 65 61 74 65 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 73 ncp_open_create_file_or_subdir(s
2d500 65 72 76 65 72 2c 20 64 69 72 2c 20 5f 5f 6e 61 6d 65 2c 0a 09 09 09 09 09 20 20 20 4f 43 5f 4d erver,.dir,.__name,.........OC_M
2d520 4f 44 45 5f 43 52 45 41 54 45 2c 20 61 44 49 52 2c 0a 09 09 09 09 09 20 20 20 63 70 75 5f 74 6f ODE_CREATE,.aDIR,.........cpu_to
2d540 5f 6c 65 31 36 28 30 78 66 66 66 66 29 2c 0a 09 09 09 09 09 20 20 20 26 66 69 6e 66 6f 29 3b 0a _le16(0xffff),.........&finfo);.
2d560 09 69 66 20 28 65 72 72 6f 72 20 3d 3d 20 30 29 20 7b 0a 09 09 69 66 20 28 6e 63 70 5f 69 73 5f .if.(error.==.0).{...if.(ncp_is_
2d580 6e 66 73 5f 65 78 74 72 61 73 28 73 65 72 76 65 72 2c 20 66 69 6e 66 6f 2e 76 6f 6c 75 6d 65 29 nfs_extras(server,.finfo.volume)
2d5a0 29 20 7b 0a 09 09 09 6d 6f 64 65 20 7c 3d 20 53 5f 49 46 44 49 52 3b 0a 09 09 09 66 69 6e 66 6f ).{....mode.|=.S_IFDIR;....finfo
2d5c0 2e 69 2e 6e 66 73 2e 6d 6f 64 65 20 3d 20 6d 6f 64 65 3b 0a 09 09 09 69 66 20 28 6e 63 70 5f 6d .i.nfs.mode.=.mode;....if.(ncp_m
2d5e0 6f 64 69 66 79 5f 6e 66 73 5f 69 6e 66 6f 28 73 65 72 76 65 72 2c 0a 09 09 09 09 09 09 66 69 6e odify_nfs_info(server,.......fin
2d600 66 6f 2e 76 6f 6c 75 6d 65 2c 0a 09 09 09 09 09 09 66 69 6e 66 6f 2e 69 2e 64 69 72 45 6e 74 4e fo.volume,.......finfo.i.dirEntN
2d620 75 6d 2c 0a 09 09 09 09 09 09 6d 6f 64 65 2c 20 30 29 20 21 3d 20 30 29 0a 09 09 09 09 67 6f 74 um,.......mode,.0).!=.0).....got
2d640 6f 20 6f 75 74 3b 0a 09 09 7d 0a 09 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 69 6e 73 74 61 6e 74 o.out;...}...error.=.ncp_instant
2d660 69 61 74 65 28 64 69 72 2c 20 64 65 6e 74 72 79 2c 20 26 66 69 6e 66 6f 29 3b 0a 09 7d 20 65 6c iate(dir,.dentry,.&finfo);..}.el
2d680 73 65 20 69 66 20 28 65 72 72 6f 72 20 3e 20 30 29 20 7b 0a 09 09 65 72 72 6f 72 20 3d 20 2d 45 se.if.(error.>.0).{...error.=.-E
2d6a0 41 43 43 45 53 3b 0a 09 7d 0a 6f 75 74 3a 0a 09 72 65 74 75 72 6e 20 65 72 72 6f 72 3b 0a 7d 0a ACCES;..}.out:..return.error;.}.
2d6c0 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 72 6d 64 69 72 28 73 74 72 75 63 74 20 69 6e 6f .static.int.ncp_rmdir(struct.ino
2d6e0 64 65 20 2a 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 29 0a de.*dir,.struct.dentry.*dentry).
2d700 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 65 72 76 65 72 20 3d 20 4e {..struct.ncp_server.*server.=.N
2d720 43 50 5f 53 45 52 56 45 52 28 64 69 72 29 3b 0a 09 69 6e 74 20 65 72 72 6f 72 2c 20 72 65 73 75 CP_SERVER(dir);..int.error,.resu
2d740 6c 74 2c 20 6c 65 6e 3b 0a 09 5f 5f 75 38 20 5f 5f 6e 61 6d 65 5b 4e 43 50 5f 4d 41 58 50 41 54 lt,.len;..__u8.__name[NCP_MAXPAT
2d760 48 4c 45 4e 20 2b 20 31 5d 3b 0a 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 72 65 6d 6f 76 69 6e HLEN.+.1];...ncp_dbg(1,."removin
2d780 67 20 25 70 64 32 5c 6e 22 2c 20 64 65 6e 74 72 79 29 3b 0a 0a 09 6c 65 6e 20 3d 20 73 69 7a 65 g.%pd2\n",.dentry);...len.=.size
2d7a0 6f 66 28 5f 5f 6e 61 6d 65 29 3b 0a 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 69 6f 32 76 6f 6c 28 of(__name);..error.=.ncp_io2vol(
2d7c0 73 65 72 76 65 72 2c 20 5f 5f 6e 61 6d 65 2c 20 26 6c 65 6e 2c 20 64 65 6e 74 72 79 2d 3e 64 5f server,.__name,.&len,.dentry->d_
2d7e0 6e 61 6d 65 2e 6e 61 6d 65 2c 0a 09 09 09 20 20 20 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e name.name,.......dentry->d_name.
2d800 6c 65 6e 2c 20 21 6e 63 70 5f 70 72 65 73 65 72 76 65 5f 63 61 73 65 28 64 69 72 29 29 3b 0a 09 len,.!ncp_preserve_case(dir));..
2d820 69 66 20 28 65 72 72 6f 72 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 72 65 73 75 6c 74 20 if.(error)...goto.out;...result.
2d840 3d 20 6e 63 70 5f 64 65 6c 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 73 65 72 76 65 72 2c =.ncp_del_file_or_subdir(server,
2d860 20 64 69 72 2c 20 5f 5f 6e 61 6d 65 29 3b 0a 09 73 77 69 74 63 68 20 28 72 65 73 75 6c 74 29 20 .dir,.__name);..switch.(result).
2d880 7b 0a 09 09 63 61 73 65 20 30 78 30 30 3a 0a 09 09 09 65 72 72 6f 72 20 3d 20 30 3b 0a 09 09 09 {...case.0x00:....error.=.0;....
2d8a0 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 78 38 35 3a 09 2f 2a 20 75 6e 61 75 74 68 6f 72 69 break;...case.0x85:./*.unauthori
2d8c0 7a 65 64 20 74 6f 20 64 65 6c 65 74 65 20 66 69 6c 65 20 2a 2f 0a 09 09 63 61 73 65 20 30 78 38 zed.to.delete.file.*/...case.0x8
2d8e0 41 3a 09 2f 2a 20 75 6e 61 75 74 68 6f 72 69 7a 65 64 20 74 6f 20 64 65 6c 65 74 65 20 66 69 6c A:./*.unauthorized.to.delete.fil
2d900 65 20 2a 2f 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d 45 41 43 43 45 53 3b 0a 09 09 09 62 72 65 61 e.*/....error.=.-EACCES;....brea
2d920 6b 3b 0a 09 09 63 61 73 65 20 30 78 38 46 3a 0a 09 09 63 61 73 65 20 30 78 39 30 3a 09 2f 2a 20 k;...case.0x8F:...case.0x90:./*.
2d940 72 65 61 64 20 6f 6e 6c 79 20 2a 2f 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d 45 50 45 52 4d 3b 0a read.only.*/....error.=.-EPERM;.
2d960 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 78 39 46 3a 09 2f 2a 20 69 6e 20 75 73 65 ...break;...case.0x9F:./*.in.use
2d980 20 62 79 20 61 6e 6f 74 68 65 72 20 63 6c 69 65 6e 74 20 2a 2f 0a 09 09 09 65 72 72 6f 72 20 3d .by.another.client.*/....error.=
2d9a0 20 2d 45 42 55 53 59 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 78 41 30 3a 09 .-EBUSY;....break;...case.0xA0:.
2d9c0 2f 2a 20 64 69 72 65 63 74 6f 72 79 20 6e 6f 74 20 65 6d 70 74 79 20 2a 2f 0a 09 09 09 65 72 72 /*.directory.not.empty.*/....err
2d9e0 6f 72 20 3d 20 2d 45 4e 4f 54 45 4d 50 54 59 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 or.=.-ENOTEMPTY;....break;...cas
2da00 65 20 30 78 46 46 3a 09 2f 2a 20 73 6f 6d 65 6f 6e 65 20 64 65 6c 65 74 65 64 20 66 69 6c 65 20 e.0xFF:./*.someone.deleted.file.
2da20 2a 2f 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d 45 4e 4f 45 4e 54 3b 0a 09 09 09 62 72 65 61 6b 3b */....error.=.-ENOENT;....break;
2da40 0a 09 09 64 65 66 61 75 6c 74 3a 0a 09 09 09 65 72 72 6f 72 20 3d 20 72 65 73 75 6c 74 20 3c 20 ...default:....error.=.result.<.
2da60 30 20 3f 20 72 65 73 75 6c 74 20 3a 20 2d 45 41 43 43 45 53 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 0.?.result.:.-EACCES;....break;.
2da80 20 20 20 20 20 20 20 09 7d 0a 6f 75 74 3a 0a 09 72 65 74 75 72 6e 20 65 72 72 6f 72 3b 0a 7d 0a ........}.out:..return.error;.}.
2daa0 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 75 6e 6c 69 6e 6b 28 73 74 72 75 63 74 20 69 6e .static.int.ncp_unlink(struct.in
2dac0 6f 64 65 20 2a 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 29 ode.*dir,.struct.dentry.*dentry)
2dae0 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 20 3d 20 64 5f 69 6e 6f 64 .{..struct.inode.*inode.=.d_inod
2db00 65 28 64 65 6e 74 72 79 29 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 2a 73 e(dentry);..struct.ncp_server.*s
2db20 65 72 76 65 72 3b 0a 09 69 6e 74 20 65 72 72 6f 72 3b 0a 0a 09 73 65 72 76 65 72 20 3d 20 4e 43 erver;..int.error;...server.=.NC
2db40 50 5f 53 45 52 56 45 52 28 64 69 72 29 3b 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 75 6e 6c 69 P_SERVER(dir);..ncp_dbg(1,."unli
2db60 6e 6b 69 6e 67 20 25 70 64 32 5c 6e 22 2c 20 64 65 6e 74 72 79 29 3b 0a 09 0a 09 2f 2a 0a 09 20 nking.%pd2\n",.dentry);..../*...
2db80 2a 20 43 68 65 63 6b 20 77 68 65 74 68 65 72 20 74 6f 20 63 6c 6f 73 65 20 74 68 65 20 66 69 6c *.Check.whether.to.close.the.fil
2dba0 65 20 2e 2e 2e 0a 09 20 2a 2f 0a 09 69 66 20 28 69 6e 6f 64 65 29 20 7b 0a 09 09 6e 63 70 5f 76 e.......*/..if.(inode).{...ncp_v
2dbc0 64 62 67 28 22 63 6c 6f 73 69 6e 67 20 66 69 6c 65 5c 6e 22 29 3b 0a 09 09 6e 63 70 5f 6d 61 6b dbg("closing.file\n");...ncp_mak
2dbe0 65 5f 63 6c 6f 73 65 64 28 69 6e 6f 64 65 29 3b 0a 09 7d 0a 0a 09 65 72 72 6f 72 20 3d 20 6e 63 e_closed(inode);..}...error.=.nc
2dc00 70 5f 64 65 6c 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 32 28 73 65 72 76 65 72 2c 20 64 65 p_del_file_or_subdir2(server,.de
2dc20 6e 74 72 79 29 3b 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 53 54 52 4f 4e ntry);.#ifdef.CONFIG_NCPFS_STRON
2dc40 47 0a 09 2f 2a 20 39 43 20 69 73 20 49 6e 76 61 6c 69 64 20 70 61 74 68 2e 2e 20 49 74 20 73 68 G../*.9C.is.Invalid.path...It.sh
2dc60 6f 75 6c 64 20 62 65 20 38 46 2c 20 39 30 20 2d 20 72 65 61 64 20 6f 6e 6c 79 2c 20 62 75 74 0a ould.be.8F,.90.-.read.only,.but.
2dc80 09 20 20 20 69 74 20 69 73 20 6e 6f 74 20 3a 2d 28 20 2a 2f 0a 09 69 66 20 28 28 65 72 72 6f 72 ....it.is.not.:-(.*/..if.((error
2dca0 20 3d 3d 20 30 78 39 43 20 7c 7c 20 65 72 72 6f 72 20 3d 3d 20 30 78 39 30 29 20 26 26 20 73 65 .==.0x9C.||.error.==.0x90).&&.se
2dcc0 72 76 65 72 2d 3e 6d 2e 66 6c 61 67 73 20 26 20 4e 43 50 5f 4d 4f 55 4e 54 5f 53 54 52 4f 4e 47 rver->m.flags.&.NCP_MOUNT_STRONG
2dce0 29 20 7b 20 2f 2a 20 52 2f 4f 20 2a 2f 0a 09 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 66 6f 72 63 ).{./*.R/O.*/...error.=.ncp_forc
2dd00 65 5f 75 6e 6c 69 6e 6b 28 64 69 72 2c 20 64 65 6e 74 72 79 29 3b 0a 09 7d 0a 23 65 6e 64 69 66 e_unlink(dir,.dentry);..}.#endif
2dd20 0a 09 73 77 69 74 63 68 20 28 65 72 72 6f 72 29 20 7b 0a 09 09 63 61 73 65 20 30 78 30 30 3a 0a ..switch.(error).{...case.0x00:.
2dd40 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 72 65 6d 6f 76 65 64 20 25 70 64 32 5c 6e 22 2c 20 ...ncp_dbg(1,."removed.%pd2\n",.
2dd60 64 65 6e 74 72 79 29 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 78 38 35 3a 0a dentry);....break;...case.0x85:.
2dd80 09 09 63 61 73 65 20 30 78 38 41 3a 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d 45 41 43 43 45 53 3b ..case.0x8A:....error.=.-EACCES;
2dda0 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 78 38 44 3a 09 2f 2a 20 73 6f 6d 65 20 ....break;...case.0x8D:./*.some.
2ddc0 66 69 6c 65 73 20 69 6e 20 75 73 65 20 2a 2f 0a 09 09 63 61 73 65 20 30 78 38 45 3a 09 2f 2a 20 files.in.use.*/...case.0x8E:./*.
2dde0 61 6c 6c 20 66 69 6c 65 73 20 69 6e 20 75 73 65 20 2a 2f 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d all.files.in.use.*/....error.=.-
2de00 45 42 55 53 59 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 78 38 46 3a 09 2f 2a EBUSY;....break;...case.0x8F:./*
2de20 20 73 6f 6d 65 20 72 65 61 64 20 6f 6e 6c 79 20 2a 2f 0a 09 09 63 61 73 65 20 30 78 39 30 3a 09 .some.read.only.*/...case.0x90:.
2de40 2f 2a 20 61 6c 6c 20 72 65 61 64 20 6f 6e 6c 79 20 2a 2f 0a 09 09 63 61 73 65 20 30 78 39 43 3a /*.all.read.only.*/...case.0x9C:
2de60 09 2f 2a 20 21 21 21 20 72 65 74 75 72 6e 65 64 20 77 68 65 6e 20 69 6e 2d 75 73 65 20 6f 72 20 ./*.!!!.returned.when.in-use.or.
2de80 72 65 61 64 2d 6f 6e 6c 79 20 62 79 20 4e 57 34 20 2a 2f 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d read-only.by.NW4.*/....error.=.-
2dea0 45 50 45 52 4d 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 78 46 46 3a 0a 09 09 EPERM;....break;...case.0xFF:...
2dec0 09 65 72 72 6f 72 20 3d 20 2d 45 4e 4f 45 4e 54 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 64 65 .error.=.-ENOENT;....break;...de
2dee0 66 61 75 6c 74 3a 0a 09 09 09 65 72 72 6f 72 20 3d 20 65 72 72 6f 72 20 3c 20 30 20 3f 20 65 72 fault:....error.=.error.<.0.?.er
2df00 72 6f 72 20 3a 20 2d 45 41 43 43 45 53 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 7d 0a 09 72 65 74 ror.:.-EACCES;....break;..}..ret
2df20 75 72 6e 20 65 72 72 6f 72 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 72 65 6e urn.error;.}..static.int.ncp_ren
2df40 61 6d 65 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 6f 6c 64 5f 64 69 72 2c 20 73 74 72 75 63 ame(struct.inode.*old_dir,.struc
2df60 74 20 64 65 6e 74 72 79 20 2a 6f 6c 64 5f 64 65 6e 74 72 79 2c 0a 09 09 20 20 20 20 20 20 73 74 t.dentry.*old_dentry,.........st
2df80 72 75 63 74 20 69 6e 6f 64 65 20 2a 6e 65 77 5f 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 ruct.inode.*new_dir,.struct.dent
2dfa0 72 79 20 2a 6e 65 77 5f 64 65 6e 74 72 79 2c 0a 09 09 20 20 20 20 20 20 75 6e 73 69 67 6e 65 64 ry.*new_dentry,.........unsigned
2dfc0 20 69 6e 74 20 66 6c 61 67 73 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 .int.flags).{..struct.ncp_server
2dfe0 20 2a 73 65 72 76 65 72 20 3d 20 4e 43 50 5f 53 45 52 56 45 52 28 6f 6c 64 5f 64 69 72 29 3b 0a .*server.=.NCP_SERVER(old_dir);.
2e000 09 69 6e 74 20 65 72 72 6f 72 3b 0a 09 69 6e 74 20 6f 6c 64 5f 6c 65 6e 2c 20 6e 65 77 5f 6c 65 .int.error;..int.old_len,.new_le
2e020 6e 3b 0a 09 5f 5f 75 38 20 5f 5f 6f 6c 64 5f 6e 61 6d 65 5b 4e 43 50 5f 4d 41 58 50 41 54 48 4c n;..__u8.__old_name[NCP_MAXPATHL
2e040 45 4e 20 2b 20 31 5d 2c 20 5f 5f 6e 65 77 5f 6e 61 6d 65 5b 4e 43 50 5f 4d 41 58 50 41 54 48 4c EN.+.1],.__new_name[NCP_MAXPATHL
2e060 45 4e 20 2b 20 31 5d 3b 0a 0a 09 69 66 20 28 66 6c 61 67 73 29 0a 09 09 72 65 74 75 72 6e 20 2d EN.+.1];...if.(flags)...return.-
2e080 45 49 4e 56 41 4c 3b 0a 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 25 70 64 32 20 74 6f 20 25 70 EINVAL;...ncp_dbg(1,."%pd2.to.%p
2e0a0 64 32 5c 6e 22 2c 20 6f 6c 64 5f 64 65 6e 74 72 79 2c 20 6e 65 77 5f 64 65 6e 74 72 79 29 3b 0a d2\n",.old_dentry,.new_dentry);.
2e0c0 0a 09 6e 63 70 5f 61 67 65 5f 64 65 6e 74 72 79 28 73 65 72 76 65 72 2c 20 6f 6c 64 5f 64 65 6e ..ncp_age_dentry(server,.old_den
2e0e0 74 72 79 29 3b 0a 09 6e 63 70 5f 61 67 65 5f 64 65 6e 74 72 79 28 73 65 72 76 65 72 2c 20 6e 65 try);..ncp_age_dentry(server,.ne
2e100 77 5f 64 65 6e 74 72 79 29 3b 0a 0a 09 6f 6c 64 5f 6c 65 6e 20 3d 20 73 69 7a 65 6f 66 28 5f 5f w_dentry);...old_len.=.sizeof(__
2e120 6f 6c 64 5f 6e 61 6d 65 29 3b 0a 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 69 6f 32 76 6f 6c 28 73 old_name);..error.=.ncp_io2vol(s
2e140 65 72 76 65 72 2c 20 5f 5f 6f 6c 64 5f 6e 61 6d 65 2c 20 26 6f 6c 64 5f 6c 65 6e 2c 0a 09 09 09 erver,.__old_name,.&old_len,....
2e160 20 20 20 6f 6c 64 5f 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6e 61 6d 65 2c 20 6f 6c 64 5f ...old_dentry->d_name.name,.old_
2e180 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6c 65 6e 2c 0a 09 09 09 20 20 20 21 6e 63 70 5f 70 dentry->d_name.len,.......!ncp_p
2e1a0 72 65 73 65 72 76 65 5f 63 61 73 65 28 6f 6c 64 5f 64 69 72 29 29 3b 0a 09 69 66 20 28 65 72 72 reserve_case(old_dir));..if.(err
2e1c0 6f 72 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 6e 65 77 5f 6c 65 6e 20 3d 20 73 69 7a 65 or)...goto.out;...new_len.=.size
2e1e0 6f 66 28 5f 5f 6e 65 77 5f 6e 61 6d 65 29 3b 0a 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 69 6f 32 of(__new_name);..error.=.ncp_io2
2e200 76 6f 6c 28 73 65 72 76 65 72 2c 20 5f 5f 6e 65 77 5f 6e 61 6d 65 2c 20 26 6e 65 77 5f 6c 65 6e vol(server,.__new_name,.&new_len
2e220 2c 0a 09 09 09 20 20 20 6e 65 77 5f 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6e 61 6d 65 2c ,.......new_dentry->d_name.name,
2e240 20 6e 65 77 5f 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6c 65 6e 2c 0a 09 09 09 20 20 20 21 .new_dentry->d_name.len,.......!
2e260 6e 63 70 5f 70 72 65 73 65 72 76 65 5f 63 61 73 65 28 6e 65 77 5f 64 69 72 29 29 3b 0a 09 69 66 ncp_preserve_case(new_dir));..if
2e280 20 28 65 72 72 6f 72 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 65 72 72 6f 72 20 3d 20 6e .(error)...goto.out;...error.=.n
2e2a0 63 70 5f 72 65 6e 5f 6f 72 5f 6d 6f 76 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 73 65 72 cp_ren_or_mov_file_or_subdir(ser
2e2c0 76 65 72 2c 20 6f 6c 64 5f 64 69 72 2c 20 5f 5f 6f 6c 64 5f 6e 61 6d 65 2c 0a 09 09 09 09 09 09 ver,.old_dir,.__old_name,.......
2e2e0 20 20 20 20 20 20 6e 65 77 5f 64 69 72 2c 20 5f 5f 6e 65 77 5f 6e 61 6d 65 29 3b 0a 23 69 66 64 ......new_dir,.__new_name);.#ifd
2e300 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 53 54 52 4f 4e 47 0a 09 69 66 20 28 28 65 72 72 ef.CONFIG_NCPFS_STRONG..if.((err
2e320 6f 72 20 3d 3d 20 30 78 39 30 20 7c 7c 20 65 72 72 6f 72 20 3d 3d 20 30 78 38 42 20 7c 7c 20 65 or.==.0x90.||.error.==.0x8B.||.e
2e340 72 72 6f 72 20 3d 3d 20 2d 45 41 43 43 45 53 29 20 26 26 0a 09 09 09 73 65 72 76 65 72 2d 3e 6d rror.==.-EACCES).&&....server->m
2e360 2e 66 6c 61 67 73 20 26 20 4e 43 50 5f 4d 4f 55 4e 54 5f 53 54 52 4f 4e 47 29 20 7b 09 2f 2a 20 .flags.&.NCP_MOUNT_STRONG).{./*.
2e380 52 4f 20 2a 2f 0a 09 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 66 6f 72 63 65 5f 72 65 6e 61 6d 65 RO.*/...error.=.ncp_force_rename
2e3a0 28 6f 6c 64 5f 64 69 72 2c 20 6f 6c 64 5f 64 65 6e 74 72 79 2c 20 5f 5f 6f 6c 64 5f 6e 61 6d 65 (old_dir,.old_dentry,.__old_name
2e3c0 2c 0a 09 09 09 09 09 20 6e 65 77 5f 64 69 72 2c 20 6e 65 77 5f 64 65 6e 74 72 79 2c 20 5f 5f 6e ,.......new_dir,.new_dentry,.__n
2e3e0 65 77 5f 6e 61 6d 65 29 3b 0a 09 7d 0a 23 65 6e 64 69 66 0a 09 73 77 69 74 63 68 20 28 65 72 72 ew_name);..}.#endif..switch.(err
2e400 6f 72 29 20 7b 0a 09 09 63 61 73 65 20 30 78 30 30 3a 0a 09 09 09 6e 63 70 5f 64 62 67 28 31 2c or).{...case.0x00:....ncp_dbg(1,
2e420 20 22 72 65 6e 61 6d 65 64 20 25 70 64 20 2d 3e 20 25 70 64 5c 6e 22 2c 0a 09 09 09 09 6f 6c 64 ."renamed.%pd.->.%pd\n",.....old
2e440 5f 64 65 6e 74 72 79 2c 20 6e 65 77 5f 64 65 6e 74 72 79 29 3b 0a 09 09 09 6e 63 70 5f 64 5f 70 _dentry,.new_dentry);....ncp_d_p
2e460 72 75 6e 65 28 6f 6c 64 5f 64 65 6e 74 72 79 29 3b 0a 09 09 09 6e 63 70 5f 64 5f 70 72 75 6e 65 rune(old_dentry);....ncp_d_prune
2e480 28 6e 65 77 5f 64 65 6e 74 72 79 29 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 (new_dentry);....break;...case.0
2e4a0 78 39 45 3a 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d 45 4e 41 4d 45 54 4f 4f 4c 4f 4e 47 3b 0a 09 x9E:....error.=.-ENAMETOOLONG;..
2e4c0 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 78 46 46 3a 0a 09 09 09 65 72 72 6f 72 20 3d ..break;...case.0xFF:....error.=
2e4e0 20 2d 45 4e 4f 45 4e 54 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 64 65 66 61 75 6c 74 3a 0a 09 .-ENOENT;....break;...default:..
2e500 09 09 65 72 72 6f 72 20 3d 20 65 72 72 6f 72 20 3c 20 30 20 3f 20 65 72 72 6f 72 20 3a 20 2d 45 ..error.=.error.<.0.?.error.:.-E
2e520 41 43 43 45 53 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 7d 0a 6f 75 74 3a 0a 09 72 65 74 75 72 6e ACCES;....break;..}.out:..return
2e540 20 65 72 72 6f 72 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 6d 6b 6e 6f 64 28 .error;.}..static.int.ncp_mknod(
2e560 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 20 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 struct.inode.*.dir,.struct.dentr
2e580 79 20 2a 64 65 6e 74 72 79 2c 0a 09 09 20 20 20 20 20 75 6d 6f 64 65 5f 74 20 6d 6f 64 65 2c 20 y.*dentry,........umode_t.mode,.
2e5a0 64 65 76 5f 74 20 72 64 65 76 29 0a 7b 0a 09 69 66 20 28 6e 63 70 5f 69 73 5f 6e 66 73 5f 65 78 dev_t.rdev).{..if.(ncp_is_nfs_ex
2e5c0 74 72 61 73 28 4e 43 50 5f 53 45 52 56 45 52 28 64 69 72 29 2c 20 4e 43 50 5f 46 49 4e 46 4f 28 tras(NCP_SERVER(dir),.NCP_FINFO(
2e5e0 64 69 72 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 29 29 20 7b 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c dir)->volNumber)).{...ncp_dbg(1,
2e600 20 22 6d 6f 64 65 20 3d 20 30 25 68 6f 5c 6e 22 2c 20 6d 6f 64 65 29 3b 0a 09 09 72 65 74 75 72 ."mode.=.0%ho\n",.mode);...retur
2e620 6e 20 6e 63 70 5f 63 72 65 61 74 65 5f 6e 65 77 28 64 69 72 2c 20 64 65 6e 74 72 79 2c 20 6d 6f n.ncp_create_new(dir,.dentry,.mo
2e640 64 65 2c 20 72 64 65 76 2c 20 30 29 3b 0a 09 7d 0a 09 72 65 74 75 72 6e 20 2d 45 50 45 52 4d 3b de,.rdev,.0);..}..return.-EPERM;
2e660 20 2f 2a 20 53 74 72 61 6e 67 65 2c 20 62 75 74 20 74 72 75 65 20 2a 2f 0a 7d 0a 0a 2f 2a 20 54 ./*.Strange,.but.true.*/.}../*.T
2e680 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 72 6f 75 74 69 6e 65 73 20 61 72 65 20 74 61 6b 65 6e 20 he.following.routines.are.taken.
2e6a0 64 69 72 65 63 74 6c 79 20 66 72 6f 6d 20 6d 73 64 6f 73 2d 66 73 20 2a 2f 0a 0a 2f 2a 20 4c 69 directly.from.msdos-fs.*/../*.Li
2e6c0 6e 65 61 72 20 64 61 79 20 6e 75 6d 62 65 72 73 20 6f 66 20 74 68 65 20 72 65 73 70 65 63 74 69 near.day.numbers.of.the.respecti
2e6e0 76 65 20 31 73 74 73 20 69 6e 20 6e 6f 6e 2d 6c 65 61 70 20 79 65 61 72 73 2e 20 2a 2f 0a 0a 73 ve.1sts.in.non-leap.years..*/..s
2e700 74 61 74 69 63 20 69 6e 74 20 64 61 79 5f 6e 5b 5d 20 3d 0a 7b 30 2c 20 33 31 2c 20 35 39 2c 20 tatic.int.day_n[].=.{0,.31,.59,.
2e720 39 30 2c 20 31 32 30 2c 20 31 35 31 2c 20 31 38 31 2c 20 32 31 32 2c 20 32 34 33 2c 20 32 37 33 90,.120,.151,.181,.212,.243,.273
2e740 2c 20 33 30 34 2c 20 33 33 34 2c 20 30 2c 20 30 2c 20 30 2c 20 30 7d 3b 0a 2f 2a 20 4a 61 6e 20 ,.304,.334,.0,.0,.0,.0};./*.Jan.
2e760 46 65 62 20 4d 61 72 20 41 70 72 20 4d 61 79 20 4a 75 6e 20 4a 75 6c 20 41 75 67 20 53 65 70 20 Feb.Mar.Apr.May.Jun.Jul.Aug.Sep.
2e780 4f 63 74 20 4e 6f 76 20 44 65 63 20 2a 2f 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 75 74 63 32 6c Oct.Nov.Dec.*/..static.int.utc2l
2e7a0 6f 63 61 6c 28 69 6e 74 20 74 69 6d 65 29 0a 7b 0a 09 72 65 74 75 72 6e 20 74 69 6d 65 20 2d 20 ocal(int.time).{..return.time.-.
2e7c0 73 79 73 5f 74 7a 2e 74 7a 5f 6d 69 6e 75 74 65 73 77 65 73 74 20 2a 20 36 30 3b 0a 7d 0a 0a 73 sys_tz.tz_minuteswest.*.60;.}..s
2e7e0 74 61 74 69 63 20 69 6e 74 20 6c 6f 63 61 6c 32 75 74 63 28 69 6e 74 20 74 69 6d 65 29 0a 7b 0a tatic.int.local2utc(int.time).{.
2e800 09 72 65 74 75 72 6e 20 74 69 6d 65 20 2b 20 73 79 73 5f 74 7a 2e 74 7a 5f 6d 69 6e 75 74 65 73 .return.time.+.sys_tz.tz_minutes
2e820 77 65 73 74 20 2a 20 36 30 3b 0a 7d 0a 0a 2f 2a 20 43 6f 6e 76 65 72 74 20 61 20 4d 53 2d 44 4f west.*.60;.}../*.Convert.a.MS-DO
2e840 53 20 74 69 6d 65 2f 64 61 74 65 20 70 61 69 72 20 74 6f 20 61 20 55 4e 49 58 20 64 61 74 65 20 S.time/date.pair.to.a.UNIX.date.
2e860 28 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 31 20 31 20 37 30 29 2e 20 2a 2f 0a 69 6e 74 0a 6e (seconds.since.1.1.70)..*/.int.n
2e880 63 70 5f 64 61 74 65 5f 64 6f 73 32 75 6e 69 78 28 5f 5f 6c 65 31 36 20 74 2c 20 5f 5f 6c 65 31 cp_date_dos2unix(__le16.t,.__le1
2e8a0 36 20 64 29 0a 7b 0a 09 75 6e 73 69 67 6e 65 64 20 73 68 6f 72 74 20 74 69 6d 65 20 3d 20 6c 65 6.d).{..unsigned.short.time.=.le
2e8c0 31 36 5f 74 6f 5f 63 70 75 28 74 29 2c 20 64 61 74 65 20 3d 20 6c 65 31 36 5f 74 6f 5f 63 70 75 16_to_cpu(t),.date.=.le16_to_cpu
2e8e0 28 64 29 3b 0a 09 69 6e 74 20 6d 6f 6e 74 68 2c 20 79 65 61 72 2c 20 73 65 63 73 3b 0a 0a 09 2f (d);..int.month,.year,.secs;.../
2e900 2a 20 66 69 72 73 74 20 73 75 62 74 72 61 63 74 20 61 6e 64 20 6d 61 73 6b 20 61 66 74 65 72 20 *.first.subtract.and.mask.after.
2e920 74 68 61 74 2e 2e 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 69 66 0a 09 20 20 20 64 61 74 65 20 3d that....Otherwise,.if.....date.=
2e940 3d 20 30 2c 20 62 61 64 20 74 68 69 6e 67 73 20 68 61 70 70 65 6e 20 2a 2f 0a 09 6d 6f 6e 74 68 =.0,.bad.things.happen.*/..month
2e960 20 3d 20 28 28 64 61 74 65 20 3e 3e 20 35 29 20 2d 20 31 29 20 26 20 31 35 3b 0a 09 79 65 61 72 .=.((date.>>.5).-.1).&.15;..year
2e980 20 3d 20 64 61 74 65 20 3e 3e 20 39 3b 0a 09 73 65 63 73 20 3d 20 28 74 69 6d 65 20 26 20 33 31 .=.date.>>.9;..secs.=.(time.&.31
2e9a0 29 20 2a 20 32 20 2b 20 36 30 20 2a 20 28 28 74 69 6d 65 20 3e 3e 20 35 29 20 26 20 36 33 29 20 ).*.2.+.60.*.((time.>>.5).&.63).
2e9c0 2b 20 28 74 69 6d 65 20 3e 3e 20 31 31 29 20 2a 20 33 36 30 30 20 2b 0a 09 09 38 36 34 30 30 20 +.(time.>>.11).*.3600.+...86400.
2e9e0 2a 20 28 28 64 61 74 65 20 26 20 33 31 29 20 2d 20 31 20 2b 20 64 61 79 5f 6e 5b 6d 6f 6e 74 68 *.((date.&.31).-.1.+.day_n[month
2ea00 5d 20 2b 20 28 79 65 61 72 20 2f 20 34 29 20 2b 20 0a 09 09 79 65 61 72 20 2a 20 33 36 35 20 2d ].+.(year./.4).+....year.*.365.-
2ea20 20 28 28 79 65 61 72 20 26 20 33 29 20 3d 3d 20 30 20 26 26 20 6d 6f 6e 74 68 20 3c 20 32 20 3f .((year.&.3).==.0.&&.month.<.2.?
2ea40 20 31 20 3a 20 30 29 20 2b 20 33 36 35 33 29 3b 0a 09 2f 2a 20 64 61 79 73 20 73 69 6e 63 65 20 .1.:.0).+.3653);../*.days.since.
2ea60 31 2e 31 2e 37 30 20 70 6c 75 73 20 38 30 27 73 20 6c 65 61 70 20 64 61 79 20 2a 2f 0a 09 72 65 1.1.70.plus.80's.leap.day.*/..re
2ea80 74 75 72 6e 20 6c 6f 63 61 6c 32 75 74 63 28 73 65 63 73 29 3b 0a 7d 0a 0a 0a 2f 2a 20 43 6f 6e turn.local2utc(secs);.}.../*.Con
2eaa0 76 65 72 74 20 6c 69 6e 65 61 72 20 55 4e 49 58 20 64 61 74 65 20 74 6f 20 61 20 4d 53 2d 44 4f vert.linear.UNIX.date.to.a.MS-DO
2eac0 53 20 74 69 6d 65 2f 64 61 74 65 20 70 61 69 72 2e 20 2a 2f 0a 76 6f 69 64 0a 6e 63 70 5f 64 61 S.time/date.pair..*/.void.ncp_da
2eae0 74 65 5f 75 6e 69 78 32 64 6f 73 28 69 6e 74 20 75 6e 69 78 5f 64 61 74 65 2c 20 5f 5f 6c 65 31 te_unix2dos(int.unix_date,.__le1
2eb00 36 20 2a 74 69 6d 65 2c 20 5f 5f 6c 65 31 36 20 2a 64 61 74 65 29 0a 7b 0a 09 69 6e 74 20 64 61 6.*time,.__le16.*date).{..int.da
2eb20 79 2c 20 79 65 61 72 2c 20 6e 6c 5f 64 61 79 2c 20 6d 6f 6e 74 68 3b 0a 0a 09 75 6e 69 78 5f 64 y,.year,.nl_day,.month;...unix_d
2eb40 61 74 65 20 3d 20 75 74 63 32 6c 6f 63 61 6c 28 75 6e 69 78 5f 64 61 74 65 29 3b 0a 09 2a 74 69 ate.=.utc2local(unix_date);..*ti
2eb60 6d 65 20 3d 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 0a 09 09 28 75 6e 69 78 5f 64 61 74 65 20 25 me.=.cpu_to_le16(...(unix_date.%
2eb80 20 36 30 29 20 2f 20 32 20 2b 20 28 28 28 75 6e 69 78 5f 64 61 74 65 20 2f 20 36 30 29 20 25 20 .60)./.2.+.(((unix_date./.60).%.
2eba0 36 30 29 20 3c 3c 20 35 29 20 2b 0a 09 09 28 28 28 75 6e 69 78 5f 64 61 74 65 20 2f 20 33 36 30 60).<<.5).+...(((unix_date./.360
2ebc0 30 29 20 25 20 32 34 29 20 3c 3c 20 31 31 29 29 3b 0a 09 64 61 79 20 3d 20 75 6e 69 78 5f 64 61 0).%.24).<<.11));..day.=.unix_da
2ebe0 74 65 20 2f 20 38 36 34 30 30 20 2d 20 33 36 35 32 3b 0a 09 79 65 61 72 20 3d 20 64 61 79 20 2f te./.86400.-.3652;..year.=.day./
2ec00 20 33 36 35 3b 0a 09 69 66 20 28 28 79 65 61 72 20 2b 20 33 29 20 2f 20 34 20 2b 20 33 36 35 20 .365;..if.((year.+.3)./.4.+.365.
2ec20 2a 20 79 65 61 72 20 3e 20 64 61 79 29 0a 09 09 79 65 61 72 2d 2d 3b 0a 09 64 61 79 20 2d 3d 20 *.year.>.day)...year--;..day.-=.
2ec40 28 79 65 61 72 20 2b 20 33 29 20 2f 20 34 20 2b 20 33 36 35 20 2a 20 79 65 61 72 3b 0a 09 69 66 (year.+.3)./.4.+.365.*.year;..if
2ec60 20 28 64 61 79 20 3d 3d 20 35 39 20 26 26 20 21 28 79 65 61 72 20 26 20 33 29 29 20 7b 0a 09 09 .(day.==.59.&&.!(year.&.3)).{...
2ec80 6e 6c 5f 64 61 79 20 3d 20 64 61 79 3b 0a 09 09 6d 6f 6e 74 68 20 3d 20 32 3b 0a 09 7d 20 65 6c nl_day.=.day;...month.=.2;..}.el
2eca0 73 65 20 7b 0a 09 09 6e 6c 5f 64 61 79 20 3d 20 28 79 65 61 72 20 26 20 33 29 20 7c 7c 20 64 61 se.{...nl_day.=.(year.&.3).||.da
2ecc0 79 20 3c 3d 20 35 39 20 3f 20 64 61 79 20 3a 20 64 61 79 20 2d 20 31 3b 0a 09 09 66 6f 72 20 28 y.<=.59.?.day.:.day.-.1;...for.(
2ece0 6d 6f 6e 74 68 20 3d 20 31 3b 20 6d 6f 6e 74 68 20 3c 20 31 32 3b 20 6d 6f 6e 74 68 2b 2b 29 0a month.=.1;.month.<.12;.month++).
2ed00 09 09 09 69 66 20 28 64 61 79 5f 6e 5b 6d 6f 6e 74 68 5d 20 3e 20 6e 6c 5f 64 61 79 29 0a 09 09 ...if.(day_n[month].>.nl_day)...
2ed20 09 09 62 72 65 61 6b 3b 0a 09 7d 0a 09 2a 64 61 74 65 20 3d 20 63 70 75 5f 74 6f 5f 6c 65 31 36 ..break;..}..*date.=.cpu_to_le16
2ed40 28 6e 6c 5f 64 61 79 20 2d 20 64 61 79 5f 6e 5b 6d 6f 6e 74 68 20 2d 20 31 5d 20 2b 20 31 20 2b (nl_day.-.day_n[month.-.1].+.1.+
2ed60 20 28 6d 6f 6e 74 68 20 3c 3c 20 35 29 20 2b 20 28 79 65 61 72 20 3c 3c 20 39 29 29 3b 0a 7d 0a .(month.<<.5).+.(year.<<.9));.}.
2ed80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2eda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2edc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ede0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ee00 6e 63 70 66 73 2f 4d 61 6b 65 66 69 6c 65 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ncpfs/Makefile..................
2ee20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ee40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ee60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 31 37 35 30 00 30 30 30 31 37 35 30 00 30 30 30 30 ....0000644.0001750.0001750.0000
2ee80 30 30 30 30 36 35 32 00 31 33 30 35 35 30 30 30 37 30 30 00 30 31 32 36 32 36 00 20 30 00 00 00 0000652.13055000700.012626..0...
2eea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2eec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2eee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ef00 00 75 73 74 61 72 20 20 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...kubax..................
2ef20 00 00 00 00 00 00 00 00 00 6b 75 62 61 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........kubax..................
2ef40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ef60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ef80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2efa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2efc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2efe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f000 23 0a 23 20 4d 61 6b 65 66 69 6c 65 20 66 6f 72 20 74 68 65 20 6c 69 6e 75 78 20 6e 63 70 20 66 #.#.Makefile.for.the.linux.ncp.f
2f020 69 6c 65 73 79 73 74 65 6d 20 72 6f 75 74 69 6e 65 73 2e 0a 23 0a 0a 6f 62 6a 2d 24 28 43 4f 4e ilesystem.routines..#..obj-$(CON
2f040 46 49 47 5f 4e 43 50 5f 46 53 29 20 2b 3d 20 6e 63 70 66 73 2e 6f 0a 0a 6e 63 70 66 73 2d 79 20 FIG_NCP_FS).+=.ncpfs.o..ncpfs-y.
2f060 20 20 20 20 20 3a 3d 20 64 69 72 2e 6f 20 66 69 6c 65 2e 6f 20 69 6e 6f 64 65 2e 6f 20 69 6f 63 .....:=.dir.o.file.o.inode.o.ioc
2f080 74 6c 2e 6f 20 6d 6d 61 70 2e 6f 20 6e 63 70 6c 69 62 5f 6b 65 72 6e 65 6c 2e 6f 20 73 6f 63 6b tl.o.mmap.o.ncplib_kernel.o.sock
2f0a0 2e 6f 20 5c 0a 09 09 6e 63 70 73 69 67 6e 5f 6b 65 72 6e 65 6c 2e 6f 20 67 65 74 6f 70 74 2e 6f .o.\...ncpsign_kernel.o.getopt.o
2f0c0 0a 0a 6e 63 70 66 73 2d 24 28 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 45 58 54 52 41 53 29 20 20 ..ncpfs-$(CONFIG_NCPFS_EXTRAS)..
2f0e0 20 2b 3d 20 73 79 6d 6c 69 6e 6b 2e 6f 0a 6e 63 70 66 73 2d 24 28 43 4f 4e 46 49 47 5f 4e 43 50 .+=.symlink.o.ncpfs-$(CONFIG_NCP
2f100 46 53 5f 4e 46 53 5f 4e 53 29 20 20 20 2b 3d 20 73 79 6d 6c 69 6e 6b 2e 6f 0a 0a 23 20 49 66 20 FS_NFS_NS)...+=.symlink.o..#.If.
2f120 79 6f 75 20 77 61 6e 74 20 64 65 62 75 67 67 69 6e 67 20 6f 75 74 70 75 74 2c 20 70 6c 65 61 73 you.want.debugging.output,.pleas
2f140 65 20 75 6e 63 6f 6d 6d 65 6e 74 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6c 69 6e 65 0a 23 e.uncomment.the.following.line.#
2f160 20 63 63 66 6c 61 67 73 2d 79 20 3a 3d 20 2d 44 44 45 42 55 47 5f 4e 43 50 3d 31 0a 0a 43 46 4c .ccflags-y.:=.-DDEBUG_NCP=1..CFL
2f180 41 47 53 5f 6e 63 70 6c 69 62 5f 6b 65 72 6e 65 6c 2e 6f 20 3a 3d 20 2d 66 69 6e 6c 69 6e 65 2d AGS_ncplib_kernel.o.:=.-finline-
2f1a0 66 75 6e 63 74 69 6f 6e 73 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 functions.......................
2f1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f4a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f4c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f4e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f5a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f5c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................