summarylogtreecommitdiffstats
path: root/ncpfs-module.tar.gz
blob: 47385af680ba247219941eeda81abade6c878875 (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 31 32 32 34 32 34 31 31 32 00 30 31 31 31 36 35 00 20 35 00 00 00 0000000.13122424112.011165..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 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
0280 30 30 31 30 31 33 35 00 31 33 31 32 32 32 31 33 31 35 30 00 30 31 32 31 35 36 00 20 30 00 00 00 0010135.13122213150.012156..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 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
0320 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
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 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...................
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 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
1680 30 30 35 35 33 33 32 00 31 33 31 32 32 32 31 33 31 35 30 00 30 31 32 31 34 31 00 20 30 00 00 00 0055332.13122213150.012141..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 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
1720 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
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 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.
1820 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
1840 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
1860 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
1880 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
18a0 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
18c0 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
18e0 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
1900 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
1920 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
1940 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
1960 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
1980 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
19a0 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
19c0 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>.#
19e0 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 63 68 65 64 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 include.<linux/sched.h>.#include
1a00 20 3c 6c 69 6e 75 78 2f 63 72 65 64 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 .<linux/cred.h>..#include.<linux
1a20 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 5f 66 73 2e 68 22 /uaccess.h>..#include."ncp_fs.h"
1a40 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 5f 6f 62 6a 65 63 ../*.maximum.limit.for.ncp_objec
1a60 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 5f 4f 42 4a 45 43 tname_ioctl.*/.#define.NCP_OBJEC
1a80 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 69 6d 75 6d 20 6c T_NAME_MAX_LEN.4096./*.maximum.l
1aa0 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 6f 63 74 6c 20 2a imit.for.ncp_privatedata_ioctl.*
1ac0 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 5f 4d 41 58 5f 4c /.#define.NCP_PRIVATE_DATA_MAX_L
1ae0 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 62 6c 65 20 70 61 EN.8192./*.maximum.negotiable.pa
1b00 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 41 43 4b 45 54 5f cket.size.*/.#define.NCP_PACKET_
1b20 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 63 20 69 6e 74 0a SIZE_INTERNAL.65536..static.int.
1b40 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 5f 73 65 72 76 65 ncp_get_fs_info(struct.ncp_serve
1b60 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 6e 6f 64 65 2c r.*.server,.struct.inode.*inode,
1b80 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 65 72 20 2a 61 72 ...struct.ncp_fs_info.__user.*ar
1ba0 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 6e 66 6f 3b 0a 0a g).{..struct.ncp_fs_info.info;..
1bc0 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 20 61 72 67 2c 20 .if.(copy_from_user(&info,.arg,.
1be0 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 54 3b sizeof(info)))...return.-EFAULT;
1c00 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 5f 47 45 54 5f 46 ...if.(info.version.!=.NCP_GET_F
1c20 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 67 28 31 2c 20 22 S_INFO_VERSION).{...ncp_dbg(1,."
1c40 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 20 69 6e 66 info.version.invalid:.%d\n",.inf
1c60 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 41 4c 3b 0a 09 7d o.version);...return.-EINVAL;..}
1c80 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 76 65 72 2d 3e 6d ../*.TODO:.info.addr.=.server->m
1ca0 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 66 6f 2e 6d 6f 75 .serv_addr;.*/..SET_UID(info.mou
1cc0 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 28 63 75 72 72 65 nted_uid,.from_kuid_munged(curre
1ce0 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 75 6e 74 65 64 5f nt_user_ns(),.server->m.mounted_
1d00 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 20 73 65 72 76 65 uid));..info.connection..=.serve
1d20 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 72 5f 73 69 7a 65 r->connection;..info.buffer_size
1d40 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 6e 66 6f 2e 76 6f .=.server->buffer_size;..info.vo
1d60 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 6f 64 65 29 2d 3e lume_number.=.NCP_FINFO(inode)->
1d80 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 5f 69 64 09 3d 20 volNumber;..info.directory_id.=.
1da0 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 0a 09 69 NCP_FINFO(inode)->DosDirNum;...i
1dc0 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 2c 20 73 69 7a 65 f.(copy_to_user(arg,.&info,.size
1de0 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 54 3b 0a 09 72 65 of(info)))...return.-EFAULT;..re
1e00 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 67 65 74 5f 66 73 turn.0;.}..static.int.ncp_get_fs
1e20 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 20 2a 20 73 65 72 _info_v2(struct.ncp_server.*.ser
1e40 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 09 09 20 20 20 73 ver,.struct.inode.*inode,......s
1e60 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 72 20 2a 20 61 72 truct.ncp_fs_info_v2.__user.*.ar
1e80 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 32 20 69 6e 66 6f g).{..struct.ncp_fs_info_v2.info
1ea0 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 6e 66 6f 32 2c 20 2;...if.(copy_from_user(&info2,.
1ec0 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 75 72 6e 20 2d 45 arg,.sizeof(info2)))...return.-E
1ee0 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 20 21 3d 20 4e 43 FAULT;...if.(info2.version.!=.NC
1f00 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 7b 0a 09 09 6e 63 P_GET_FS_INFO_VERSION_V2).{...nc
1f20 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 61 6c 69 64 3a 20 p_dbg(1,."info.version.invalid:.
1f40 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 65 74 75 72 6e 20 %d\n",.info2.version);...return.
1f60 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 5f 75 69 64 20 20 -EINVAL;..}..info2.mounted_uid..
1f80 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
1fa0 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);..
1fc0 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 65 72 2d 3e 63 6f info2.connection....=.server->co
1fe0 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 7a 65 20 20 20 3d nnection;..info2.buffer_size...=
2000 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 6f 32 2e 76 6f 6c .server->buffer_size;..info2.vol
2020 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 64 65 29 2d 3e 76 ume_number.=.NCP_FINFO(inode)->v
2040 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 5f 69 64 20 20 3d olNumber;..info2.directory_id..=
2060 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 69 .NCP_FINFO(inode)->DosDirNum;..i
2080 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 20 3d 20 69 6e 66 nfo2.dummy1.=.info2.dummy2.=.inf
20a0 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 74 6f 5f 75 73 65 o2.dummy3.=.0;...if.(copy_to_use
20c0 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 32 29 29 29 0a 09 r(arg,.&info2,.sizeof(info2)))..
20e0 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 3b 0a 7d 0a 0a 23 .return.-EFAULT;..return.0;.}..#
2100 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 20 63 6f 6d 70 61 ifdef.CONFIG_COMPAT.struct.compa
2120 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 73 33 32 09 09 61 t_ncp_objectname_ioctl.{..s32..a
2140 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 65 5f 6c 65 6e 3b uth_type;..u32..object_name_len;
2160 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 6d 65 3b 09 2f 2a ..compat_caddr_t.object_name;./*
2180 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 20 63 61 73 65 73 .a.userspace.data,.in.most.cases
21a0 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 6f 6d 70 61 74 5f .user.name.*/.};..struct.compat_
21c0 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 69 6f 6e 3b 0a 09 ncp_fs_info_v2.{..s32.version;..
21e0 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 65 63 74 69 6f 6e u32.mounted_uid;..u32.connection
2200 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 76 6f 6c 75 6d 65 ;..u32.buffer_size;...u32.volume
2220 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 3b 0a 0a 09 75 33 _number;..u32.directory_id;...u3
2240 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 32 20 64 75 6d 6d 2.dummy1;..u32.dummy2;..u32.dumm
2260 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 69 6f 63 74 6c 5f y3;.};..struct.compat_ncp_ioctl_
2280 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 75 33 32 20 73 69 request.{..u32.function;..u32.si
22a0 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 7d 3b 0a 0a 73 74 ze;..compat_caddr_t.data;.};..st
22c0 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 61 5f 69 6f 63 74 ruct.compat_ncp_privatedata_ioct
22e0 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 64 72 5f 74 09 64 l.{..u32..len;..compat_caddr_t.d
2300 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 7d 3b 0a 0a 23 64 ata;../*.~1000.for.NDS.*/.};..#d
2320 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 56 32 5f 33 32 09 efine.NCP_IOC_GET_FS_INFO_V2_32.
2340 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 74 5f 6e 63 70 5f _IOWR('n',.4,.struct.compat_ncp_
2360 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 43 5f 4e 43 50 52 fs_info_v2).#define.NCP_IOC_NCPR
2380 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 72 75 63 74 20 63 EQUEST_32.._IOR('n',.1,.struct.c
23a0 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 64 65 66 69 6e 65 ompat_ncp_ioctl_request).#define
23c0 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 5f 49 4f 57 52 28 .NCP_IOC_GETOBJECTNAME_32._IOWR(
23e0 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 6f 62 6a 65 63 74 'n',.9,.struct.compat_ncp_object
2400 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 43 5f 53 45 54 4f name_ioctl).#define.NCP_IOC_SETO
2420 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 73 74 72 75 63 74 BJECTNAME_32._IOR('n',.9,.struct
2440 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 29 0a 23 64 .compat_ncp_objectname_ioctl).#d
2460 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 54 41 5f 33 32 09 efine.NCP_IOC_GETPRIVATEDATA_32.
2480 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 61 74 5f 6e 63 70 _IOWR('n',.10,.struct.compat_ncp
24a0 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 65 20 4e 43 50 5f _privatedata_ioctl).#define.NCP_
24c0 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 28 27 6e 27 2c 20 IOC_SETPRIVATEDATA_32._IOR('n',.
24e0 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 61 74 65 64 61 74 10,.struct.compat_ncp_privatedat
2500 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 65 74 5f 63 6f 6d a_ioctl)..static.int.ncp_get_com
2520 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 73 65 72 76 65 72 pat_fs_info_v2(struct.ncp_server
2540 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,.
2560 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 69 6e 66 6f 5f 76 .....struct.compat_ncp_fs_info_v
2580 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 63 6f 6d 70 61 74 2.__user.*.arg).{..struct.compat
25a0 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 66 20 28 63 6f 70 _ncp_fs_info_v2.info2;...if.(cop
25c0 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 69 7a 65 6f 66 28 y_from_user(&info2,.arg,.sizeof(
25e0 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 0a 0a 09 69 66 20 info2)))...return.-EFAULT;...if.
2600 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 46 53 5f 49 4e 46 (info2.version.!=.NCP_GET_FS_INF
2620 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 31 2c 20 22 69 6e O_VERSION_V2).{...ncp_dbg(1,."in
2640 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 20 69 6e 66 6f 32 fo.version.invalid:.%d\n",.info2
2660 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 4c 3b 0a 09 7d 0a .version);...return.-EINVAL;..}.
2680 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 6d 5f 6b 75 69 64 .info2.mounted_uid...=.from_kuid
26a0 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 65 _munged(current_user_ns(),.serve
26c0 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 63 6f 6e 6e 65 63 r->m.mounted_uid);..info2.connec
26e0 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 6f 6e 3b 0a 09 69 tion....=.server->connection;..i
2700 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 72 2d 3e 62 75 66 nfo2.buffer_size...=.server->buf
2720 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 6d 62 65 72 20 3d fer_size;..info2.volume_number.=
2740 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 3b 0a 09 69 .NCP_FINFO(inode)->volNumber;..i
2760 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 49 4e 46 4f 28 69 nfo2.directory_id..=.NCP_FINFO(i
2780 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 75 6d 6d 79 31 20 node)->DosDirNum;..info2.dummy1.
27a0 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 6d 79 33 20 3d 20 =.info2.dummy2.=.info2.dummy3.=.
27c0 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 20 26 69 6e 66 6f 0;...if.(copy_to_user(arg,.&info
27e0 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 6e 20 2d 45 46 41 2,.sizeof(info2)))...return.-EFA
2800 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 23 64 65 66 69 6e ULT;..return.0;.}.#endif..#defin
2820 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 49 4f 57 28 27 6e e.NCP_IOC_GETMOUNTUID16.._IOW('n
2840 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 5f 47 45 54 4d 4f ',.2,.u16).#define.NCP_IOC_GETMO
2860 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 29 0a 23 64 65 66 UNTUID32.._IOW('n',.2,.u32).#def
2880 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 09 5f 49 4f 57 28 ine.NCP_IOC_GETMOUNTUID64.._IOW(
28a0 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 47 5f 4e 43 50 46 'n',.2,.u64)..#ifdef.CONFIG_NCPF
28c0 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 74 20 74 68 65 20 S_NLS./*.Here.we.are.select.the.
28e0 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 20 66 6f 72 20 4e iocharset.and.the.codepage.for.N
2900 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 65 63 20 66 6f 72 LS...*.Thanks.Petr.Vandrovec.for
2920 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 73 74 61 74 69 63 .idea.and.many.hints...*/.static
2940 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 63 74 20 6e 63 70 .int.ncp_set_charsets(struct.ncp
2960 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 70 5f 6e 6c 73 5f _server*.server,.struct.ncp_nls_
2980 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 63 74 20 6e 63 70 ioctl.__user.*arg).{..struct.ncp
29a0 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 6c 73 5f 74 61 62 _nls_ioctl.user;..struct.nls_tab
29c0 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 74 61 62 6c 65 20 le.*codepage;..struct.nls_table.
29e0 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 62 6c 65 20 2a 6f *iocharset;..struct.nls_table.*o
2a00 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 65 20 2a 6f 6c 64 ldset_io;..struct.nls_table.*old
2a20 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 72 3b 0a 0a 09 69 set_cp;..int.utf8;..int.err;...i
2a40 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 2c 20 73 69 f.(copy_from_user(&user,.arg,.si
2a60 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 55 4c 54 3b 0a 0a zeof(user)))...return.-EFAULT;..
2a80 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 64 65 70 61 67 65 .codepage.=.NULL;..user.codepage
2aa0 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 66 20 28 21 75 73 [NCP_IOCSNAME_LEN].=.0;..if.(!us
2ac0 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 75 73 65 72 2e 63 er.codepage[0].||.!strcmp(user.c
2ae0 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 65 70 61 67 65 20 odepage,."default"))...codepage.
2b00 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 65 20 7b 0a 09 09 =.load_nls_default();..else.{...
2b20 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 6f 64 65 70 61 67 codepage.=.load_nls(user.codepag
2b40 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 72 65 74 75 72 6e e);...if.(!codepage).{....return
2b60 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 73 65 74 20 3d 20 .-EBADRQC;...}..}...iocharset.=.
2b80 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 49 4f 43 53 4e 41 NULL;..user.iocharset[NCP_IOCSNA
2ba0 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 63 68 61 72 73 65 ME_LEN].=.0;..if.(!user.iocharse
2bc0 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 72 73 65 74 2c 20 t[0].||.!strcmp(user.iocharset,.
2be0 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 3d 20 6c 6f 61 64 "default")).{...iocharset.=.load
2c00 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 3b 0a 09 7d 20 65 _nls_default();...utf8.=.0;..}.e
2c20 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 72 73 65 74 2c 20 lse.if.(!strcmp(user.iocharset,.
2c40 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 6f 61 64 5f 6e 6c "utf8")).{...iocharset.=.load_nl
2c60 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 7d 20 65 6c 73 65 s_default();...utf8.=.1;..}.else
2c80 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 75 73 65 72 2e 69 .{...iocharset.=.load_nls(user.i
2ca0 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 74 29 20 7b 0a 09 ocharset);...if.(!iocharset).{..
2cc0 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 09 72 65 74 75 72 ..unload_nls(codepage);....retur
2ce0 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 3b 0a 09 7d 0a 0a n.-EBADRQC;...}...utf8.=.0;..}..
2d00 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 73 65 74 75 70 5f .mutex_lock(&server->root_setup_
2d20 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 65 74 75 70 65 64 lock);..if.(server->root_setuped
2d40 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 3b 0a 09 09 6f 6c ).{...oldset_cp.=.codepage;...ol
2d60 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 20 3d 20 2d 45 42 dset_io.=.iocharset;...err.=.-EB
2d80 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 0a 09 09 09 4e 43 USY;..}.else.{...if.(utf8)....NC
2da0 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 47 5f 55 54 46 38 P_SET_FLAG(server,.NCP_FLAG_UTF8
2dc0 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 73 65 72 76 65 72 );...else....NCP_CLR_FLAG(server
2de0 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 5f 63 70 20 3d 20 ,.NCP_FLAG_UTF8);...oldset_cp.=.
2e00 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 3e 6e 6c 73 5f 76 server->nls_vol;...server->nls_v
2e20 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 20 3d 20 73 65 72 ol.=.codepage;...oldset_io.=.ser
2e40 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 5f 69 6f 20 3d 20 ver->nls_io;...server->nls_io.=.
2e60 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 6d 75 74 65 78 5f iocharset;...err.=.0;..}..mutex_
2e80 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 63 6b 29 unlock(&server->root_setup_lock)
2ea0 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 09 75 6e 6c 6f 61 ;..unload_nls(oldset_cp);..unloa
2ec0 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 20 65 72 72 3b 0a d_nls(oldset_io);...return.err;.
2ee0 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 73 65 74 73 28 73 }..static.int.ncp_get_charsets(s
2f00 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 74 72 75 63 74 truct.ncp_server*.server,.struct
2f20 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 29 0a 7b 0a 09 73 .ncp_nls_ioctl.__user.*arg).{..s
2f40 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 09 69 6e 74 20 6c truct.ncp_nls_ioctl.user;..int.l
2f60 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 65 6f 66 28 75 73 en;...memset(&user,.0,.sizeof(us
2f80 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 3e 72 6f 6f 74 5f er));..mutex_lock(&server->root_
2fa0 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 6e 6c 73 5f 76 6f setup_lock);..if.(server->nls_vo
2fc0 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 73 65 74 29 20 7b l.&&.server->nls_vol->charset).{
2fe0 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 76 6f 6c 2d ...len.=.strlen(server->nls_vol-
3000 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 4e >charset);...if.(len.>.NCP_IOCSN
3020 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 4c AME_LEN)....len.=.NCP_IOCSNAME_L
3040 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 65 2c 20 73 65 72 EN;...strncpy(user.codepage,.ser
3060 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 29 3b 0a 09 09 75 ver->nls_vol->charset,.len);...u
3080 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 0a 09 69 66 20 28 ser.codepage[len].=.0;..}...if.(
30a0 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 41 47 5f 55 54 46 NCP_IS_FLAG(server,.NCP_FLAG_UTF
30c0 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 74 2c 20 22 75 74 8))...strcpy(user.iocharset,."ut
30e0 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 73 5f 69 6f 20 26 f8");..else.if.(server->nls_io.&
3100 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 20 7b 0a 09 09 6c &.server->nls_io->charset).{...l
3120 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 2d 3e 63 68 61 72 en.=.strlen(server->nls_io->char
3140 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 4e 41 4d 45 5f 4c set);...if.(len.>.NCP_IOCSNAME_L
3160 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 4c 45 4e 3b 0a 09 EN)....len.=.NCP_IOCSNAME_LEN;..
3180 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 65 72 76 65 72 2d .strncpy(user.iocharset,.server-
31a0 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 75 73 65 72 2e 69 >nls_io->charset,.len);...user.i
31c0 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 65 78 5f 75 6e 6c ocharset[len].=.0;..}..mutex_unl
31e0 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 0a ock(&server->root_setup_lock);..
3200 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 65 72 2c 20 73 69 .if.(copy_to_user(arg,.&user,.si
3220 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 55 4c 54 3b 0a 09 zeof(user)))...return.-EFAULT;..
3240 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 49 47 5f 4e 43 50 return.0;.}.#endif./*.CONFIG_NCP
3260 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 63 70 5f 69 6f 63 FS_NLS.*/..static.long.__ncp_ioc
3280 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 73 69 67 6e 65 64 tl(struct.inode.*inode,.unsigned
32a0 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 67 29 0a 7b 0a 09 .int.cmd,.unsigned.long.arg).{..
32c0 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 43 50 5f struct.ncp_server.*server.=.NCP_
32e0 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 3b 0a 09 73 74 72 SERVER(inode);..int.result;..str
3300 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 65 73 74 3b 0a 09 uct.ncp_ioctl_request.request;..
3320 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 5f 5f 75 73 65 72 char*.bouncebuffer;..void.__user
3340 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 67 3b 0a 0a 09 73 .*argp.=.(void.__user.*)arg;...s
3360 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 47 5f 43 4f 4d 50 witch.(cmd).{.#ifdef.CONFIG_COMP
3380 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 54 5f 33 32 3a 0a AT..case.NCP_IOC_NCPREQUEST_32:.
33a0 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 51 55 45 53 54 3a #endif..case.NCP_IOC_NCPREQUEST:
33c0 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 20 28 63 6d 64 20 .#ifdef.CONFIG_COMPAT...if.(cmd.
33e0 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 7b 0a 09 09 09 73 ==.NCP_IOC_NCPREQUEST_32).{....s
3400 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 75 65 73 74 20 72 truct.compat_ncp_ioctl_request.r
3420 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 5f 75 73 65 72 28 equest32;....if.(copy_from_user(
3440 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 65 71 75 65 73 74 &request32,.argp,.sizeof(request
3460 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 09 09 09 72 65 71 32))).....return.-EFAULT;....req
3480 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 66 75 6e 63 74 69 uest.function.=.request32.functi
34a0 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 65 73 74 33 32 2e on;....request.size.=.request32.
34c0 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 6d 70 61 74 5f 70 size;....request.data.=.compat_p
34e0 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 73 65 0a 23 65 6e tr(request32.data);...}.else.#en
3500 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 72 65 71 75 65 73 dif...if.(copy_from_user(&reques
3520 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 0a 09 09 09 72 65 t,.argp,.sizeof(request)))....re
3540 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 65 73 74 2e 66 75 turn.-EFAULT;....if.((request.fu
3560 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 71 75 65 73 74 2e nction.>.255).......||.(request.
3580 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 20 2d 20 73 69 7a size.>.....NCP_PACKET_SIZE.-.siz
35a0 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 29 29 eof(struct.ncp_request_header)))
35c0 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 09 09 62 6f 75 6e .{....return.-EINVAL;...}...boun
35e0 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 4b 45 54 5f 53 49 cebuffer.=.vmalloc(NCP_PACKET_SI
3600 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 65 62 75 66 66 65 ZE_INTERNAL);...if.(!bouncebuffe
3620 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 20 28 63 6f 70 79 r)....return.-ENOMEM;...if.(copy
3640 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 65 71 75 65 73 74 _from_user(bouncebuffer,.request
3660 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 09 76 66 72 65 65 .data,.request.size)).{....vfree
3680 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 2d 45 46 41 55 4c (bouncebuffer);....return.-EFAUL
36a0 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 65 72 76 65 72 29 T;...}...ncp_lock_server(server)
36c0 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 75 6e 64 20 69 6e ;..../*.FIXME:.We.hack.around.in
36e0 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 09 20 20 20 68 65 .the.server's.structures......he
3700 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 65 71 75 65 73 74 re.to.be.able.to.use.ncp_request
3720 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 74 69 6f 6e 20 3d .*/....server->has_subfunction.=
3740 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 20 3d 20 72 65 71 .0;...server->current_size.=.req
3760 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 2d 3e 70 61 63 6b uest.size;...memcpy(server->pack
3780 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 73 69 7a 65 29 3b et,.bouncebuffer,.request.size);
37a0 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 73 65 72 76 65 72 ....result.=.ncp_request2(server
37c0 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 6e 63 65 62 75 66 ,.request.function,....bouncebuf
37e0 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 4e 41 4c 29 3b 0a fer,.NCP_PACKET_SIZE_INTERNAL);.
3800 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 74 20 3d 20 2d 45 ..if.(result.<.0)....result.=.-E
3820 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 76 65 72 2d 3e 72 IO;...else....result.=.server->r
3840 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 72 76 65 72 28 73 eply_size;...ncp_unlock_server(s
3860 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 20 25 64 20 62 79 erver);...ncp_dbg(1,."copy.%d.by
3880 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 75 6c 74 20 3e 3d tes\n",.result);...if.(result.>=
38a0 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 71 75 65 73 74 2e .0)....if.(copy_to_user(request.
38c0 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 29 29 0a 09 09 09 data,.bouncebuffer,.result))....
38e0 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 28 62 6f 75 6e 63 .result.=.-EFAULT;...vfree(bounc
3900 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 0a 0a 09 63 61 73 ebuffer);...return.result;...cas
3920 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 0a 09 09 69 66 20 e.NCP_IOC_CONN_LOGGED_IN:....if.
3940 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 43 50 5f 49 4d 4f (!(server->m.int_flags.&.NCP_IMO
3960 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 09 72 65 74 75 72 UNT_LOGGEDIN_POSSIBLE))....retur
3980 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 65 72 76 65 72 2d n.-EINVAL;...mutex_lock(&server-
39a0 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 65 72 76 65 72 2d >root_setup_lock);...if.(server-
39c0 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 20 2d 45 42 55 53 >root_setuped)....result.=.-EBUS
39e0 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 70 5f 63 6f 6e 6e Y;...else.{....result.=.ncp_conn
3a00 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 09 09 69 66 20 28 _logged_in(inode->i_sb);....if.(
3a20 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 6f 6f 74 5f 73 65 result.==.0).....server->root_se
3a40 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 6f 63 6b 28 26 73 tuped.=.1;...}...mutex_unlock(&s
3a60 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 72 65 74 75 72 erver->root_setup_lock);...retur
3a80 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 45 54 5f 46 53 5f n.result;...case.NCP_IOC_GET_FS_
3aa0 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 69 6e 66 6f 28 73 INFO:...return.ncp_get_fs_info(s
3ac0 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 65 20 4e 43 50 5f erver,.inode,.argp);...case.NCP_
3ae0 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 72 6e 20 6e 63 70 IOC_GET_FS_INFO_V2:...return.ncp
3b00 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 6f 64 65 2c 20 61 _get_fs_info_v2(server,.inode,.a
3b20 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 54 0a 09 63 61 73 rgp);..#ifdef.CONFIG_COMPAT..cas
3b40 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 32 3a 0a 09 09 72 e.NCP_IOC_GET_FS_INFO_V2_32:...r
3b60 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 66 6f 5f 76 32 28 eturn.ncp_get_compat_fs_info_v2(
3b80 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 69 66 0a 09 2f 2a server,.inode,.argp);.#endif../*
3ba0 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 69 6f 6e 73 20 6f .we.have.too.many.combinations.o
3bc0 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 47 5f 36 34 42 49 f.CONFIG_COMPAT,...*.CONFIG_64BI
3be0 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 74 20 68 61 6e 64 T.and.CONFIG_UID16,.so.just.hand
3c00 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 20 69 6f 63 74 6c le...*.any.of.the.possible.ioctl
3c20 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 54 55 49 44 31 36 s.*/..case.NCP_IOC_GETMOUNTUID16
3c40 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 55 49 44 28 75 69 :...{....u16.uid;.....SET_UID(ui
3c60 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 74 5f 75 73 65 72 d,.from_kuid_munged(current_user
3c80 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 29 3b 0a _ns(),.server->m.mounted_uid));.
3ca0 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 5f 5f 75 73 65 72 ...if.(put_user(uid,.(u16.__user
3cc0 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 54 3b 0a 09 09 .*)argp)).....return.-EFAULT;...
3ce0 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 4f 43 5f 47 45 54 .return.0;...}..case.NCP_IOC_GET
3d00 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 20 3d 20 66 72 6f MOUNTUID32:..{...uid_t.uid.=.fro
3d20 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(),
3d40 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 09 69 66 20 28 70 .server->m.mounted_uid);...if.(p
3d60 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 29 61 72 67 70 29 ut_user(uid,.(u32.__user.*)argp)
3d80 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 75 72 6e 20 30 3b )....return.-EFAULT;...return.0;
3da0 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 55 49 44 36 34 3a ..}..case.NCP_IOC_GETMOUNTUID64:
3dc0 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 64 5f 6d 75 6e 67 ..{...uid_t.uid.=.from_kuid_mung
3de0 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 65 72 2d 3e 6d 2e ed(current_user_ns(),.server->m.
3e00 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 65 72 28 75 69 64 mounted_uid);...if.(put_user(uid
3e20 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 72 65 74 75 72 6e ,.(u64.__user.*)argp))....return
3e40 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 63 61 73 65 20 4e .-EFAULT;...return.0;..}..case.N
3e60 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 75 63 74 20 6e 63 CP_IOC_GETROOT:...{....struct.nc
3e80 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 73 75 6c 74 20 3d p_setroot_ioctl.sr;.....result.=
3ea0 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 65 72 76 65 72 2d .-EACCES;....mutex_lock(&server-
3ec0 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 73 65 72 76 65 72 >root_setup_lock);....if.(server
3ee0 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 73 74 72 75 63 74 ->m.mounted_vol[0]).{.....struct
3f00 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 5f 73 62 2d 3e 73 .dentry*.dentry.=.inode->i_sb->s
3f20 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 09 09 09 09 09 73 _root;......if.(dentry).{......s
3f40 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 6e 6f 64 65 28 64 truct.inode*.s_inode.=.d_inode(d
3f60 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 20 7b 0a 09 09 09 entry);.......if.(s_inode).{....
3f80 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 4f 28 73 5f 69 6e ...sr.volNumber.=.NCP_FINFO(s_in
3fa0 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 64 69 72 45 6e 74 ode)->volNumber;.......sr.dirEnt
3fc0 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 64 69 72 45 6e 74 Num.=.NCP_FINFO(s_inode)->dirEnt
3fe0 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 73 65 72 76 65 72 Num;.......sr.namespace.=.server
4000 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 3b 0a 09 09 09 09 ->name_space[sr.volNumber];.....
4020 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 09 09 09 09 09 09 ..result.=.0;......}.else.......
4040 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 29 3d 3d 4e 55 4c ncp_dbg(1,."d_inode(s_root)==NUL
4060 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 5f 64 62 67 28 31 L\n");.....}.else......ncp_dbg(1
4080 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 65 6c 73 65 20 7b ,."s_root==NULL\n");....}.else.{
40a0 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 09 09 73 72 2e 6e .....sr.volNumber.=.-1;.....sr.n
40c0 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 74 4e 75 6d 20 3d amespace.=.0;.....sr.dirEntNum.=
40e0 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 09 09 6d 75 74 65 .0;.....result.=.0;....}....mute
4100 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 63 x_unlock(&server->root_setup_loc
4120 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 5f 74 6f 5f 75 73 k);....if.(!result.&&.copy_to_us
4140 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 0a 09 09 09 09 72 er(argp,.&sr,.sizeof(sr))).....r
4160 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
4180 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 4f 4f 54 3a 0a 09 t;...}...case.NCP_IOC_SETROOT:..
41a0 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 6f 63 74 6c 20 73 .{....struct.ncp_setroot_ioctl.s
41c0 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 32 20 64 65 3b 0a r;....__u32.vnum;....__le32.de;.
41e0 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 20 64 65 6e 74 72 ...__le32.dosde;....struct.dentr
4200 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 6f 6d 5f 75 73 65 y*.dentry;.....if.(copy_from_use
4220 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 09 09 09 09 72 65 r(&sr,.argp,.sizeof(sr))).....re
4240 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 6b 28 26 73 65 72 turn.-EFAULT;....mutex_lock(&ser
4260 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 73 65 ver->root_setup_lock);....if.(se
4280 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 73 75 6c 74 20 3d rver->root_setuped).....result.=
42a0 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 28 73 72 2e 76 6f .-EBUSY;....else.{.....if.(sr.vo
42c0 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 2d 3e 6d 2e 6d 6f lNumber.<.0).{......server->m.mo
42e0 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 6d 20 3d 20 4e 43 unted_vol[0].=.0;......vnum.=.NC
4300 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 64 65 20 3d 20 30 P_NUMBER_OF_VOLUMES;......de.=.0
4320 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 75 6c 74 20 3d 20 ;......dosde.=.0;......result.=.
4340 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 6d 62 65 72 20 3e 0;.....}.else.if.(sr.volNumber.>
4360 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 0a 09 09 09 09 09 =.NCP_NUMBER_OF_VOLUMES).{......
4380 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 73 65 20 69 66 20 result.=.-EINVAL;.....}.else.if.
43a0 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 73 72 2e 76 6f 6c (ncp_mount_subdir(server,.sr.vol
43c0 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 65 2c 20 73 72 2e Number,........sr.namespace,.sr.
43e0 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 64 65 2c 20 26 64 dirEntNum,........&vnum,.&de,.&d
4400 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 4f 45 4e 54 3b 0a osde)).{......result.=.-ENOENT;.
4420 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 3b 0a 0a 09 09 09 ....}.else......result.=.0;.....
4440 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 65 6e 74 72 79 20 .if.(result.==.0).{......dentry.
4460 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 09 09 69 66 20 28 =.inode->i_sb->s_root;......if.(
4480 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 64 65 2a 20 73 5f dentry).{.......struct.inode*.s_
44a0 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 09 09 09 09 inode.=.d_inode(dentry);........
44c0 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 46 49 4e 46 4f 28 if.(s_inode).{........NCP_FINFO(
44e0 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 3b 0a 09 09 09 09 s_inode)->volNumber.=.vnum;.....
4500 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 45 6e 74 4e 75 6d ...NCP_FINFO(s_inode)->dirEntNum
4520 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 69 6e 6f 64 65 29 .=.de;........NCP_FINFO(s_inode)
4540 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 09 09 73 65 72 76 ->DosDirNum.=.dosde;........serv
4560 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 09 09 7d 20 65 6c er->root_setuped.=.1;.......}.el
4580 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 69 6e 6f 64 65 28 se.{........ncp_dbg(1,."d_inode(
45a0 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 72 65 73 75 6c 74 s_root)==NULL\n");........result
45c0 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 73 65 20 7b 0a 09 .=.-EIO;.......}......}.else.{..
45e0 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 55 4c 4c 5c 6e 22 .....ncp_dbg(1,."s_root==NULL\n"
4600 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 09 09 09 7d 0a 09 );.......result.=.-EIO;......}..
4620 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 26 73 65 72 76 65 ...}....}....mutex_unlock(&serve
4640 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 65 74 75 72 6e 20 r->root_setup_lock);.....return.
4660 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 4e 43 50 46 53 result;...}..#ifdef.CONFIG_NCPFS
4680 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 49 4f 43 5f 53 49 _PACKET_SIGNING..case.NCP_IOC_SI
46a0 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 5f 73 69 67 6e 5f GN_INIT:...{....struct.ncp_sign_
46c0 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 09 09 09 69 66 20 init.sign;.....if.(argp).....if.
46e0 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 70 2c 20 73 69 7a (copy_from_user(&sign,.argp,.siz
4700 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 46 41 55 4c 54 3b eof(sign)))......return.-EFAULT;
4720 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 3b 0a 09 09 09 ....ncp_lock_server(server);....
4740 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 75 74 mutex_lock(&server->rcv.creq_mut
4760 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 20 28 73 65 72 76 ex);....if.(argp).{.....if.(serv
4780 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 6d 63 70 79 28 73 er->sign_wanted).{......memcpy(s
47a0 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 5f 72 6f 6f 74 2c erver->sign_root,sign.sign_root,
47c0 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 67 6e 5f 6c 61 73 8);......memcpy(server->sign_las
47e0 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 09 73 65 72 76 65 t,sign.sign_last,16);......serve
4800 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 09 09 09 09 2f 2a r->sign_active.=.1;.....}...../*
4820 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 74 20 77 61 6e 74 .ignore.when.signatures.not.want
4840 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 65 72 2d 3e 73 69 ed.*/....}.else.{.....server->si
4860 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 65 78 5f 75 6e 6c gn_active.=.0;....}....mutex_unl
4880 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);...
48a0 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 09 09 72 .ncp_unlock_server(server);....r
48c0 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 20 4e 43 50 5f 49 eturn.0;...}..........case.NCP_I
48e0 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 20 73 74 61 74 65 OC_SIGN_WANTED:...{....int.state
4900 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 65 72 29 3b 0a 09 ;.....ncp_lock_server(server);..
4920 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 74 65 64 3b 0a 09 ..state.=.server->sign_wanted;..
4940 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 3b 0a 09 09 09 ..ncp_unlock_server(server);....
4960 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 5f 75 73 65 72 20 if.(put_user(state,.(int.__user.
4980 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 54 3b 0a 09 09 09 *)argp)).....return.-EFAULT;....
49a0 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 4f 43 5f 53 45 54 return.0;...}...case.NCP_IOC_SET
49c0 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 65 77 73 74 61 74 _SIGN_WANTED:...{....int.newstat
49e0 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 69 74 73 2e 2e 2e e;...../*.get.only.low.8.bits...
4a00 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 74 65 2c 20 28 75 .*/....if.(get_user(newstate,.(u
4a20 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 29 29 0a 09 09 09 nsigned.char.__user.*)argp))....
4a40 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 20 3d 20 30 3b 0a .return.-EFAULT;....result.=.0;.
4a60 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 3b 0a 09 09 09 69 ...ncp_lock_server(server);....i
4a80 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 09 09 2f 2a f.(server->sign_active).{...../*
4aa0 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 46 20 77 68 65 6e .cannot.turn.signatures.OFF.when
4ac0 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 74 65 29 0a 09 09 .active.*/.....if.(!newstate)...
4ae0 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 65 6c 73 65 20 7b ...result.=.-EINVAL;....}.else.{
4b00 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 20 6e 65 77 73 74 .....server->sign_wanted.=.newst
4b20 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 63 6b 5f 73 65 72 ate.!=.0;....}....ncp_unlock_ser
4b40 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 75 6c 74 3b 0a 09 ver(server);....return.result;..
4b60 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 5f 50 41 43 4b 45 .}..#endif./*.CONFIG_NCPFS_PACKE
4b80 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 47 5f 4e 43 50 46 T_SIGNING.*/..#ifdef.CONFIG_NCPF
4ba0 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 49 4f 43 5f 4c 4f S_IOCTL_LOCKING..case.NCP_IOC_LO
4bc0 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 70 5f 6c 6f 63 6b CKUNLOCK:...{....struct.ncp_lock
4be0 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 70 79 5f 66 72 6f _ioctl..rqdata;.....if.(copy_fro
4c00 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 6f 66 28 72 71 64 m_user(&rqdata,.argp,.sizeof(rqd
4c20 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 0a 09 09 09 69 66 ata))).....return.-EFAULT;....if
4c40 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 72 65 74 75 72 6e .(rqdata.origin.!=.0).....return
4c60 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 63 6d 64 20 2a 2f .-EINVAL;..../*.check.for.cmd.*/
4c80 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 09 09 09 09 63 61 ....switch.(rqdata.cmd).{.....ca
4ca0 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 43 50 5f 4c 4f 43 se.NCP_LOCK_EX:.....case.NCP_LOC
4cc0 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 65 6f 75 74 20 3c K_SH:.......if.(rqdata.timeout.<
4ce0 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 0a 09 09 09 09 09 .0)........return.-EINVAL;......
4d00 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 09 09 09 09 09 09 .if.(rqdata.timeout.==.0).......
4d20 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 5f 44 45 46 41 55 .rqdata.timeout.=.NCP_LOCK_DEFAU
4d40 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 28 72 71 64 61 74 LT_TIMEOUT;.......else.if.(rqdat
4d60 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 49 4d 45 4f 55 54 a.timeout.>.NCP_LOCK_MAX_TIMEOUT
4d80 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 4e 43 50 5f 4c 4f )........rqdata.timeout.=.NCP_LO
4da0 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 6b 3b 0a 09 09 09 CK_MAX_TIMEOUT;.......break;....
4dc0 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 72 71 64 61 74 61 .case.NCP_LOCK_LOG:.......rqdata
4de0 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 54 5f 54 49 4d 45 .timeout.=.NCP_LOCK_DEFAULT_TIME
4e00 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 09 09 09 63 61 73 OUT;./*.has.no.effect.*/.....cas
4e20 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 65 61 6b 3b 0a 09 e.NCP_LOCK_CLEAR:.......break;..
4e40 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 45 49 4e 56 41 4c ...default:.......return.-EINVAL
4e60 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 20 62 6f 74 68 20 ;....}..../*.locking.needs.both.
4e80 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 09 09 69 66 20 28 read.and.write.access.*/....if.(
4ea0 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 6f 64 65 2c 20 4f (result.=.ncp_make_open(inode,.O
4ec0 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 75 72 6e 20 72 65 _RDWR)).!=.0)....{.....return.re
4ee0 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 53 44 49 52 3b 0a sult;....}....result.=.-EISDIR;.
4f00 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 6f 64 65 29 29 0a ...if.(!S_ISREG(inode->i_mode)).
4f20 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 64 61 74 61 2e 63 ....goto.outrel;....if.(rqdata.c
4f40 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 0a 09 09 09 09 72 md.==.NCP_LOCK_CLEAR)....{.....r
4f60 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 65 63 6f 72 64 28 esult.=.ncp_ClearPhysicalRecord(
4f80 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 49 NCP_SERVER(inode),........NCP_FI
4fa0 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 09 NFO(inode)->file_handle,........
4fc0 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 74 61 2e 6c 65 6e rqdata.offset,........rqdata.len
4fe0 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 72 65 73 75 6c 74 gth);.....if.(result.>.0).result
5000 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 09 09 7d 0a 09 09 .=.0;./*.no.such.lock.*/....}...
5020 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 3b 0a 0a 09 09 09 .else....{.....int.lockcmd;.....
5040 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 0a 09 09 09 09 09 .switch.(rqdata.cmd).....{......
5060 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 3d 31 3b 20 62 72 case.NCP_LOCK_EX:..lockcmd=1;.br
5080 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 3a 20 20 6c 6f 63 eak;......case.NCP_LOCK_SH:..loc
50a0 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 74 3a 09 20 20 20 kcmd=3;.break;......default:....
50c0 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 09 09 72 65 73 75 lockcmd=0;.break;.....}.....resu
50e0 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 28 4e 43 50 5f 53 lt.=.ncp_LogPhysicalRecord(NCP_S
5100 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 49 4e 46 4f 28 69 ERVER(inode),........NCP_FINFO(i
5120 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 09 6c 6f 63 6b 63 node)->file_handle,........lockc
5140 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 09 09 09 09 09 09 md,........rqdata.offset,.......
5160 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 61 74 61 2e 74 69 .rqdata.length,........rqdata.ti
5180 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 29 20 72 65 73 75 meout);.....if.(result.>.0).resu
51a0 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 0a 09 09 09 6e 63 lt.=.-EAGAIN;....}.outrel:....nc
51c0 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 65 74 75 72 6e 20 p_inode_close(inode);....return.
51e0 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 49 47 5f 4e 43 50 result;...}.#endif./*.CONFIG_NCP
5200 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 66 20 43 4f 4e 46 FS_IOCTL_LOCKING.*/..#ifdef.CONF
5220 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 54 4f 42 4a 45 43 IG_COMPAT..case.NCP_IOC_GETOBJEC
5240 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 6d 70 61 74 5f 6e TNAME_32:...{....struct.compat_n
5260 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 09 09 09 73 69 7a cp_objectname_ioctl.user;....siz
5280 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 6d 5f 75 73 65 72 e_t.outl;.....if.(copy_from_user
52a0 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 29 29 0a 09 09 09 (&user,.argp,.sizeof(user)))....
52c0 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 65 61 64 28 26 73 .return.-EFAULT;....down_read(&s
52e0 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 72 2e 61 75 74 68 erver->auth_rwsem);....user.auth
5300 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 74 79 70 65 3b 0a _type.=.server->auth.auth_type;.
5320 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 6e 3b 0a ...outl.=.user.object_name_len;.
5340 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 73 65 72 76 65 72 ...user.object_name_len.=.server
5360 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 09 69 66 20 28 6f ->auth.object_name_len;....if.(o
5380 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 29 0a 09 09 09 09 utl.>.user.object_name_len).....
53a0 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 6e 3b 0a 09 09 09 outl.=.user.object_name_len;....
53c0 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 09 09 09 69 result.=.0;....if.(outl).{.....i
53e0 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 28 75 73 65 72 2e f.(copy_to_user(compat_ptr(user.
5400 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 72 2d 3e 61 75 74 object_name),........server->aut
5420 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 29 29 0a 09 09 09 h.object_name,........outl))....
5440 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 09 09 75 70 5f 72 ..result.=.-EFAULT;....}....up_r
5460 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 69 66 20 ead(&server->auth_rwsem);....if.
5480 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 72 67 70 2c 20 26 (!result.&&.copy_to_user(argp,.&
54a0 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 73 75 6c 74 20 user,.sizeof(user))).....result.
54c0 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 74 3b 0a 09 09 7d =.-EFAULT;....return.result;...}
54e0 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 4f 42 4a 45 43 54 .#endif...case.NCP_IOC_GETOBJECT
5500 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 63 74 6e 61 NAME:...{....struct.ncp_objectna
5520 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 75 74 6c 3b 0a 0a me_ioctl.user;....size_t.outl;..
5540 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 72 2c 20 61 72 67 ...if.(copy_from_user(&user,.arg
5560 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 72 6e 20 2d 45 46 p,.sizeof(user))).....return.-EF
5580 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 2d 3e 61 75 74 68 AULT;....down_read(&server->auth
55a0 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 20 3d 20 73 65 72 _rwsem);....user.auth_type.=.ser
55c0 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 74 6c 20 3d 20 75 ver->auth.auth_type;....outl.=.u
55e0 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 65 72 2e 6f 62 6a ser.object_name_len;....user.obj
5600 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 68 2e 6f 62 6a 65 ect_name_len.=.server->auth.obje
5620 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 20 75 73 65 72 2e ct_name_len;....if.(outl.>.user.
5640 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 3d 20 75 73 65 72 object_name_len).....outl.=.user
5660 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 74 20 3d 20 30 3b .object_name_len;....result.=.0;
5680 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 70 79 5f 74 6f 5f ....if.(outl).{.....if.(copy_to_
56a0 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 09 09 09 20 73 65 user(user.object_name,........se
56c0 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 09 09 09 09 20 6f rver->auth.object_name,........o
56e0 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 09 utl))......result.=.-EFAULT;....
5700 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 6d }....up_read(&server->auth_rwsem
5720 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 74 6f 5f 75 73 65 );....if.(!result.&&.copy_to_use
5740 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 29 29 29 0a 09 09 r(argp,.&user,.sizeof(user)))...
5760 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 20 72 65 ..result.=.-EFAULT;....return.re
5780 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 4f 4d 50 41 54 0a sult;...}..#ifdef.CONFIG_COMPAT.
57a0 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 5f 33 32 3a 0a .case.NCP_IOC_SETOBJECTNAME_32:.
57c0 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 4a 45 43 54 4e 41 #endif..case.NCP_IOC_SETOBJECTNA
57e0 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 63 74 6e 61 6d 65 ME:...{....struct.ncp_objectname
5800 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 61 6d 65 3b 0a 09 _ioctl.user;....void*.newname;..
5820 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 20 6f 6c 64 6e 61 ..void*.oldname;....size_t.oldna
5840 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 3b 0a 09 09 09 73 melen;....void*.oldprivate;....s
5860 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 65 66 20 43 4f 4e ize_t.oldprivatelen;..#ifdef.CON
5880 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 43 50 5f 49 4f 43 FIG_COMPAT....if.(cmd.==.NCP_IOC
58a0 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 74 72 75 63 74 20 _SETOBJECTNAME_32).{.....struct.
58c0 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 20 75 73 65 72 compat_ncp_objectname_ioctl.user
58e0 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 28 26 75 73 65 72 32;.....if.(copy_from_user(&user
5900 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 0a 09 09 09 09 09 32,.argp,.sizeof(user32)))......
5920 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 75 74 68 5f 74 79 return.-EFAULT;.....user.auth_ty
5940 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 09 75 73 65 72 2e pe.=.user32.auth_type;.....user.
5960 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 62 6a 65 63 74 5f object_name_len.=.user32.object_
5980 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 6e 61 6d 65 20 3d name_len;.....user.object_name.=
59a0 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 6e 61 6d 65 29 3b .compat_ptr(user32.object_name);
59c0 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 5f 66 72 ....}.else.#endif....if.(copy_fr
59e0 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 73 65 72 om_user(&user,.argp,.sizeof(user
5a00 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 66 20 28 ))).....return.-EFAULT;.....if.(
5a20 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 5f 4f 42 4a 45 43 user.object_name_len.>.NCP_OBJEC
5a40 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 20 2d 45 4e 4f 4d T_NAME_MAX_LEN).....return.-ENOM
5a60 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 65 5f 6c 65 6e 29 EM;....if.(user.object_name_len)
5a80 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 65 72 28 75 73 65 .{.....newname.=.memdup_user(use
5aa0 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 20 75 73 65 72 2e r.object_name,.............user.
5ac0 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 49 53 5f 45 52 52 object_name_len);.....if.(IS_ERR
5ae0 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 5f 45 52 52 28 6e (newname))......return.PTR_ERR(n
5b00 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 65 77 6e 61 6d 65 ewname);....}.else.{.....newname
5b20 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 65 28 26 73 65 72 .=.NULL;....}....down_write(&ser
5b40 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 6d 65 20 3d 20 73 ver->auth_rwsem);....oldname.=.s
5b60 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 09 09 6f 6c 64 6e erver->auth.object_name;....oldn
5b80 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 63 74 5f 6e 61 6d amelen.=.server->auth.object_nam
5ba0 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 76 65 72 2d 3e 70 e_len;....oldprivate.=.server->p
5bc0 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 20 3d 20 73 65 72 riv.data;....oldprivatelen.=.ser
5be0 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 61 75 74 68 2e 61 ver->priv.len;....server->auth.a
5c00 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 0a 09 09 09 73 65 uth_type.=.user.auth_type;....se
5c20 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 20 3d 20 75 73 65 rver->auth.object_name_len.=.use
5c40 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 65 72 2d 3e 61 75 r.object_name_len;....server->au
5c60 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 09 09 09 73 65 72 th.object_name.=.newname;....ser
5c80 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 65 72 2d 3e 70 72 ver->priv.len.=.0;....server->pr
5ca0 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 65 28 26 73 65 72 iv.data.=.NULL;....up_write(&ser
5cc0 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 28 6f 6c 64 70 72 ver->auth_rwsem);....kfree(oldpr
5ce0 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 0a 09 09 09 72 65 ivate);....kfree(oldname);....re
5d00 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 4d 50 41 turn.0;...}..#ifdef.CONFIG_COMPA
5d20 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 44 41 54 41 5f 33 T..case.NCP_IOC_GETPRIVATEDATA_3
5d40 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 54 50 52 49 56 41 2:.#endif..case.NCP_IOC_GETPRIVA
5d60 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 76 61 74 TEDATA:...{....struct.ncp_privat
5d80 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 74 20 6f 75 74 6c edata_ioctl.user;....size_t.outl
5da0 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 63 ;..#ifdef.CONFIG_COMPAT....if.(c
5dc0 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 33 32 29 md.==.NCP_IOC_GETPRIVATEDATA_32)
5de0 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 65 .{.....struct.compat_ncp_private
5e00 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 5f data_ioctl.user32;.....if.(copy_
5e20 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 28 from_user(&user32,.argp,.sizeof(
5e40 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 09 user32)))......return.-EFAULT;..
5e60 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 73 ...user.len.=.user32.len;.....us
5e80 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 61 er.data.=.compat_ptr(user32.data
5ea0 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 5f );....}.else.#endif....if.(copy_
5ec0 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 73 from_user(&user,.argp,.sizeof(us
5ee0 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 64 6f er))).....return.-EFAULT;.....do
5f00 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 6d 29 3b 0a 09 09 wn_read(&server->auth_rwsem);...
5f20 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 6c 65 6e 20 3d 20 .outl.=.user.len;....user.len.=.
5f40 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 75 74 6c 20 3e 20 server->priv.len;....if.(outl.>.
5f60 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 0a 09 09 09 72 65 user.len).outl.=.user.len;....re
5f80 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 09 09 09 69 66 20 sult.=.0;....if.(outl).{.....if.
5fa0 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 09 09 09 09 09 20 (copy_to_user(user.data,........
5fc0 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 6f 75 74 6c 29 29 server->priv.data,........outl))
5fe0 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 09 09 ......result.=.-EFAULT;....}....
6000 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 09 09 up_read(&server->auth_rwsem);...
6020 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 73 75 6c 74 3b 0a .if.(result).....return.result;.
6040 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 63 6d 64 20 #ifdef.CONFIG_COMPAT....if.(cmd.
6060 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 33 32 29 20 7b 0a ==.NCP_IOC_GETPRIVATEDATA_32).{.
6080 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 65 64 61 74 ....struct.compat_ncp_privatedat
60a0 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 2e 6c 65 6e 20 3d a_ioctl.user32;.....user32.len.=
60c0 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 20 3d 20 28 75 6e .user.len;.....user32.data.=.(un
60e0 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 09 09 69 66 20 28 signed.long).user.data;.....if.(
6100 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 2c 20 73 69 7a 65 copy_to_user(argp,.&user32,.size
6120 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 55 4c 54 of(user32)))......return.-EFAULT
6140 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 5f 74 ;....}.else.#endif....if.(copy_t
6160 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 29 o_user(argp,.&user,.sizeof(user)
6180 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 72 65 74 75 72 )).....return.-EFAULT;.....retur
61a0 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 4d 50 41 54 0a 09 n.0;...}..#ifdef.CONFIG_COMPAT..
61c0 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 41 5f 33 32 3a 0a case.NCP_IOC_SETPRIVATEDATA_32:.
61e0 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 49 56 41 54 45 44 #endif..case.NCP_IOC_SETPRIVATED
6200 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 76 61 74 65 64 61 ATA:...{....struct.ncp_privateda
6220 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 77 3b 0a 09 09 09 ta_ioctl.user;....void*.new;....
6240 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 6e 3b 0a 0a 23 69 void*.old;....size_t.oldlen;..#i
6260 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 63 6d 64 20 3d 3d fdef.CONFIG_COMPAT....if.(cmd.==
6280 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 29 20 7b 0a 09 09 .NCP_IOC_SETPRIVATEDATA_32).{...
62a0 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 65 64 61 74 61 5f ..struct.compat_ncp_privatedata_
62c0 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 5f 66 72 6f 6d 5f ioctl.user32;.....if.(copy_from_
62e0 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 28 75 73 65 72 33 user(&user32,.argp,.sizeof(user3
6300 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 09 09 09 09 75 73 2)))......return.-EFAULT;.....us
6320 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 73 65 72 2e 64 61 er.len.=.user32.len;.....user.da
6340 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 61 29 3b 0a 09 09 ta.=.compat_ptr(user32.data);...
6360 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 5f 66 72 6f 6d 5f .}.else.#endif....if.(copy_from_
6380 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 29 29 user(&user,.argp,.sizeof(user)))
63a0 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 66 20 28 75 73 65 .....return.-EFAULT;.....if.(use
63c0 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 41 58 5f 4c 45 4e r.len.>.NCP_PRIVATE_DATA_MAX_LEN
63e0 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 66 20 28 75 73 65 ).....return.-ENOMEM;....if.(use
6400 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 75 73 65 72 28 75 r.len).{.....new.=.memdup_user(u
6420 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 66 20 28 49 53 5f ser.data,.user.len);.....if.(IS_
6440 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 45 52 52 28 6e 65 ERR(new))......return.PTR_ERR(ne
6460 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 4e 55 4c 4c 3b 0a w);....}.else.{.....new.=.NULL;.
6480 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 2d 3e 61 75 74 68 ...}....down_write(&server->auth
64a0 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 70 72 69 76 2e 64 _rwsem);....old.=.server->priv.d
64c0 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 72 69 76 2e 6c 65 ata;....oldlen.=.server->priv.le
64e0 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 73 65 72 2e 6c 65 n;....server->priv.len.=.user.le
6500 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 6e 65 77 3b 0a 09 n;....server->priv.data.=.new;..
6520 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 77 73 65 6d 29 3b ..up_write(&server->auth_rwsem);
6540 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 30 3b 0a 09 09 7d ....kfree(old);....return.0;...}
6560 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 63 61 73 65 20 ..#ifdef.CONFIG_NCPFS_NLS..case.
6580 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 75 72 6e 20 6e 63 NCP_IOC_SETCHARSETS:...return.nc
65a0 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 70 29 3b 0a 0a 09 p_set_charsets(server,.argp);...
65c0 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 09 09 72 65 74 75 case.NCP_IOC_GETCHARSETS:...retu
65e0 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 2c 20 61 72 67 70 rn.ncp_get_charsets(server,.argp
6600 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 5f 4e 4c 53 20 2a );..#endif./*.CONFIG_NCPFS_NLS.*
6620 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 54 54 4c 3a 0a 09 /...case.NCP_IOC_SETDENTRYTTL:..
6640 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 69 66 20 28 63 6f .{....u_int32_t.user;.....if.(co
6660 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 66 py_from_user(&user,.argp,.sizeof
6680 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 09 09 09 (user))).....return.-EFAULT;....
66a0 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 09 09 69 66 20 28 /*.20.secs.at.most....*/....if.(
66c0 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 45 49 4e 56 41 4c user.>.20000).....return.-EINVAL
66e0 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 31 30 30 30 3b 0a ;....user.=.(user.*.HZ)./.1000;.
6700 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 74 72 79 5f 74 74 ...atomic_set(&server->dentry_tt
6720 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 0a 0a 09 63 61 73 l,.user);....return.0;...}...cas
6740 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 7b 0a 09 09 09 75 e.NCP_IOC_GETDENTRYTTL:...{....u
6760 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 61 64 28 26 73 65 _int32_t.user.=.(atomic_read(&se
6780 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 2f 20 48 5a 3b 0a rver->dentry_ttl).*.1000)./.HZ;.
67a0 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 26 75 73 65 72 2c ...if.(copy_to_user(argp,.&user,
67c0 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 20 2d 45 46 41 55 .sizeof(user))).....return.-EFAU
67e0 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 72 65 74 75 72 6e LT;....return.0;...}...}..return
6800 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 6c 28 73 74 72 75 .-EINVAL;.}..long.ncp_ioctl(stru
6820 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 74 20 63 6d 64 2c ct.file.*filp,.unsigned.int.cmd,
6840 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 75 63 74 20 69 6e .unsigned.long.arg).{..struct.in
6860 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 6c 70 29 3b 0a 09 ode.*inode.=.file_inode(filp);..
6880 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 43 50 5f struct.ncp_server.*server.=.NCP_
68a0 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 20 3d 20 63 75 72 SERVER(inode);..kuid_t.uid.=.cur
68c0 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 5f 77 72 69 74 65 rent_uid();..int.need_drop_write
68e0 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 28 63 6d 64 29 20 .=.0;..long.ret;...switch.(cmd).
6900 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 53 3a 0a 09 63 61 {..case.NCP_IOC_SETCHARSETS:..ca
6920 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 09 63 61 73 65 se.NCP_IOC_CONN_LOGGED_IN:..case
6940 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 61 70 61 62 6c 65 .NCP_IOC_SETROOT:...if.(!capable
6960 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 3d 20 2d 45 50 45 (CAP_SYS_ADMIN)).{....ret.=.-EPE
6980 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 61 6b 3b 0a 09 7d RM;....goto.out;...}...break;..}
69a0 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_
69c0 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 29 20 7b 0a 09 09 uid,.uid)).{...switch.(cmd).{...
69e0 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 61 6e 20 69 73 73 /*....*.Only.mount.owner.can.iss
6a00 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 69 6f 6e 0a 09 09 ue.these.ioctls...Information...
6a20 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 74 65 20 74 6f 20 .*.necessary.to.authenticate.to.
6a40 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 20 73 74 6f 72 65 other.NDS.servers.are....*.store
6a60 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 4f 43 5f 47 45 54 d.here.....*/...case.NCP_IOC_GET
6a80 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 53 45 54 4f 42 OBJECTNAME:...case.NCP_IOC_SETOB
6aa0 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 45 54 50 52 49 56 JECTNAME:...case.NCP_IOC_GETPRIV
6ac0 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 54 50 52 49 56 41 ATEDATA:...case.NCP_IOC_SETPRIVA
6ae0 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 41 54 0a 09 09 63 TEDATA:.#ifdef.CONFIG_COMPAT...c
6b00 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 33 32 3a 0a 09 09 ase.NCP_IOC_GETOBJECTNAME_32:...
6b20 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 5f 33 32 3a 0a 09 case.NCP_IOC_SETOBJECTNAME_32:..
6b40 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 54 41 5f 33 32 3a .case.NCP_IOC_GETPRIVATEDATA_32:
6b60 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 44 41 54 41 5f 33 ...case.NCP_IOC_SETPRIVATEDATA_3
6b80 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 3b 0a 09 09 09 67 2:.#endif....ret.=.-EACCES;....g
6ba0 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 65 71 75 69 72 65 oto.out;.../*....*.These.require
6bc0 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 20 69 66 20 75 73 .write.access.on.the.inode.if.us
6be0 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 20 20 4e 6f 74 65 er.id....*.does.not.match...Note
6c00 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 20 74 68 65 0a 09 .that.they.do.not.write.to.the..
6c20 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 64 69 64 20 6d 6e ..*.file.....But.old.code.did.mn
6c40 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 20 2a 20 69 74 20 t_want_write,.so.I.keep....*.it.
6c60 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 6d 6f 75 6e 74 70 as.is...Of.course.not.for.mountp
6c80 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 72 65 61 6b 73 20 oint.owner,.as....*.that.breaks.
6ca0 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 72 20 61 73 20 6e read-only.mounts.altogether.as.n
6cc0 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 20 4e 43 50 5f 49 cpmount....*.needs.working.NCP_I
6ce0 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 5f 49 4f 43 5f 47 OC_NCPREQUEST.and....*.NCP_IOC_G
6d00 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 20 63 6f 64 65 73 ET_FS_INFO...Some.of.these.codes
6d20 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 6e 69 74 2c 20 73 .(setdentryttl,....*.signinit,.s
6d40 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 6f 62 61 62 6c 79 etsignwanted).should.be.probably
6d60 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 6f 6e 6c 79 2c 20 .restricted....*.to.owner.only,.
6d80 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 4d 49 4e 29 2e 0a or.even.more.to.CAP_SYS_ADMIN)..
6da0 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 53 5f 49 4e 46 4f ...*/...case.NCP_IOC_GET_FS_INFO
6dc0 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 46 4f 5f 56 32 3a :...case.NCP_IOC_GET_FS_INFO_V2:
6de0 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 3a 0a 09 09 63 61 ...case.NCP_IOC_NCPREQUEST:...ca
6e00 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 09 63 61 73 65 20 se.NCP_IOC_SETDENTRYTTL:...case.
6e20 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 4e 43 50 5f 49 4f NCP_IOC_SIGN_INIT:...case.NCP_IO
6e40 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 4f 43 5f 53 45 54 C_LOCKUNLOCK:...case.NCP_IOC_SET
6e60 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 47 5f 43 4f 4d 50 _SIGN_WANTED:.#ifdef.CONFIG_COMP
6e80 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 4e 46 4f 5f 56 32 AT...case.NCP_IOC_GET_FS_INFO_V2
6ea0 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 55 45 53 54 5f 33 _32:...case.NCP_IOC_NCPREQUEST_3
6ec0 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 74 5f 77 72 69 74 2:.#endif....ret.=.mnt_want_writ
6ee0 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 09 09 09 09 67 6f e_file(filp);....if.(ret).....go
6f00 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 20 3d 20 31 3b 0a to.out;....need_drop_write.=.1;.
6f20 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 69 6e 6f 64 65 2c ...ret.=.inode_permission(inode,
6f40 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 09 09 09 67 6f 74 .MAY_WRITE);....if.(ret).....got
6f60 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 09 09 2f 2a 0a 09 o.outDropWrite;....break;.../*..
6f80 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 09 09 20 2a 2f 0a ..*.Read.access.required.....*/.
6fa0 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 31 36 3a 0a 09 09 ..case.NCP_IOC_GETMOUNTUID16:...
6fc0 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 3a 0a 09 09 63 61 case.NCP_IOC_GETMOUNTUID32:...ca
6fe0 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 09 09 63 61 73 65 se.NCP_IOC_GETMOUNTUID64:...case
7000 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 43 50 5f 49 4f 43 .NCP_IOC_GETROOT:...case.NCP_IOC
7020 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 64 65 5f 70 65 72 _SIGN_WANTED:....ret.=.inode_per
7040 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 09 09 09 69 66 20 mission(inode,.MAY_READ);....if.
7060 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 61 6b 3b 0a 09 09 (ret).....goto.out;....break;...
7080 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 68 65 73 65 2e 0a /*....*.Anybody.can.read.these..
70a0 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 41 52 53 45 54 53 ...*/...case.NCP_IOC_GETCHARSETS
70c0 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 54 54 4c 3a 0a 09 :...case.NCP_IOC_GETDENTRYTTL:..
70e0 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 20 62 65 6c 6f 77 .default:.../*.Three.codes.below
7100 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 41 44 4d 49 4e 20 .are.protected.by.CAP_SYS_ADMIN.
7120 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 45 54 43 48 41 52 above..*/...case.NCP_IOC_SETCHAR
7140 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 4c 4f 47 47 45 44 SETS:...case.NCP_IOC_CONN_LOGGED
7160 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 54 3a 0a 09 09 09 _IN:...case.NCP_IOC_SETROOT:....
7180 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 5f 69 6f 63 74 6c break;...}..}..ret.=.__ncp_ioctl
71a0 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 57 72 69 74 65 3a (inode,.cmd,.arg);.outDropWrite:
71c0 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 6e 74 5f 64 72 6f ..if.(need_drop_write)...mnt_dro
71e0 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 72 65 74 75 72 6e p_write_file(filp);.out:..return
7200 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 50 41 54 0a 6c 6f .ret;.}..#ifdef.CONFIG_COMPAT.lo
7220 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 65 20 ng.ncp_compat_ioctl(struct.file.
7240 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 6e 73 69 67 6e 65 *file,.unsigned.int.cmd,.unsigne
7260 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 09 61 72 67 20 3d d.long.arg).{..long.ret;...arg.=
7280 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 72 28 61 72 67 29 .(unsigned.long).compat_ptr(arg)
72a0 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 6d 64 2c 20 61 72 ;..ret.=.ncp_ioctl(file,.cmd,.ar
72c0 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 00 00 00 00 00 00 g);..return.ret;.}.#endif.......
72e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
73a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
73c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
73e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7400 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..........
7420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7460 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
7480 30 30 30 31 32 37 34 00 31 33 31 32 32 32 31 33 31 35 30 00 30 31 34 30 33 31 00 20 30 00 00 00 0001274.13122213150.014031..0...
74a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7500 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
7520 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
7540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
75a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
75c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
75e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7600 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
7620 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),
7640 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_
7660 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
7680 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
76a0 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
76c0 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.
76e0 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
7700 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_
7720 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.*
7740 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
7760 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
7780 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
77a0 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.
77c0 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.*
77e0 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
7800 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
7820 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
7840 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
7860 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
7880 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;..}.
78a0 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.....
78c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
78e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
79a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
79c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
79e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7a00 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..................
7a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7a60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
7a80 30 30 30 30 35 35 37 00 31 33 31 32 32 32 31 33 31 35 30 00 30 31 32 33 33 35 00 20 30 00 00 00 0000557.13122213150.012335..0...
7aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7b00 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
7b20 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
7b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7c00 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.
7c20 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
7c40 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
7c60 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
7c80 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.
7ca0 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
7cc0 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
7ce0 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
7d00 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
7d20 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
7d40 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
7d60 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.*/..................
7d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7e00 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...................
7e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7e60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
7e80 30 30 36 36 33 30 33 00 31 33 31 32 32 32 31 33 31 35 30 00 30 31 32 31 32 35 00 20 30 00 00 00 0066303.13122213150.012125..0...
7ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7f00 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
7f20 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
7f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8000 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.
8020 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
8040 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
8060 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
8080 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
80a0 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
80c0 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
80e0 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..*..
8100 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
8120 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
8140 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
8160 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
8180 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.
81a0 3c 6c 69 6e 75 78 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 <linux/uaccess.h>.#include.<asm/
81c0 62 79 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 byteorder.h>..#include.<linux/ti
81e0 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 3e 0a me.h>.#include.<linux/kernel.h>.
8200 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 20 3c #include.<linux/mm.h>.#include.<
8220 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 2f linux/string.h>.#include.<linux/
8240 73 74 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 stat.h>.#include.<linux/errno.h>
8260 0a 23 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 .#include.<linux/file.h>.#includ
8280 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 6c 69 6e 75 e.<linux/fcntl.h>.#include.<linu
82a0 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 2f 76 6d 61 6c 6c 6f x/slab.h>.#include.<linux/vmallo
82c0 63 2e 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 c.h>.#include.<linux/init.h>.#in
82e0 63 6c 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 clude.<linux/vfs.h>.#include.<li
8300 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 2f 73 65 71 nux/mount.h>.#include.<linux/seq
8320 5f 66 69 6c 65 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 73 63 68 65 64 2f 73 _file.h>.#include.<linux/sched/s
8340 69 67 6e 61 6c 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 ignal.h>.#include.<linux/namei.h
8360 3e 0a 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 >..#include.<net/sock.h>..#inclu
8380 64 65 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 de."ncp_fs.h".#include."getopt.h
83a0 22 0a 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 "..#define.NCP_DEFAULT_FILE_MODE
83c0 20 30 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 .0600.#define.NCP_DEFAULT_DIR_MO
83e0 44 45 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 DE.0700.#define.NCP_DEFAULT_TIME
8400 5f 4f 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 _OUT.10.#define.NCP_DEFAULT_RETR
8420 59 5f 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 Y_COUNT.20..static.void.ncp_evic
8440 74 5f 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 t_inode(struct.inode.*);.static.
8460 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 20 73 75 70 65 72 5f void.ncp_put_super(struct.super_
8480 62 6c 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 block.*);.static.int..ncp_statfs
84a0 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 6b 73 74 61 74 66 73 (struct.dentry.*,.struct.kstatfs
84c0 20 2a 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 .*);.static.int..ncp_show_option
84e0 73 28 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 s(struct.seq_file.*,.struct.dent
8500 72 79 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 ry.*);..static.struct.kmem_cache
8520 20 2a 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 .*.ncp_inode_cachep;..static.str
8540 75 63 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 uct.inode.*ncp_alloc_inode(struc
8560 74 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 t.super_block.*sb).{..struct.ncp
8580 5f 69 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 _inode_info.*ei;..ei.=.(struct.n
85a0 63 70 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 cp_inode_info.*)kmem_cache_alloc
85c0 28 6e 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 (ncp_inode_cachep,.GFP_KERNEL);.
85e0 09 69 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 .if.(!ei)...return.NULL;..return
8600 20 26 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 .&ei->vfs_inode;.}..static.void.
8620 6e 63 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 ncp_i_callback(struct.rcu_head.*
8640 68 65 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 head).{..struct.inode.*inode.=.c
8660 6f 6e 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 ontainer_of(head,.struct.inode,.
8680 69 5f 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 i_rcu);..kmem_cache_free(ncp_ino
86a0 64 65 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 de_cachep,.NCP_FINFO(inode));.}.
86c0 0a 73 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 .static.void.ncp_destroy_inode(s
86e0 74 72 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 truct.inode.*inode).{..call_rcu(
8700 26 69 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 &inode->i_rcu,.ncp_i_callback);.
8720 7d 0a 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 }..static.void.init_once(void.*f
8740 6f 6f 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 oo).{..struct.ncp_inode_info.*ei
8760 20 3d 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 .=.(struct.ncp_inode_info.*).foo
8780 3b 0a 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 ;...mutex_init(&ei->open_mutex);
87a0 0a 09 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 ..inode_init_once(&ei->vfs_inode
87c0 29 3b 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 );.}..static.int.init_inodecache
87e0 28 76 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 (void).{..ncp_inode_cachep.=.kme
8800 6d 5f 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 m_cache_create("ncp_inode_cache"
8820 2c 0a 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 ,...........sizeof(struct.ncp_in
8840 6f 64 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 ode_info),...........0,.(SLAB_RE
8860 43 4c 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 CLAIM_ACCOUNT|.......SLAB_MEM_SP
8880 52 45 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 READ|SLAB_ACCOUNT),...........in
88a0 69 74 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 it_once);..if.(ncp_inode_cachep.
88c0 3d 3d 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 ==.NULL)...return.-ENOMEM;..retu
88e0 72 6e 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 rn.0;.}..static.void.destroy_ino
8900 64 65 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 decache(void).{../*...*.Make.sur
8920 65 20 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 e.all.delayed.rcu.free.inodes.ar
8940 65 20 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 e.flushed.before.we...*.destroy.
8960 63 61 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 cache....*/..rcu_barrier();..kme
8980 6d 5f 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 m_cache_destroy(ncp_inode_cachep
89a0 29 3b 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 );.}..static.int.ncp_remount(str
89c0 75 63 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 uct.super_block.*sb,.int.*flags,
89e0 20 63 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 .char*.data).{..sync_filesystem(
8a00 73 62 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 sb);..*flags.|=.MS_NODIRATIME;..
8a20 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 63 74 return.0;.}..static.const.struct
8a40 20 73 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 .super_operations.ncp_sops.=.{..
8a60 2e 61 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 .alloc_inode.=.ncp_alloc_inode,.
8a80 09 2e 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 ..destroy_inode.=.ncp_destroy_in
8aa0 6f 64 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 ode,...drop_inode.=.generic_dele
8ac0 74 65 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 te_inode,...evict_inode.=.ncp_ev
8ae0 69 63 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 ict_inode,...put_super.=.ncp_put
8b00 5f 73 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 _super,...statfs..=.ncp_statfs,.
8b20 09 2e 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 ..remount_fs.=.ncp_remount,...sh
8b40 6f 77 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 ow_options.=.ncp_show_options,.}
8b60 3b 0a 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 ;../*..*.Fill.in.the.ncpfs-speci
8b80 66 69 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 fic.information.in.the.inode...*
8ba0 2f 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 69 72 65 6e 74 28 /.static.void.ncp_update_dirent(
8bc0 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 6e 63 70 5f struct.inode.*inode,.struct.ncp_
8be0 65 6e 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 entry_info.*nwinfo).{..NCP_FINFO
8c00 28 69 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 (inode)->DosDirNum.=.nwinfo->i.D
8c20 6f 73 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 osDirNum;..NCP_FINFO(inode)->dir
8c40 45 6e 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 EntNum.=.nwinfo->i.dirEntNum;..N
8c60 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 20 3d 20 6e 77 69 CP_FINFO(inode)->volNumber.=.nwi
8c80 6e 66 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 nfo->volume;.}..void.ncp_update_
8ca0 69 6e 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 inode(struct.inode.*inode,.struc
8cc0 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 09 6e 63 70 t.ncp_entry_info.*nwinfo).{..ncp
8ce0 5f 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 09 _update_dirent(inode,.nwinfo);..
8d00 4e 43 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 NCP_FINFO(inode)->nwattr.=.nwinf
8d20 6f 2d 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 o->i.attributes;..NCP_FINFO(inod
8d40 65 29 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 e)->access.=.nwinfo->access;..me
8d60 6d 63 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 mcpy(NCP_FINFO(inode)->file_hand
8d80 6c 65 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 le,.nwinfo->file_handle,....size
8da0 6f 66 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 of(nwinfo->file_handle));..ncp_d
8dc0 62 67 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 bg(1,."updated.%s,.volnum=%d,.di
8de0 72 65 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 rent=%u\n",...nwinfo->i.entryNam
8e00 65 2c 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 e,.NCP_FINFO(inode)->volNumber,.
8e20 09 09 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 ..NCP_FINFO(inode)->dirEntNum);.
8e40 7d 0a 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 }..static.void.ncp_update_dates(
8e60 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 6e 77 5f 69 struct.inode.*inode,.struct.nw_i
8e80 6e 66 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 nfo_struct.*nwi).{../*.NFS.names
8ea0 70 61 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 pace.mode.overrides.others.if.it
8ec0 27 73 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 's.set..*/..ncp_dbg(1,."(%s).nfs
8ee0 2e 6d 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 .mode=0%o\n",.nwi->entryName,.nw
8f00 69 2d 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 i->nfs.mode);..if.(nwi->nfs.mode
8f20 29 20 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 ).{.../*.XXX.Security?.*/...inod
8f40 65 2d 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 e->i_mode.=.nwi->nfs.mode;..}...
8f60 69 6e 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 inode->i_blocks.=.(i_size_read(i
8f80 6e 6f 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 node).+.NCP_BLOCK_SIZE.-.1).>>.N
8fa0 43 50 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 CP_BLOCK_SHIFT;...inode->i_mtime
8fc0 2e 74 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 .tv_sec.=.ncp_date_dos2unix(nwi-
8fe0 3e 6d 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 >modifyTime,.nwi->modifyDate);..
9000 69 6e 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 inode->i_ctime.tv_sec.=.ncp_date
9020 5f 64 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 _dos2unix(nwi->creationTime,.nwi
9040 2d 3e 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 ->creationDate);..inode->i_atime
9060 2e 74 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 .tv_sec.=.ncp_date_dos2unix(0,.n
9080 77 69 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 wi->lastAccessDate);..inode->i_a
90a0 74 69 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 time.tv_nsec.=.0;..inode->i_mtim
90c0 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 63 74 69 6d 65 2e 74 e.tv_nsec.=.0;..inode->i_ctime.t
90e0 76 5f 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 v_nsec.=.0;.}..static.void.ncp_u
9100 70 64 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 pdate_attrs(struct.inode.*inode,
9120 20 73 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 .struct.ncp_entry_info.*nwinfo).
9140 7b 0a 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 {..struct.nw_info_struct.*nwi.=.
9160 26 6e 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 &nwinfo->i;..struct.ncp_server.*
9180 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 0a 09 69 66 server.=.NCP_SERVER(inode);...if
91a0 20 28 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 .(nwi->attributes.&.aDIR).{...in
91c0 6f 64 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 ode->i_mode.=.server->m.dir_mode
91e0 3b 0a 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 ;.../*.for.directories.dataStrea
9200 6d 53 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 mSize.seems.to.be.some......Obje
9220 63 74 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 ct.ID.???.*/...i_size_write(inod
9240 65 2c 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 e,.NCP_BLOCK_SIZE);..}.else.{...
9260 75 33 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 u32.size;....inode->i_mode.=.ser
9280 76 65 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 ver->m.file_mode;...size.=.le32_
92a0 74 6f 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 to_cpu(nwi->dataStreamSize);...i
92c0 5f 73 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 _size_write(inode,.size);.#ifdef
92e0 20 43 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 .CONFIG_NCPFS_EXTRAS...if.((serv
9300 65 72 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 er->m.flags.&.(NCP_MOUNT_EXTRAS|
9320 4e 43 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 NCP_MOUNT_SYMLINKS)).....&&.(nwi
9340 2d 3e 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 ->attributes.&.aSHARED)).{....sw
9360 69 74 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 itch.(nwi->attributes.&.(aHIDDEN
9380 7c 61 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 |aSYSTEM)).{.....case.aHIDDEN:..
93a0 09 09 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 ....if.(server->m.flags.&.NCP_MO
93c0 55 4e 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 UNT_SYMLINKS).{.......if.(/*.(si
93e0 7a 65 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 ze.>=.NCP_MIN_SYMLINK_SIZE).....
9400 09 09 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 ...&&.*/.(size.<=.NCP_MAX_SYMLIN
9420 4b 5f 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 K_SIZE)).{........inode->i_mode.
9440 3d 20 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 =.(inode->i_mode.&.~S_IFMT).|.S_
9460 49 46 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 IFLNK;........NCP_FINFO(inode)->
9480 66 6c 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 flags.|=.NCPI_KLUDGE_SYMLINK;...
94a0 09 09 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 .....break;.......}......}......
94c0 2f 2a 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 /*.FALLTHROUGH.*/.....case.0:...
94e0 09 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 ...if.(server->m.flags.&.NCP_MOU
9500 4e 54 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 NT_EXTRAS).......inode->i_mode.|
9520 3d 20 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 =.S_IRUGO;......break;.....case.
9540 61 53 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 aSYSTEM:......if.(server->m.flag
9560 73 20 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 s.&.NCP_MOUNT_EXTRAS).......inod
9580 65 2d 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 e->i_mode.|=.(inode->i_mode.>>.2
95a0 29 20 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 ).&.S_IXUGO;......break;...../*.
95c0 63 61 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 case.aSYSTEM|aHIDDEN:.*/.....def
95e0 61 75 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 ault:....../*.reserved.combinati
9600 6f 6e 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 on.*/......break;....}...}.#endi
9620 66 0a 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 f..}..if.(nwi->attributes.&.aRON
9640 4c 59 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 LY).inode->i_mode.&=.~S_IWUGO;.}
9660 0a 0a 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 ..void.ncp_update_inode2(struct.
9680 69 6e 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 inode*.inode,.struct.ncp_entry_i
96a0 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 6e 6f 64 65 29 nfo.*nwinfo).{..NCP_FINFO(inode)
96c0 2d 3e 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 ->flags.=.0;..if.(!atomic_read(&
96e0 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 29 20 7b 0a 09 09 4e NCP_FINFO(inode)->opened)).{...N
9700 43 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 CP_FINFO(inode)->nwattr.=.nwinfo
9720 2d 3e 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 ->i.attributes;...ncp_update_att
9740 72 73 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 rs(inode,.nwinfo);..}...ncp_upda
9760 74 65 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 te_dates(inode,.&nwinfo->i);..nc
9780 70 5f 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 p_update_dirent(inode,.nwinfo);.
97a0 7d 0a 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 }../*..*.Fill.in.the.inode.based
97c0 20 6f 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 .on.the.ncp_entry_info.structure
97e0 2e 20 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 ...Used.only.for.brand.new.inode
9800 73 2e 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 s...*/.static.void.ncp_set_attr(
9820 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 6e 63 70 5f struct.inode.*inode,.struct.ncp_
9840 65 6e 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 entry_info.*nwinfo).{..struct.nc
9860 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
9880 6f 64 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 ode);...NCP_FINFO(inode)->flags.
98a0 3d 20 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 =.0;....ncp_update_attrs(inode,.
98c0 6e 77 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 nwinfo);...ncp_dbg(2,."inode->i_
98e0 6d 6f 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 mode.=.%u\n",.inode->i_mode);...
9900 73 65 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 set_nlink(inode,.1);..inode->i_u
9920 69 64 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 id.=.server->m.uid;..inode->i_gi
9940 64 20 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 d.=.server->m.gid;...ncp_update_
9960 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 75 dates(inode,.&nwinfo->i);..ncp_u
9980 70 64 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 pdate_inode(inode,.nwinfo);.}..#
99a0 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 53 29 20 if.defined(CONFIG_NCPFS_EXTRAS).
99c0 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 53 29 0a ||.defined(CONFIG_NCPFS_NFS_NS).
99e0 73 74 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 static.const.struct.inode_operat
9a00 69 6f 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 ions.ncp_symlink_inode_operation
9a20 73 20 3d 20 7b 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 s.=.{...get_link.=.page_get_link
9a40 2c 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 68 61 6e 67 65 2c ,...setattr.=.ncp_notify_change,
9a60 0a 7d 3b 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 .};.#endif../*..*.Get.a.new.inod
9a80 65 2e 0a 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 e...*/.struct.inode.*..ncp_iget(
9aa0 73 74 72 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 struct.super_block.*sb,.struct.n
9ac0 63 70 5f 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 cp_entry_info.*info).{..struct.i
9ae0 6e 6f 64 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 node.*inode;...if.(info.==.NULL)
9b00 20 7b 0a 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 .{...pr_err("%s:.info.is.NULL\n"
9b20 2c 20 5f 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 ,.__func__);...return.NULL;..}..
9b40 09 69 6e 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 .inode.=.new_inode(sb);..if.(ino
9b60 64 65 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 de).{...atomic_set(&NCP_FINFO(in
9b80 6f 64 65 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 ode)->opened,.info->opened);....
9ba0 69 6e 6f 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 inode->i_ino.=.info->ino;...ncp_
9bc0 73 65 74 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 set_attr(inode,.info);...if.(S_I
9be0 53 52 45 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 SREG(inode->i_mode)).{....inode-
9c00 3e 69 5f 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 >i_op.=.&ncp_file_inode_operatio
9c20 6e 73 3b 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 ns;....inode->i_fop.=.&ncp_file_
9c40 6f 70 65 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 operations;...}.else.if.(S_ISDIR
9c60 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 6f (inode->i_mode)).{....inode->i_o
9c80 70 20 3d 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 p.=.&ncp_dir_inode_operations;..
9ca0 09 09 69 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 ..inode->i_fop.=.&ncp_dir_operat
9cc0 69 6f 6e 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 ions;.#ifdef.CONFIG_NCPFS_NFS_NS
9ce0 0a 09 09 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 ...}.else.if.(S_ISCHR(inode->i_m
9d00 6f 64 65 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 ode).||.S_ISBLK(inode->i_mode).|
9d20 7c 20 53 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 |.S_ISFIFO(inode->i_mode).||.S_I
9d40 53 53 4f 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 SSOCK(inode->i_mode)).{....init_
9d60 73 70 65 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 special_inode(inode,.inode->i_mo
9d80 64 65 2c 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 de,.....new_decode_dev(info->i.n
9da0 66 73 2e 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 fs.rdev));.#endif.#if.defined(CO
9dc0 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 43 4f NFIG_NCPFS_EXTRAS).||.defined(CO
9de0 4e 46 49 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 NFIG_NCPFS_NFS_NS)...}.else.if.(
9e00 53 5f 49 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 S_ISLNK(inode->i_mode)).{....ino
9e20 64 65 2d 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 de->i_op.=.&ncp_symlink_inode_op
9e40 65 72 61 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 erations;....inode_nohighmem(ino
9e60 64 65 29 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 de);....inode->i_data.a_ops.=.&n
9e80 63 70 5f 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 cp_symlink_aops;.#endif...}.else
9ea0 20 7b 0a 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 .{....make_bad_inode(inode);...}
9ec0 0a 09 09 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 ...insert_inode_hash(inode);..}.
9ee0 65 6c 73 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 else...pr_err("%s:.iget.failed!\
9f00 6e 22 2c 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 n",.__func__);..return.inode;.}.
9f20 0a 73 74 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 .static.void.ncp_evict_inode(str
9f40 75 63 74 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 uct.inode.*inode).{..truncate_in
9f60 6f 64 65 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 ode_pages_final(&inode->i_data);
9f80 0a 09 63 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 ..clear_inode(inode);...if.(S_IS
9fa0 44 49 52 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 DIR(inode->i_mode)).{...ncp_dbg(
9fc0 32 2c 20 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 2,."put.directory.%ld\n",.inode-
9fe0 3e 69 5f 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 >i_ino);..}...if.(ncp_make_close
a000 64 28 69 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 d(inode).!=.0).{.../*.We.can't.d
a020 6f 20 61 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 o.anything.but.complain..*/...pr
a040 5f 65 72 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 _err("%s:.could.not.close\n",.__
a060 66 75 6e 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 func__);..}.}..static.void.ncp_s
a080 74 6f 70 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 top_tasks(struct.ncp_server.*ser
a0a0 76 65 72 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 ver).{..struct.sock*.sk.=.server
a0c0 2d 3e 6e 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 ->ncp_sock->sk;...lock_sock(sk);
a0e0 0a 09 73 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 ..sk->sk_error_report.=.server->
a100 65 72 72 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 error_report;..sk->sk_data_ready
a120 20 20 20 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 ...=.server->data_ready;..sk->sk
a140 5f 77 72 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 _write_space..=.server->write_sp
a160 61 63 65 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 ace;..release_sock(sk);..del_tim
a180 65 72 5f 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 er_sync(&server->timeout_tm);...
a1a0 66 6c 75 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 flush_work(&server->rcv.tq);..if
a1c0 20 28 73 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 .(sk->sk_socket->type.==.SOCK_ST
a1e0 52 45 41 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 REAM)...flush_work(&server->tx.t
a200 71 29 3b 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 q);..else...flush_work(&server->
a220 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 74 20 20 6e 63 70 5f timeout_tq);.}..static.int..ncp_
a240 73 68 6f 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 show_options(struct.seq_file.*se
a260 71 2c 20 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 q,.struct.dentry.*root).{..struc
a280 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 42 50 28 72 t.ncp_server.*server.=.NCP_SBP(r
a2a0 6f 6f 74 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 oot->d_sb);..unsigned.int.tmp;..
a2c0 09 69 66 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 .if.(!uid_eq(server->m.uid,.GLOB
a2e0 41 4c 5f 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 AL_ROOT_UID))...seq_printf(seq,.
a300 22 2c 75 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 ",uid=%u",.......from_kuid_munge
a320 64 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 75 69 64 29 29 d(&init_user_ns,.server->m.uid))
a340 3b 0a 09 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 ;..if.(!gid_eq(server->m.gid,.GL
a360 4f 42 41 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 OBAL_ROOT_GID))...seq_printf(seq
a380 2c 20 22 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 ,.",gid=%u",.......from_kgid_mun
a3a0 67 65 64 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 ged(&init_user_ns,.server->m.gid
a3c0 29 29 3b 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 ));..if.(!uid_eq(server->m.mount
a3e0 65 64 5f 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 ed_uid,.GLOBAL_ROOT_UID))...seq_
a400 70 72 69 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 printf(seq,.",owner=%u",.......f
a420 72 6f 6d 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 rom_kuid_munged(&init_user_ns,.s
a440 65 72 76 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 erver->m.mounted_uid));..tmp.=.s
a460 65 72 76 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 erver->m.file_mode.&.S_IALLUGO;.
a480 09 69 66 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 .if.(tmp.!=.NCP_DEFAULT_FILE_MOD
a4a0 45 29 0a 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 E)...seq_printf(seq,.",mode=0%o"
a4c0 2c 20 74 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 ,.tmp);..tmp.=.server->m.dir_mod
a4e0 65 20 26 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 e.&.S_IALLUGO;..if.(tmp.!=.NCP_D
a500 45 46 41 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 EFAULT_DIR_MODE)...seq_printf(se
a520 71 2c 20 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 q,.",dirmode=0%o",.tmp);..if.(se
a540 72 76 65 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 rver->m.time_out.!=.NCP_DEFAULT_
a560 54 49 4d 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 TIME_OUT.*.HZ./.100).{...tmp.=.s
a580 65 72 76 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 erver->m.time_out.*.100./.HZ;...
a5a0 73 65 71 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 seq_printf(seq,.",timeout=%u",.t
a5c0 6d 70 29 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 mp);..}..if.(server->m.retry_cou
a5e0 6e 74 20 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 nt.!=.NCP_DEFAULT_RETRY_COUNT)..
a600 09 73 65 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 .seq_printf(seq,.",retry=%u",.se
a620 72 76 65 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 rver->m.retry_count);..if.(serve
a640 72 2d 3e 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 r->m.flags.!=.0)...seq_printf(se
a660 71 2c 20 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 q,.",flags=%lu",.server->m.flags
a680 29 3b 0a 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 );..if.(server->m.wdog_pid.!=.NU
a6a0 4c 4c 29 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 LL)...seq_printf(seq,.",wdogpid=
a6c0 25 75 22 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 %u",.pid_vnr(server->m.wdog_pid)
a6e0 29 3b 0a 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 );...return.0;.}..static.const.s
a700 74 72 75 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 truct.ncp_option.ncp_opts[].=.{.
a720 09 7b 20 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 .{."uid",.OPT_INT,.'u'.},..{."gi
a740 64 22 2c 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 d",.OPT_INT,.'g'.},..{."owner",.
a760 4f 50 54 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 OPT_INT,.'o'.},..{."mode",.OPT_I
a780 4e 54 2c 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 NT,.'m'.},..{."dirmode",.OPT_INT
a7a0 2c 09 27 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 ,.'d'.},..{."timeout",.OPT_INT,.
a7c0 27 74 27 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 't'.},..{."retry",.OPT_INT,.'r'.
a7e0 7d 2c 0a 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 },..{."flags",.OPT_INT,.'f'.},..
a800 7b 20 22 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 {."wdogpid",.OPT_INT,.'w'.},..{.
a820 22 6e 63 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 "ncpfd",.OPT_INT,.'n'.},..{."inf
a840 6f 66 64 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 ofd",.OPT_INT,.'i'.},./*.v5.*/..
a860 7b 20 22 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 {."version",.OPT_INT,.'v'.},..{.
a880 4e 55 4c 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 NULL,..0,..0.}.};..static.int.nc
a8a0 70 5f 70 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 p_parse_options(struct.ncp_mount
a8c0 5f 64 61 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 _data_kernel.*data,.char.*option
a8e0 73 29 20 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 s).{..int.optval;..char.*optarg;
a900 0a 09 75 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 ..unsigned.long.optint;..int.ver
a920 73 69 6f 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 sion.=.0;..int.ret;...data->flag
a940 73 20 3d 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 s.=.0;..data->int_flags.=.0;..da
a960 74 61 2d 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 ta->mounted_uid.=.GLOBAL_ROOT_UI
a980 44 3b 0a 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 D;..data->wdog_pid.=.NULL;..data
a9a0 2d 3e 6e 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 ->ncp_fd.=.~0;..data->time_out.=
a9c0 20 4e 43 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 .NCP_DEFAULT_TIME_OUT;..data->re
a9e0 74 72 79 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 try_count.=.NCP_DEFAULT_RETRY_CO
aa00 55 4e 54 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 UNT;..data->uid.=.GLOBAL_ROOT_UI
aa20 44 3b 0a 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 D;..data->gid.=.GLOBAL_ROOT_GID;
aa40 0a 09 64 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 ..data->file_mode.=.NCP_DEFAULT_
aa60 46 49 4c 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 FILE_MODE;..data->dir_mode.=.NCP
aa80 5f 44 45 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 _DEFAULT_DIR_MODE;..data->info_f
aaa0 64 20 3d 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 d.=.-1;..data->mounted_vol[0].=.
aac0 30 3b 0a 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 0;....while.((optval.=.ncp_getop
aae0 74 28 22 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 t("ncpfs",.&options,.ncp_opts,.N
ab00 55 4c 4c 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 ULL,.&optarg,.&optint)).!=.0).{.
ab20 09 09 72 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 ..ret.=.optval;...if.(ret.<.0)..
ab40 09 09 67 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 ..goto.err;...switch.(optval).{.
ab60 09 09 09 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 ...case.'u':.....data->uid.=.mak
ab80 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 6f 70 74 69 6e 74 e_kuid(current_user_ns(),.optint
aba0 29 3b 0a 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 );.....if.(!uid_valid(data->uid)
abc0 29 20 7b 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 ).{......ret.=.-EINVAL;......got
abe0 6f 20 65 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 o.err;.....}.....break;....case.
ac00 27 67 27 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 'g':.....data->gid.=.make_kgid(c
ac20 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 09 09 09 09 69 urrent_user_ns(),.optint);.....i
ac40 66 20 28 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 f.(!gid_valid(data->gid)).{.....
ac60 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 72 72 3b 0a 09 .ret.=.-EINVAL;......goto.err;..
ac80 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 6f 27 3a 0a 09 09 09 ...}.....break;....case.'o':....
aca0 09 64 61 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 .data->mounted_uid.=.make_kuid(c
acc0 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 09 09 09 09 69 urrent_user_ns(),.optint);.....i
ace0 66 20 28 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 f.(!uid_valid(data->mounted_uid)
ad00 29 20 7b 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 ).{......ret.=.-EINVAL;......got
ad20 6f 20 65 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 o.err;.....}.....break;....case.
ad40 27 6d 27 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 'm':.....data->file_mode.=.optin
ad60 74 3b 0a 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 t;.....break;....case.'d':.....d
ad80 61 74 61 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 ata->dir_mode.=.optint;.....brea
ada0 6b 3b 0a 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 k;....case.'t':.....data->time_o
adc0 75 74 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 63 61 73 65 20 ut.=.optint;.....break;....case.
ade0 27 72 27 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 'r':.....data->retry_count.=.opt
ae00 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 66 27 3a 0a 09 09 09 int;.....break;....case.'f':....
ae20 09 64 61 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 .data->flags.=.optint;.....break
ae40 3b 0a 09 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 ;....case.'w':.....data->wdog_pi
ae60 64 20 3d 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 d.=.find_get_pid(optint);.....br
ae80 65 61 6b 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 eak;....case.'n':.....data->ncp_
aea0 66 64 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 63 61 73 65 20 fd.=.optint;.....break;....case.
aec0 27 69 27 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 'i':.....data->info_fd.=.optint;
aee0 0a 09 09 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 .....break;....case.'v':.....ret
af00 20 3d 20 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 .=.-ECHRNG;.....if.(optint.<.NCP
af20 5f 4d 4f 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 _MOUNT_VERSION_V4)......goto.err
af40 3b 0a 09 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 ;.....if.(optint.>.NCP_MOUNT_VER
af60 53 49 4f 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 SION_V5)......goto.err;.....vers
af80 69 6f 6e 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 ion.=.optint;.....break;.......}
afa0 0a 09 7d 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 ..}..return.0;.err:..put_pid(dat
afc0 61 2d 3e 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 a->wdog_pid);..data->wdog_pid.=.
afe0 4e 55 4c 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 NULL;..return.ret;.}..static.int
b000 20 6e 63 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 .ncp_fill_super(struct.super_blo
b020 63 6b 20 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 ck.*sb,.void.*raw_data,.int.sile
b040 6e 74 29 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 nt).{..struct.ncp_mount_data_ker
b060 6e 65 6c 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 nel.data;..struct.ncp_server.*se
b080 72 76 65 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 rver;..struct.inode.*root_inode;
b0a0 0a 09 73 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 ..struct.socket.*sock;..int.erro
b0c0 72 3b 0a 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 r;..int.default_bufsize;.#ifdef.
b0e0 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 0a 09 69 6e 74 CONFIG_NCPFS_PACKET_SIGNING..int
b100 20 6f 70 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 .options;.#endif..struct.ncp_ent
b120 72 79 5f 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 ry_info.finfo;...memset(&data,.0
b140 2c 20 73 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 ,.sizeof(data));..server.=.kzall
b160 6f 63 28 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 oc(sizeof(struct.ncp_server),.GF
b180 50 5f 4b 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 P_KERNEL);..if.(!server)...retur
b1a0 6e 20 2d 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 n.-ENOMEM;..sb->s_fs_info.=.serv
b1c0 65 72 3b 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 er;...error.=.-EFAULT;..if.(raw_
b1e0 64 61 74 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 data.==.NULL)...goto.out;..switc
b200 68 20 28 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 h.(*(int*)raw_data).{...case.NCP
b220 5f 4d 4f 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 _MOUNT_VERSION:....{.....struct.
b240 6e 63 70 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 ncp_mount_data*.md.=.(struct.ncp
b260 5f 6d 6f 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 _mount_data*)raw_data;......data
b280 2e 66 6c 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 .flags.=.md->flags;.....data.int
b2a0 5f 66 6c 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 _flags.=.NCP_IMOUNT_LOGGEDIN_POS
b2c0 53 49 42 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 SIBLE;.....data.mounted_uid.=.ma
b2e0 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 6d ke_kuid(current_user_ns(),.md->m
b300 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 3d ounted_uid);.....data.wdog_pid.=
b320 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 09 .find_get_pid(md->wdog_pid);....
b340 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 64 .data.ncp_fd.=.md->ncp_fd;.....d
b360 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 09 ata.time_out.=.md->time_out;....
b380 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 6f .data.retry_count.=.md->retry_co
b3a0 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 75 unt;.....data.uid.=.make_kuid(cu
b3c0 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 64 rrent_user_ns(),.md->uid);.....d
b3e0 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 72 ata.gid.=.make_kgid(current_user
b400 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 6d _ns(),.md->gid);.....data.file_m
b420 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 69 ode.=.md->file_mode;.....data.di
b440 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 2e r_mode.=.md->dir_mode;.....data.
b460 69 6e 66 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 info_fd.=.-1;.....memcpy(data.mo
b480 75 6e 74 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 unted_vol,.md->mounted_vol,.....
b4a0 09 4e 43 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 .NCP_VOLNAME_LEN+1);....}....bre
b4c0 61 6b 3b 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 ak;...case.NCP_MOUNT_VERSION_V4:
b4e0 0a 09 09 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 ....{.....struct.ncp_mount_data_
b500 76 34 2a 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 v4*.md.=.(struct.ncp_mount_data_
b520 76 34 2a 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 v4*)raw_data;......data.flags.=.
b540 6d 64 2d 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 md->flags;.....data.mounted_uid.
b560 3d 20 6d 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 =.make_kuid(current_user_ns(),.m
b580 64 2d 3e 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 d->mounted_uid);.....data.wdog_p
b5a0 69 64 20 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 id.=.find_get_pid(md->wdog_pid);
b5c0 0a 09 09 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 .....data.ncp_fd.=.md->ncp_fd;..
b5e0 09 09 09 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 ...data.time_out.=.md->time_out;
b600 0a 09 09 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 .....data.retry_count.=.md->retr
b620 79 5f 63 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 y_count;.....data.uid.=.make_kui
b640 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 75 69 64 29 3b 0a 09 d(current_user_ns(),.md->uid);..
b660 09 09 09 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 ...data.gid.=.make_kgid(current_
b680 75 73 65 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 user_ns(),.md->gid);.....data.fi
b6a0 6c 65 5f 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 le_mode.=.md->file_mode;.....dat
b6c0 61 2e 64 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 a.dir_mode.=.md->dir_mode;.....d
b6e0 61 74 61 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 ata.info_fd.=.-1;....}....break;
b700 0a 09 09 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 ...default:....error.=.-ECHRNG;.
b720 09 09 09 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 ...if.(memcmp(raw_data,."vers",.
b740 34 29 20 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 4).==.0).{.....error.=.ncp_parse
b760 5f 6f 70 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 _options(&data,.raw_data);....}.
b780 09 09 09 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 ...if.(error).....goto.out;....b
b7a0 72 65 61 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 reak;..}..error.=.-EINVAL;..if.(
b7c0 21 75 69 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 !uid_valid(data.mounted_uid).||.
b7e0 21 75 69 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 !uid_valid(data.uid).||......!gi
b800 64 5f 76 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 d_valid(data.gid))...goto.out;..
b820 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 6e 63 70 5f 66 64 sock.=.sockfd_lookup(data.ncp_fd
b840 2c 20 26 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 ,.&error);..if.(!sock)...goto.ou
b860 74 3b 0a 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 t;...if.(sock->type.==.SOCK_STRE
b880 41 4d 29 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 AM)...default_bufsize.=.0xF000;.
b8a0 09 65 6c 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 .else...default_bufsize.=.1024;.
b8c0 0a 09 73 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 ..sb->s_flags.|=.MS_NODIRATIME;.
b8e0 2f 2a 20 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 /*.probably.even.noatime.*/..sb-
b900 3e 73 5f 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 >s_maxbytes.=.0xFFFFFFFFU;..sb->
b920 73 5f 62 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 s_blocksize.=.1024;./*.Eh.....Is
b940 20 74 68 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 .this.correct?.*/..sb->s_blocksi
b960 7a 65 5f 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 ze_bits.=.10;..sb->s_magic.=.NCP
b980 5f 53 55 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 _SUPER_MAGIC;..sb->s_op.=.&ncp_s
b9a0 6f 70 73 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 ops;..sb->s_d_op.=.&ncp_dentry_o
b9c0 70 65 72 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 perations;..sb->s_bdi.=.&server-
b9e0 3e 62 64 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 >bdi;...server.=.NCP_SBP(sb);..m
ba00 65 6d 73 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 emset(server,.0,.sizeof(*server)
ba20 29 3b 0a 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 );...error.=.bdi_setup_and_regis
ba40 74 65 72 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 ter(&server->bdi,."ncpfs");..if.
ba60 28 65 72 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 (error)...goto.out_fput;...serve
ba80 72 2d 3e 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 r->ncp_sock.=.sock;....if.(data.
baa0 69 6e 66 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 info_fd.!=.-1).{...struct.socket
bac0 20 2a 69 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 .*info_sock.=.sockfd_lookup(data
bae0 2e 69 6e 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 .info_fd,.&error);...if.(!info_s
bb00 6f 63 6b 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 ock)....goto.out_bdi;...server->
bb20 69 6e 66 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 info_sock.=.info_sock;...error.=
bb40 20 2d 45 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 .-EBADFD;...if.(info_sock->type.
bb60 21 3d 20 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 !=.SOCK_STREAM)....goto.out_fput
bb80 32 3b 0a 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 2;..}../*.server->lock.=.0;.*/..
bba0 6d 75 74 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 mutex_init(&server->mutex);..ser
bbc0 76 65 72 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 ver->packet.=.NULL;./*.server->b
bbe0 75 66 66 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 uffer_size.=.0;.*/./*.server->co
bc00 6e 6e 5f 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 nn_status.=.0;.*/./*.server->roo
bc20 74 5f 64 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 t_dentry.=.NULL;.*/./*.server->r
bc40 6f 6f 74 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 oot_setuped.=.0;.*/..mutex_init(
bc60 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 23 69 66 64 65 &server->root_setup_lock);.#ifde
bc80 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 0a 2f 2a f.CONFIG_NCPFS_PACKET_SIGNING./*
bca0 09 73 65 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 .server->sign_wanted.=.0;.*/./*.
bcc0 73 65 72 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 server->sign_active.=.0;.*/.#end
bce0 69 66 0a 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 if..init_rwsem(&server->auth_rws
bd00 65 6d 29 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 em);..server->auth.auth_type.=.N
bd20 43 50 5f 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 CP_AUTH_NONE;./*.server->auth.ob
bd40 6a 65 63 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 ject_name_len.=.0;.*/./*.server-
bd60 3e 61 75 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 >auth.object_name.=.NULL;.*/./*.
bd80 73 65 72 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 server->auth.object_type.=.0;..*
bda0 2f 0a 2f 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 /./*.server->priv.len.=.0;...*/.
bdc0 2f 2a 09 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 /*.server->priv.data.=.NULL;..*/
bde0 0a 0a 09 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 ...server->m.=.data;../*.Althoug
be00 68 20 61 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 h.anything.producing.this.is.bug
be20 67 79 2c 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 gy,.it.happens.....now.because.o
be40 66 20 50 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 f.PATH_MAX.changes...*/..if.(ser
be60 76 65 72 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 ver->m.time_out.<.1).{...server-
be80 3e 6d 2e 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 >m.time_out.=.10;...pr_info("You
bea0 20 6e 65 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 .need.to.recompile.your.ncpfs.ut
bec0 69 6c 73 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 ils..\n");..}..server->m.time_ou
bee0 74 20 3d 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 t.=.server->m.time_out.*.HZ./.10
bf00 30 3b 0a 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 0;..server->m.file_mode.=.(serve
bf20 72 2d 3e 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 r->m.file_mode.&.S_IRWXUGO).|.S_
bf40 49 46 52 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 IFREG;..server->m.dir_mode.=.(se
bf60 72 76 65 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 rver->m.dir_mode.&.S_IRWXUGO).|.
bf80 53 5f 49 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 S_IFDIR;..#ifdef.CONFIG_NCPFS_NL
bfa0 53 0a 09 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 S../*.load.the.default.NLS.chars
bfc0 65 74 73 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 ets.*/..server->nls_vol.=.load_n
bfe0 6c 73 5f 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 ls_default();..server->nls_io.=.
c000 6c 6f 61 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 load_nls_default();.#endif./*.CO
c020 4e 46 49 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 NFIG_NCPFS_NLS.*/...atomic_set(&
c040 73 65 72 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 server->dentry_ttl,.0);./*.no.ca
c060 63 68 69 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 ching.*/...INIT_LIST_HEAD(&serve
c080 72 2d 3e 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 r->tx.requests);..mutex_init(&se
c0a0 72 76 65 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 rver->rcv.creq_mutex);..server->
c0c0 74 78 2e 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 tx.creq..=.NULL;..server->rcv.cr
c0e0 65 71 09 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 eq.=.NULL;...init_timer(&server-
c100 3e 74 69 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 >timeout_tm);.#undef.NCP_PACKET_
c120 53 49 5a 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 SIZE.#define.NCP_PACKET_SIZE.131
c140 30 37 32 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 072..error.=.-ENOMEM;..server->p
c160 61 63 6b 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 acket_size.=.NCP_PACKET_SIZE;..s
c180 65 72 76 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 erver->packet.=.vmalloc(NCP_PACK
c1a0 45 54 5f 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 ET_SIZE);..if.(server->packet.==
c1c0 20 4e 55 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 .NULL)...goto.out_nls;..server->
c1e0 74 78 62 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 txbuf.=.vmalloc(NCP_PACKET_SIZE)
c200 3b 0a 09 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 ;..if.(server->txbuf.==.NULL)...
c220 67 6f 74 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 goto.out_packet;..server->rxbuf.
c240 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 69 66 20 =.vmalloc(NCP_PACKET_SIZE);..if.
c260 28 73 65 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 (server->rxbuf.==.NULL)...goto.o
c280 75 74 5f 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 ut_txbuf;...lock_sock(sock->sk);
c2a0 0a 09 73 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 ..server->data_ready.=.sock->sk-
c2c0 3e 73 6b 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 >sk_data_ready;..server->write_s
c2e0 70 61 63 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 pace.=.sock->sk->sk_write_space;
c300 0a 09 73 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 ..server->error_report.=.sock->s
c320 6b 2d 3e 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 k->sk_error_report;..sock->sk->s
c340 6b 5f 75 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 k_user_data.=.server;..sock->sk-
c360 3e 73 6b 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 >sk_data_ready...=.ncp_tcp_data_
c380 72 65 61 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 ready;..sock->sk->sk_error_repor
c3a0 74 20 3d 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 t.=.ncp_tcp_error_report;..if.(s
c3c0 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 20 7b 0a 09 09 73 65 ock->type.==.SOCK_STREAM).{...se
c3e0 72 76 65 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 rver->rcv.ptr.=.(unsigned.char*)
c400 26 73 65 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 &server->rcv.buf;...server->rcv.
c420 6c 65 6e 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 len.=.10;...server->rcv.state.=.
c440 30 3b 0a 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 0;...INIT_WORK(&server->rcv.tq,.
c460 6e 63 70 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 ncp_tcp_rcv_proc);...INIT_WORK(&
c480 73 65 72 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 server->tx.tq,.ncp_tcp_tx_proc);
c4a0 0a 09 09 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 ...sock->sk->sk_write_space.=.nc
c4c0 70 5f 74 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 p_tcp_write_space;..}.else.{...I
c4e0 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 64 67 72 NIT_WORK(&server->rcv.tq,.ncpdgr
c500 61 6d 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 76 65 am_rcv_proc);...INIT_WORK(&serve
c520 72 2d 3e 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 r->timeout_tq,.ncpdgram_timeout_
c540 70 72 6f 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 proc);...server->timeout_tm.data
c560 20 3d 20 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 .=.(unsigned.long)server;...serv
c580 65 72 2d 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 er->timeout_tm.function.=.ncpdgr
c5a0 61 6d 5f 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 am_timeout_call;..}..release_soc
c5c0 6b 28 73 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 k(sock->sk);...ncp_lock_server(s
c5e0 65 72 76 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 erver);..error.=.ncp_connect(ser
c600 76 65 72 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 ver);..ncp_unlock_server(server)
c620 3b 0a 09 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 ;..if.(error.<.0)...goto.out_rxb
c640 75 66 3b 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 uf;..ncp_dbg(1,."NCP_SBP(sb).=.%
c660 70 5c 6e 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 p\n",.NCP_SBP(sb));...error.=.-E
c680 4d 53 47 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 MSGSIZE;./*.-EREMOTESIDEINCOMPAT
c6a0 49 42 4c 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 IBLE.*/.#ifdef.CONFIG_NCPFS_PACK
c6c0 45 54 5f 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 ET_SIGNING..if.(ncp_negotiate_si
c6e0 7a 65 5f 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 ze_and_options(server,.default_b
c700 75 66 73 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 ufsize,...NCP_DEFAULT_OPTIONS,.&
c720 28 73 65 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 (server->buffer_size),.&options)
c740 20 3d 3d 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 .==.0)..{...if.(options.!=.NCP_D
c760 45 46 41 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 EFAULT_OPTIONS)...{....if.(ncp_n
c780 65 67 6f 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 egotiate_size_and_options(server
c7a0 2c 20 0a 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 ,......default_bufsize,.....opti
c7c0 6f 6e 73 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 ons.&.2,......&(server->buffer_s
c7e0 69 7a 65 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 ize),.&options).!=.0).........{.
c800 09 09 09 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 ....goto.out_disconnect;....}...
c820 7d 0a 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 3b 0a 09 09 69 }...ncp_lock_server(server);...i
c840 66 20 28 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 f.(options.&.2)....server->sign_
c860 77 61 6e 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 wanted.=.1;...ncp_unlock_server(
c880 73 65 72 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 server);..}..else..#endif./*.CON
c8a0 46 49 47 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 FIG_NCPFS_PACKET_SIGNING.*/..if.
c8c0 28 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 65 72 76 65 72 (ncp_negotiate_buffersize(server
c8e0 2c 20 64 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 ,.default_bufsize,............&(
c900 73 65 72 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 server->buffer_size)).!=.0)...go
c920 74 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 to.out_disconnect;..ncp_dbg(1,."
c940 62 75 66 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 bufsize.=.%d\n",.server->buffer_
c960 73 69 7a 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 size);...memset(&finfo,.0,.sizeo
c980 66 28 66 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 f(finfo));..finfo.i.attributes.=
c9a0 20 61 44 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 .aDIR;..finfo.i.dataStreamSize.=
c9c0 20 30 3b 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 .0;./*.ignored.*/..finfo.i.dirEn
c9e0 74 4e 75 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 tNum.=.0;..finfo.i.DosDirNum.=.0
ca00 3b 0a 23 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 ;.#ifdef.CONFIG_NCPFS_SMALLDOS..
ca20 66 69 6e 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 finfo.i.NSCreator.=.NW_NS_DOS;.#
ca40 65 6e 64 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 endif..finfo.volume..=.NCP_NUMBE
ca60 52 5f 4f 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 R_OF_VOLUMES;../*.set.dates.of.m
ca80 6f 75 6e 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 ountpoint.to.Jan.1,.1986;.00:00.
caa0 2a 2f 0a 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 */..finfo.i.creationTime.=.finfo
cac0 2e 69 2e 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 .i.modifyTime.....=.cpu_to_le16(
cae0 30 78 30 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 0x0000);..finfo.i.creationDate.=
cb00 20 66 69 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 .finfo.i.modifyDate.....=.finfo.
cb20 69 2e 6c 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 i.lastAccessDate.....=.cpu_to_le
cb40 31 36 28 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 16(0x0C21);..finfo.i.nameLen..=.
cb60 30 3b 0a 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 0;..finfo.i.entryName[0].=.'\0';
cb80 0a 0a 09 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 ...finfo.opened..=.0;..finfo.ino
cba0 09 09 3d 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 ..=.2;./*.tradition.*/...server-
cbc0 3e 6e 61 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 >name_space[finfo.volume].=.NW_N
cbe0 53 5f 44 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 S_DOS;...error.=.-ENOMEM;.......
cc00 20 20 72 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 ..root_inode.=.ncp_iget(sb,.&fin
cc20 66 6f 29 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 fo);.........if.(!root_inode)...
cc40 67 6f 74 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 goto.out_disconnect;..ncp_dbg(1,
cc60 20 22 72 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 ."root.vol=%d\n",.NCP_FINFO(root
cc80 5f 69 6e 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 _inode)->volNumber);..sb->s_root
cca0 20 3d 20 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 .=.d_make_root(root_inode);.....
ccc0 20 20 20 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 ....if.(!sb->s_root)...goto.out_
cce0 64 69 73 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 disconnect;..return.0;..out_disc
cd00 6f 6e 6e 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 onnect:..ncp_lock_server(server)
cd20 3b 0a 09 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 ;..ncp_disconnect(server);..ncp_
cd40 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 5f 72 78 62 75 66 unlock_server(server);.out_rxbuf
cd60 3a 0a 09 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 :..ncp_stop_tasks(server);..vfre
cd80 65 28 73 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 e(server->rxbuf);.out_txbuf:..vf
cda0 72 65 65 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 ree(server->txbuf);.out_packet:.
cdc0 09 76 66 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 .vfree(server->packet);.out_nls:
cde0 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 75 6e 6c 6f 61 64 .#ifdef.CONFIG_NCPFS_NLS..unload
ce00 5f 6e 6c 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 _nls(server->nls_io);..unload_nl
ce20 73 28 73 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 s(server->nls_vol);.#endif..mute
ce40 78 5f 64 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 x_destroy(&server->rcv.creq_mute
ce60 78 29 3b 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 x);..mutex_destroy(&server->root
ce80 5f 73 65 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 _setup_lock);..mutex_destroy(&se
cea0 72 76 65 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 rver->mutex);.out_fput2:..if.(se
cec0 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 74 28 73 65 rver->info_sock)...sockfd_put(se
cee0 72 76 65 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 rver->info_sock);.out_bdi:..bdi_
cf00 64 65 73 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 destroy(&server->bdi);.out_fput:
cf20 0a 09 73 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 ..sockfd_put(sock);.out:..put_pi
cf40 64 28 64 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 d(data.wdog_pid);..sb->s_fs_info
cf60 20 3d 20 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 .=.NULL;..kfree(server);..return
cf80 20 65 72 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 .error;.}..static.void.delayed_f
cfa0 72 65 65 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 ree(struct.rcu_head.*p).{..struc
cfc0 74 20 6e 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 t.ncp_server.*server.=.container
cfe0 5f 6f 66 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 _of(p,.struct.ncp_server,.rcu);.
d000 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 2f 2a 20 75 6e 6c 6f #ifdef.CONFIG_NCPFS_NLS../*.unlo
d020 61 64 20 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 ad.the.NLS.charsets.*/..unload_n
d040 6c 73 28 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 ls(server->nls_vol);..unload_nls
d060 28 73 65 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 (server->nls_io);.#endif./*.CONF
d080 49 47 5f 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 IG_NCPFS_NLS.*/..kfree(server);.
d0a0 7d 0a 0a 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 }..static.void.ncp_put_super(str
d0c0 75 63 74 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 uct.super_block.*sb).{..struct.n
d0e0 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 73 62 29 3b cp_server.*server.=.NCP_SBP(sb);
d100 0a 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 6e 63 70 ...ncp_lock_server(server);..ncp
d120 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 6f 63 6b _disconnect(server);..ncp_unlock
d140 5f 73 65 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 _server(server);...ncp_stop_task
d160 73 28 73 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 s(server);...mutex_destroy(&serv
d180 65 72 2d 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 er->rcv.creq_mutex);..mutex_dest
d1a0 72 6f 79 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 roy(&server->root_setup_lock);..
d1c0 6d 75 74 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 mutex_destroy(&server->mutex);..
d1e0 09 69 66 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 .if.(server->info_sock)...sockfd
d200 5f 70 75 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 _put(server->info_sock);..sockfd
d220 5f 70 75 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 _put(server->ncp_sock);..kill_pi
d240 64 28 73 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 d(server->m.wdog_pid,.SIGTERM,.1
d260 29 3b 0a 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 );..put_pid(server->m.wdog_pid);
d280 0a 0a 09 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 ...bdi_destroy(&server->bdi);..k
d2a0 66 72 65 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 free(server->priv.data);..kfree(
d2c0 73 65 72 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 server->auth.object_name);..vfre
d2e0 65 28 73 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 e(server->rxbuf);..vfree(server-
d300 3e 74 78 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 >txbuf);..vfree(server->packet);
d320 0a 09 63 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 ..call_rcu(&server->rcu,.delayed
d340 5f 66 72 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 _free);.}..static.int.ncp_statfs
d360 28 73 74 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 (struct.dentry.*dentry,.struct.k
d380 73 74 61 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 statfs.*buf).{..struct.dentry*.d
d3a0 3b 0a 09 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 ;..struct.inode*.i;..struct.ncp_
d3c0 69 6e 6f 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 inode_info*.ni;..struct.ncp_serv
d3e0 65 72 2a 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 er*.s;..struct.ncp_volume_info.v
d400 69 3b 0a 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 i;..struct.super_block.*sb.=.den
d420 74 72 79 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 try->d_sb;..int.err;..__u8.dh;..
d440 0a 09 64 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 ..d.=.sb->s_root;..if.(!d).{...g
d460 6f 74 6f 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 oto.dflt;..}..i.=.d_inode(d);..i
d480 66 20 28 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 f.(!i).{...goto.dflt;..}..ni.=.N
d4a0 43 50 5f 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 CP_FINFO(i);..if.(!ni).{...goto.
d4c0 64 66 6c 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 dflt;..}..s.=.NCP_SBP(sb);..if.(
d4e0 21 73 29 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 !s).{...goto.dflt;..}..if.(!s->m
d500 2e 6d 6f 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 .mounted_vol[0]).{...goto.dflt;.
d520 09 7d 0a 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 .}...err.=.ncp_dirhandle_alloc(s
d540 2c 20 6e 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 ,.ni->volNumber,.ni->DosDirNum,.
d560 26 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;..
d580 7d 0a 09 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 }..err.=.ncp_get_directory_info(
d5a0 73 2c 20 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 s,.dh,.&vi);..ncp_dirhandle_free
d5c0 28 73 2c 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 (s,.dh);..if.(err).{...goto.dflt
d5e0 3b 0a 09 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 ;..}..buf->f_type.=.NCP_SUPER_MA
d600 47 49 43 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 GIC;..buf->f_bsize.=.vi.sectors_
d620 70 65 72 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 per_block.*.512;..buf->f_blocks.
d640 3d 20 76 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 =.vi.total_blocks;..buf->f_bfree
d660 20 3d 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 62 61 76 61 69 .=.vi.free_blocks;..buf->f_bavai
d680 6c 20 3d 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 l.=.vi.free_blocks;..buf->f_file
d6a0 73 20 3d 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 s.=.vi.total_dir_entries;..buf->
d6c0 66 5f 66 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 f_ffree.=.vi.available_dir_entri
d6e0 65 73 3b 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 es;..buf->f_namelen.=.12;..retur
d700 6e 20 30 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 n.0;.../*.We.cannot.say.how.much
d720 20 64 69 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 .disk.space.is.left.on.a.mounted
d740 0a 09 20 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 .....NetWare.Server,.because.fre
d760 65 20 73 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 e.space.is.distributed.over.....
d780 76 6f 6c 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 volumes,.and.the.current.user.mi
d7a0 67 68 74 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 ght.have.disk.quotas..So.....fre
d7c0 65 20 73 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 e.space.is.not.that.simple.to.de
d7e0 74 65 72 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 termine..Our.decision.....here.i
d800 73 20 74 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 s.to.err.conservatively..*/..dfl
d820 74 3a 3b 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 t:;..buf->f_type.=.NCP_SUPER_MAG
d840 49 43 3b 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 IC;..buf->f_bsize.=.NCP_BLOCK_SI
d860 5a 45 3b 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 ZE;..buf->f_blocks.=.0;..buf->f_
d880 62 66 72 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 bfree.=.0;..buf->f_bavail.=.0;..
d8a0 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 3b 0a buf->f_namelen.=.12;..return.0;.
d8c0 7d 0a 0a 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 }..int.ncp_notify_change(struct.
d8e0 64 65 6e 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 dentry.*dentry,.struct.iattr.*at
d900 74 72 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 69 tr).{..struct.inode.*inode.=.d_i
d920 6e 6f 64 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 node(dentry);..int.result.=.0;..
d940 5f 5f 6c 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 __le32.info_mask;..struct.nw_mod
d960 69 66 79 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 ify_dos_info.info;..struct.ncp_s
d980 65 72 76 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 erver.*server;...result.=.-EIO;.
d9a0 0a 09 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 69 ..server.=.NCP_SERVER(inode);..i
d9c0 66 20 28 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 f.(!server)./*.How.this.could.ha
d9e0 70 70 65 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 ppen?.*/...goto.out;...result.=.
da00 2d 45 50 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 -EPERM;..if.(IS_DEADDIR(d_inode(
da20 64 65 6e 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 dentry)))...goto.out;.../*.agein
da40 67 20 74 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 g.the.dentry.to.force.validation
da60 20 2a 2f 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 .*/..ncp_age_dentry(server,.dent
da80 72 79 29 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 ry);...result.=.setattr_prepare(
daa0 64 65 6e 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 dentry,.attr);..if.(result.<.0).
dac0 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 45 52 4d 3b 0a 09 ..goto.out;...result.=.-EPERM;..
dae0 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 55 49 44 29 20 if.((attr->ia_valid.&.ATTR_UID).
db00 26 26 20 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 &&.!uid_eq(attr->ia_uid,.server-
db20 3e 6d 2e 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 >m.uid))...goto.out;...if.((attr
db40 2d 3e 69 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 ->ia_valid.&.ATTR_GID).&&.!gid_e
db60 71 28 61 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 q(attr->ia_gid,.server->m.gid)).
db80 09 09 67 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 ..goto.out;...if.(((attr->ia_val
dba0 69 64 20 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 id.&.ATTR_MODE).&&.......(attr->
dbc0 69 61 5f 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 ia_mode.&........~(S_IFREG.|.S_I
dbe0 46 44 49 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 FDIR.|.S_IRWXUGO))))...goto.out;
dc00 0a 0a 09 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 ...info_mask.=.0;..memset(&info,
dc20 20 30 2c 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 .0,.sizeof(info));..#if.1.......
dc40 20 20 20 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 ...if.((attr->ia_valid.&.ATTR_MO
dc60 44 45 29 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 DE).!=.0).........{...umode_t.ne
dc80 77 6d 6f 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 wmode.=.attr->ia_mode;....info_m
dca0 61 73 6b 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 ask.|=.DM_ATTRIBUTES;...........
dcc0 20 20 20 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 .......if.(S_ISDIR(inode->i_mode
dce0 29 29 20 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 )).{..................newmode.&=
dd00 20 73 65 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 .server->m.dir_mode;...}.else.{.
dd20 23 69 66 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 #ifdef.CONFIG_NCPFS_EXTRAS......
dd40 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
dd60 5f 45 58 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 _EXTRAS).{...../*.any.non-defaul
dd80 74 20 65 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 t.execute.bit.set.*/.....if.(new
dda0 6d 6f 64 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 mode.&.~server->m.file_mode.&.S_
ddc0 49 58 55 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 IXUGO)......info.attributes.|=.a
dde0 53 48 41 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 SHARED.|.aSYSTEM;...../*.read.fo
de00 72 20 67 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 r.group/world.and.not.in.default
de20 20 66 69 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 .file_mode.*/.....else.if.(newmo
de40 64 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 52 de.&.~server->m.file_mode.&.S_IR
de60 55 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 UGO)......info.attributes.|=.aSH
de80 41 52 45 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 ARED;....}.else.#endif.....newmo
dea0 64 65 20 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 de.&=.server->m.file_mode;......
dec0 20 20 20 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 ..............}.................
dee0 69 66 20 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 if.(newmode.&.S_IWUGO)..........
df00 20 20 20 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 ........info.attributes.&=.~(aRO
df20 4e 4c 59 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 NLY|aRENAMEINHIBIT|aDELETEINHIBI
df40 54 29 3b 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 T);.................else....info
df60 2e 61 74 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 .attributes.|=..(aRONLY|aRENAMEI
df80 4e 48 49 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 NHIBIT|aDELETEINHIBIT);..#ifdef.
dfa0 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 28 6e 63 70 5f 69 73 CONFIG_NCPFS_NFS_NS...if.(ncp_is
dfc0 5f 6e 66 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 _nfs_extras(server,.NCP_FINFO(in
dfe0 6f 64 65 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 ode)->volNumber)).{....result.=.
e000 6e 63 70 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 ncp_modify_nfs_info(server,.....
e020 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 76 6f 6c 4e 75 6d 62 .......NCP_FINFO(inode)->volNumb
e040 65 72 2c 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 er,............NCP_FINFO(inode)-
e060 3e 64 69 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 >dirEntNum,............attr->ia_
e080 6d 6f 64 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 mode,.0);....if.(result.!=.0)...
e0a0 09 09 67 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 ..goto.out;....info.attributes.&
e0c0 3d 20 7e 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 =.~(aSHARED.|.aSYSTEM);....{....
e0e0 09 2f 2a 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 ./*.mark.partial.success.*/.....
e100 73 74 72 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 struct.iattr.tmpattr;..........t
e120 6d 70 61 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 mpattr.ia_valid.=.ATTR_MODE;....
e140 09 74 6d 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 .tmpattr.ia_mode.=.attr->ia_mode
e160 3b 0a 0a 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 ;......setattr_copy(inode,.&tmpa
e180 74 74 72 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 ttr);.....mark_inode_dirty(inode
e1a0 29 3b 0a 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 );....}...}.#endif.........}.#en
e1c0 64 69 66 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 dif.../*.Do.SIZE.before.attribut
e1e0 65 73 2c 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 es,.otherwise.mtime.together.wit
e200 68 20 73 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 h.size.does.not.work......*/..if
e220 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 53 49 5a 45 29 20 21 .((attr->ia_valid.&.ATTR_SIZE).!
e240 3d 20 30 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 =.0).{...int.written;....ncp_dbg
e260 28 31 2c 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 (1,."trying.to.change.size.to.%l
e280 6c 75 5c 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 lu\n",.attr->ia_size);....if.((r
e2a0 65 73 75 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 esult.=.ncp_make_open(inode,.O_W
e2c0 52 4f 4e 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 RONLY)).<.0).{....result.=.-EACC
e2e0 45 53 3b 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 ES;....goto.out;...}...ncp_write
e300 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 20 4e 43 50 5f 46 _kernel(NCP_SERVER(inode),.NCP_F
e320 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 20 20 61 INFO(inode)->file_handle,......a
e340 74 74 72 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 ttr->ia_size,.0,."",.&written);.
e360 0a 09 09 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 .../*.According.to.ndir,.the.cha
e380 6e 67 65 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 nges.only.take.effect.after.....
e3a0 20 63 6c 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 .closing.the.file.*/...ncp_inode
e3c0 5f 63 6c 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 _close(inode);...result.=.ncp_ma
e3e0 6b 65 5f 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 ke_closed(inode);...if.(result).
e400 09 09 09 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 ...goto.out;....if.(attr->ia_siz
e420 65 20 21 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 e.!=.i_size_read(inode)).{....tr
e440 75 6e 63 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 uncate_setsize(inode,.attr->ia_s
e460 69 7a 65 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 ize);....mark_inode_dirty(inode)
e480 3b 0a 09 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 ;...}..}..if.((attr->ia_valid.&.
e4a0 41 54 54 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 ATTR_CTIME).!=.0).{...info_mask.
e4c0 7c 3d 20 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 |=.(DM_CREATE_TIME.|.DM_CREATE_D
e4e0 41 54 45 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 ATE);...ncp_date_unix2dos(attr->
e500 69 61 5f 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 ia_ctime.tv_sec,.........&info.c
e520 72 65 61 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 reationTime,.&info.creationDate)
e540 3b 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 52 ;..}..if.((attr->ia_valid.&.ATTR
e560 5f 4d 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 28 _MTIME).!=.0).{...info_mask.|=.(
e580 44 4d 5f 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 DM_MODIFY_TIME.|.DM_MODIFY_DATE)
e5a0 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 6d ;...ncp_date_unix2dos(attr->ia_m
e5c0 74 69 6d 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 time.tv_sec,.......&info.modifyT
e5e0 69 6d 65 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 ime,.&info.modifyDate);..}..if.(
e600 28 61 74 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 (attr->ia_valid.&.ATTR_ATIME).!=
e620 20 30 29 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 .0).{...__le16.dummy;...info_mas
e640 6b 20 7c 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 k.|=.(DM_LAST_ACCESS_DATE);...nc
e660 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 61 74 69 6d 65 2e 74 p_date_unix2dos(attr->ia_atime.t
e680 76 5f 73 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 v_sec,.......&dummy,.&info.lastA
e6a0 63 63 65 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 ccessDate);..}..if.(info_mask.!=
e6c0 20 30 29 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 .0).{...result.=.ncp_modify_file
e6e0 5f 6f 72 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 _or_subdir_dos_info(NCP_SERVER(i
e700 6e 6f 64 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 node),...........inode,.info_mas
e720 6b 2c 20 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 k,.&info);...if.(result.!=.0).{.
e740 09 09 09 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 ...if.(info_mask.==.(DM_CREATE_T
e760 49 4d 45 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 IME.|.DM_CREATE_DATE)).{...../*.
e780 4e 65 74 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 NetWare.seems.not.to.allow.this.
e7a0 20 49 0a 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 .I........do.not.know.why..So,.j
e7c0 75 73 74 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 ust.tell.the........user.everyth
e7e0 69 6e 67 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 ing.went.fine..This.is........a.
e800 74 65 72 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 terrible.hack,.but.I.do.not.know
e820 0a 09 09 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 ........how.to.do.this.correctly
e840 2e 20 2a 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 ..*/.....result.=.0;....}.else..
e860 09 09 09 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 ...goto.out;...}.#ifdef.CONFIG_N
e880 43 50 46 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 CPFS_STRONG.....if.((!result).&&
e8a0 20 28 69 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 .(info_mask.&.DM_ATTRIBUTES))...
e8c0 09 4e 43 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 .NCP_FINFO(inode)->nwattr.=.info
e8e0 2e 61 74 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 .attributes;.#endif..}..if.(resu
e900 6c 74 29 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 lt)...goto.out;...setattr_copy(i
e920 6e 6f 64 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 node,.attr);..mark_inode_dirty(i
e940 6e 6f 64 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 node);..out:..if.(result.>.0)...
e960 72 65 73 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 result.=.-EACCES;..return.result
e980 3b 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 6d ;.}..static.struct.dentry.*ncp_m
e9a0 6f 75 6e 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 ount(struct.file_system_type.*fs
e9c0 5f 74 79 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 _type,..int.flags,.const.char.*d
e9e0 65 76 5f 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 ev_name,.void.*data).{..return.m
ea00 6f 75 6e 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 ount_nodev(fs_type,.flags,.data,
ea20 20 6e 63 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 .ncp_fill_super);.}..static.stru
ea40 63 74 20 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 ct.file_system_type.ncp_fs_type.
ea60 3d 20 7b 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 =.{...owner..=.THIS_MODULE,...na
ea80 6d 65 09 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 me..=."ncpfs",...mount..=.ncp_mo
eaa0 75 6e 74 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 unt,...kill_sb.=.kill_anon_super
eac0 2c 0a 09 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 ,...fs_flags.=.FS_BINARY_MOUNTDA
eae0 54 41 2c 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 TA,.};.MODULE_ALIAS_FS("ncpfs");
eb00 0a 0a 73 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 ..static.int.__init.init_ncp_fs(
eb20 76 6f 69 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 void).{..int.err;..ncp_dbg(1,."c
eb40 61 6c 6c 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 alled\n");...err.=.init_inodecac
eb60 68 65 28 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 he();..if.(err)...goto.out1;..er
eb80 72 20 3d 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 r.=.register_filesystem(&ncp_fs_
eba0 74 79 70 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 type);..if.(err)...goto.out;..re
ebc0 74 75 72 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 turn.0;.out:..destroy_inodecache
ebe0 28 29 3b 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 ();.out1:..return.err;.}..static
ec00 20 76 6f 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 .void.__exit.exit_ncp_fs(void).{
ec20 0a 09 6e 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 ..ncp_dbg(1,."called\n");..unreg
ec40 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 65 29 3b 0a ister_filesystem(&ncp_fs_type);.
ec60 09 64 65 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 .destroy_inodecache();.}..module
ec80 5f 69 6e 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 _init(init_ncp_fs).module_exit(e
eca0 78 69 74 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 xit_ncp_fs).MODULE_LICENSE("GPL"
ecc0 29 3b 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 );..............................
ece0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ed00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ed20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ed40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ed60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ed80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
eda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
edc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ede0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ee00 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................
ee20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ee40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ee60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
ee80 30 30 30 31 30 37 33 00 31 33 31 32 32 32 31 33 31 35 30 00 30 31 32 36 30 35 00 20 30 00 00 00 0001073.13122213150.012605..0...
eea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
eec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
eee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ef00 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
ef20 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
ef40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ef60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ef80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
efa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
efc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
efe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f000 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
f020 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..*..
f040 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
f060 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.
f080 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
f0a0 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
f0c0 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
f0e0 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.
f100 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.{..__
f120 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
f140 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
f160 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
f180 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
f1a0 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
f1c0 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
f1e0 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];
f200 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
f220 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.*/......
f240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f400 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..................
f420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f460 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
f480 30 30 30 35 35 32 30 00 31 33 31 32 32 32 31 33 31 35 30 00 30 31 32 32 37 36 00 20 30 00 00 00 0005520.13122213150.012276..0...
f4a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f4c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f4e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f500 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
f520 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
f540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f5a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f5c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f600 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
f620 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
f640 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
f660 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_
f680 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
f6a0 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
f6c0 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.{..
f6e0 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
f700 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
f720 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
f740 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
f760 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
f780 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
f7a0 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
f7c0 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
f7e0 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,.##__
f800 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
f820 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).
f840 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
f860 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
f880 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;.
f8a0 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
f8c0 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
f8e0 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
f900 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
f920 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
f940 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)-
f960 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_
f980 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
f9a0 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
f9c0 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_
f9e0 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
fa00 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
fa20 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.
fa40 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
fa60 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
fa80 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
faa0 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
fac0 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
fae0 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
fb00 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
fb20 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
fb40 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
fb60 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
fb80 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
fba0 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_
fbc0 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
fbe0 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.
fc00 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
fc20 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);
fc40 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
fc60 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
fc80 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
fca0 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.*
fcc0 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);.
fce0 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
fd00 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
fd20 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.*/.
fd40 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
fd60 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*
fd80 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
fda0 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
fdc0 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
fde0 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
fe00 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
fe20 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
fe40 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);
fe60 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
fe80 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
fea0 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);
fec0 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
fee0 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
ff00 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(
ff20 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(
ff40 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
ff60 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
ff80 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
ffa0 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
ffc0 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
ffe0 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
10000 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
10020 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
10040 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
10060 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(
10080 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/
100a0 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(
100c0 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
100e0 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
10100 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
10120 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
10140 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".................
10160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
101a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
101c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
101e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10200 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....................
10220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10260 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
10280 30 30 30 35 34 31 31 00 31 33 31 32 32 32 31 33 31 35 30 00 30 31 31 37 35 32 00 20 30 00 00 00 0005411.13122213150.011752..0...
102a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
102c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
102e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10300 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
10320 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
10340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
103a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
103c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
103e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10400 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.(
10420 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
10440 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
10460 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
10480 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
104a0 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/
104c0 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
104e0 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
10500 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
10520 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>.#
10540 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.
10560 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
10580 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
105a0 74 72 6f 6c 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 75 61 63 63 65 73 73 trol.h>..#include.<linux/uaccess
105c0 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 2f 2a 0a 20 2a 20 .h>..#include."ncp_fs.h"../*..*.
105e0 46 69 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 Fill.in.the.supplied.page.for.mm
10600 61 70 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 ap..*.XXX:.how.are.we.excluding.
10620 74 72 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 truncate/invalidate.here?.Maybe.
10640 6e 65 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 need.to.lock..*.page?..*/.static
10660 20 69 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 .int.ncp_file_mmap_fault(struct.
10680 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.*
106a0 69 6e 6f 64 65 20 3d 20 66 69 6c 65 5f 69 6e 6f 64 65 28 76 6d 66 2d 3e 76 6d 61 2d 3e 76 6d 5f inode.=.file_inode(vmf->vma->vm_
106c0 66 69 6c 65 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 file);..char.*pg_addr;..unsigned
106e0 20 69 6e 74 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 .int.already_read;..unsigned.int
10700 20 63 6f 75 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 .count;..int.bufsize;..int.pos;.
10720 2f 2a 20 58 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 /*.XXX:.loff_t.?.*/.../*...*.ncp
10740 66 73 20 68 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 fs.has.nothing.against.high.page
10760 73 20 61 73 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 s.as.long...*.as.recvmsg.and.mem
10780 73 65 74 20 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 set.works.on.it...*/..vmf->page.
107a0 3d 20 61 6c 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 =.alloc_page(GFP_HIGHUSER);..if.
107c0 28 21 76 6d 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 (!vmf->page)...return.VM_FAULT_O
107e0 4f 4d 3b 0a 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 OM;..pg_addr.=.kmap(vmf->page);.
10800 09 70 6f 73 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 .pos.=.vmf->pgoff.<<.PAGE_SHIFT;
10820 0a 0a 09 63 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 ...count.=.PAGE_SIZE;../*.what.w
10840 65 20 63 61 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 e.can.read.in.one.go.*/..bufsize
10860 20 3d 20 4e 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 .=.NCP_SERVER(inode)->buffer_siz
10880 65 3b 0a 0a 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 e;...already_read.=.0;..if.(ncp_
108a0 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 20 3e 3d 20 30 29 make_open(inode,.O_RDONLY).>=.0)
108c0 20 7b 0a 09 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 .{...while.(already_read.<.count
108e0 29 20 7b 0a 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 ).{....int.read_this_time;....in
10900 74 20 74 6f 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 t.to_read;.....to_read.=.bufsize
10920 20 2d 20 28 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 .-.(pos.%.bufsize);.....to_read.
10940 3d 20 6d 69 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 =.min_t(unsigned.int,.to_read,.c
10960 6f 75 6e 74 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 ount.-.already_read);.....if.(nc
10980 70 5f 72 65 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 p_read_kernel(NCP_SERVER(inode),
109a0 0a 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 66 69 6c 65 ..........NCP_FINFO(inode)->file
109c0 5f 68 61 6e 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 _handle,..........pos,.to_read,.
109e0 09 09 09 09 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 .........pg_addr.+.already_read,
10a00 0a 09 09 09 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 ..........&read_this_time).!=.0)
10a20 20 7b 0a 09 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 .{.....read_this_time.=.0;....}.
10a40 09 09 09 70 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 ...pos.+=.read_this_time;....alr
10a60 65 61 64 79 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 eady_read.+=.read_this_time;....
10a80 09 69 66 20 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 .if.(read_this_time.<.to_read).{
10aa0 0a 09 09 09 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 .....break;....}...}...ncp_inode
10ac0 5f 63 6c 6f 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 _close(inode);...}...if.(already
10ae0 5f 72 65 61 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 _read.<.PAGE_SIZE)...memset(pg_a
10b00 64 64 72 20 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 ddr.+.already_read,.0,.PAGE_SIZE
10b20 20 2d 20 61 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 .-.already_read);..flush_dcache_
10b40 70 61 67 65 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 page(vmf->page);..kunmap(vmf->pa
10b60 67 65 29 3b 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 ge);.../*...*.If.I.understand.nc
10b80 70 5f 72 65 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 p_read_kernel().properly,.the.ab
10ba0 6f 76 65 20 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 ove.always...*.fetches.from.the.
10bc0 6e 65 74 77 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 network,.here.the.analogue.of.di
10be0 73 6b 2e 0a 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 sk....*.--.nyc...*/..count_vm_ev
10c00 65 6e 74 28 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 ent(PGMAJFAULT);..mem_cgroup_cou
10c20 6e 74 5f 76 6d 5f 65 76 65 6e 74 28 76 6d 66 2d 3e 76 6d 61 2d 3e 76 6d 5f 6d 6d 2c 20 50 47 4d nt_vm_event(vmf->vma->vm_mm,.PGM
10c40 41 4a 46 41 55 4c 54 29 3b 0a 09 72 65 74 75 72 6e 20 56 4d 5f 46 41 55 4c 54 5f 4d 41 4a 4f 52 AJFAULT);..return.VM_FAULT_MAJOR
10c60 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 76 6d 5f 6f 70 65 72 ;.}..static.const.struct.vm_oper
10c80 61 74 69 6f 6e 73 5f 73 74 72 75 63 74 20 6e 63 70 5f 66 69 6c 65 5f 6d 6d 61 70 20 3d 0a 7b 0a ations_struct.ncp_file_mmap.=.{.
10ca0 09 2e 66 61 75 6c 74 20 3d 20 6e 63 70 5f 66 69 6c 65 5f 6d 6d 61 70 5f 66 61 75 6c 74 2c 0a 7d ..fault.=.ncp_file_mmap_fault,.}
10cc0 3b 0a 0a 0a 2f 2a 20 54 68 69 73 20 69 73 20 75 73 65 64 20 66 6f 72 20 61 20 67 65 6e 65 72 61 ;.../*.This.is.used.for.a.genera
10ce0 6c 20 6d 6d 61 70 20 6f 66 20 61 20 6e 63 70 20 66 69 6c 65 20 2a 2f 0a 69 6e 74 20 6e 63 70 5f l.mmap.of.a.ncp.file.*/.int.ncp_
10d00 6d 6d 61 70 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 76 mmap(struct.file.*file,.struct.v
10d20 6d 5f 61 72 65 61 5f 73 74 72 75 63 74 20 2a 76 6d 61 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e m_area_struct.*vma).{..struct.in
10d40 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 6c 65 29 3b 0a 09 ode.*inode.=.file_inode(file);..
10d60 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 63 61 6c 6c 65 64 5c 6e 22 29 3b 0a 0a 09 69 66 20 28 ..ncp_dbg(1,."called\n");...if.(
10d80 21 6e 63 70 5f 63 6f 6e 6e 5f 76 61 6c 69 64 28 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 !ncp_conn_valid(NCP_SERVER(inode
10da0 29 29 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 49 4f 3b 0a 0a 09 2f 2a 20 6f 6e 6c 79 20 50 41 47 )))...return.-EIO;.../*.only.PAG
10dc0 45 5f 43 4f 57 20 6f 72 20 72 65 61 64 2d 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6e 6f 77 E_COW.or.read-only.supported.now
10de0 20 2a 2f 0a 09 69 66 20 28 76 6d 61 2d 3e 76 6d 5f 66 6c 61 67 73 20 26 20 56 4d 5f 53 48 41 52 .*/..if.(vma->vm_flags.&.VM_SHAR
10e00 45 44 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 49 4e 56 41 4c 3b 0a 09 2f 2a 20 77 65 20 64 6f 20 ED)...return.-EINVAL;../*.we.do.
10e20 6e 6f 74 20 73 75 70 70 6f 72 74 20 66 69 6c 65 73 20 62 69 67 67 65 72 20 74 68 61 6e 20 34 47 not.support.files.bigger.than.4G
10e40 42 2e 2e 2e 20 57 65 20 65 76 65 6e 74 75 61 6c 6c 79 20 0a 09 20 20 20 73 75 70 70 6f 72 74 73 B....We.eventually......supports
10e60 20 6a 75 73 74 20 34 47 42 2e 2e 2e 20 2a 2f 0a 09 69 66 20 28 76 6d 61 5f 70 61 67 65 73 28 76 .just.4GB....*/..if.(vma_pages(v
10e80 6d 61 29 20 2b 20 76 6d 61 2d 3e 76 6d 5f 70 67 6f 66 66 0a 09 20 20 20 3e 20 28 31 55 20 3c 3c ma).+.vma->vm_pgoff.....>.(1U.<<
10ea0 20 28 33 32 20 2d 20 50 41 47 45 5f 53 48 49 46 54 29 29 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 .(32.-.PAGE_SHIFT)))...return.-E
10ec0 46 42 49 47 3b 0a 0a 09 76 6d 61 2d 3e 76 6d 5f 6f 70 73 20 3d 20 26 6e 63 70 5f 66 69 6c 65 5f FBIG;...vma->vm_ops.=.&ncp_file_
10ee0 6d 6d 61 70 3b 0a 09 66 69 6c 65 5f 61 63 63 65 73 73 65 64 28 66 69 6c 65 29 3b 0a 09 72 65 74 mmap;..file_accessed(file);..ret
10f00 75 72 6e 20 30 3b 0a 7d 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 urn.0;.}........................
10f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11000 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...............
11020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11060 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
11080 30 30 31 32 30 33 37 00 31 33 31 32 32 32 31 33 31 35 30 00 30 31 32 37 36 33 00 20 30 00 00 00 0012037.13122213150.012763..0...
110a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
110c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
110e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11100 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
11120 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
11140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
111a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
111c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
111e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11200 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
11220 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
11240 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
11260 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
11280 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
112a0 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
112c0 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
112e0 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
11300 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.
11320 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.
11340 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
11360 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
11380 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;../*.
113a0 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
113c0 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
113e0 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_
11400 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
11420 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.
11440 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......
11460 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.
11480 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
114a0 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.
114c0 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...
114e0 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
11500 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
11520 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.....
11540 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
11560 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.
11580 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
115a0 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;
115c0 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.
115e0 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;.};..
11600 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_
11620 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
11640 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.
11660 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
11680 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.....
116a0 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
116c0 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.+.
116e0 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;/*
11700 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
11720 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
11740 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
11760 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
11780 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
117a0 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.
117c0 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.
117e0 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.
11800 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.
11820 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
11840 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
11860 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.*/
11880 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
118a0 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
118c0 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
118e0 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;./*.
11900 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.*/..
11920 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
11940 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.*/
11960 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
11980 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
119a0 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;./
119c0 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
119e0 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
11a00 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
11a20 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
11a40 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
11a60 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
11a80 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
11aa0 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.*/
11ac0 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
11ae0 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.*/
11b00 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
11b20 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,
11b40 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
11b60 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
11b80 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
11ba0 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.
11bc0 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;.
11be0 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
11c00 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
11c20 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
11c40 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
11c60 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.
11c80 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
11ca0 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;...
11cc0 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
11ce0 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
11d00 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
11d20 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.
11d40 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
11d60 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
11d80 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
11da0 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*.
11dc0 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
11de0 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;..
11e00 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
11e20 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*
11e40 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
11e60 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
11e80 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.
11ea0 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.
11ec0 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
11ee0 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
11f00 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;
11f20 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
11f40 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
11f60 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;...._
11f80 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
11fa0 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
11fc0 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
11fe0 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
12000 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
12020 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
12040 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
12060 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;
12080 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
120a0 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;../*
120c0 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.
120e0 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
12100 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
12120 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
12140 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
12160 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
12180 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
121a0 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.
121c0 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.
121e0 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
12200 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.*/
12220 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
12240 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.
12260 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]
12280 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.
122a0 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
122c0 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
122e0 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
12300 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
12320 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
12340 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)
12360 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
12380 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
123a0 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
123c0 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
123e0 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
12400 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
12420 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
12440 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
12460 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_
12480 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
124a0 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.&=.~
124c0 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
124e0 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.|=.(
12500 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
12520 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
12540 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_
12560 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)
12580 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
125a0 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
125c0 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
125e0 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->
12600 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..
12620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
126a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
126c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
126e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
12740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 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...........
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 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
12880 30 31 30 30 37 30 30 00 31 33 31 32 32 32 31 33 31 35 30 00 30 31 33 36 32 34 00 20 30 00 00 00 0100700.13122213150.013624..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 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
12920 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
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 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
12a20 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
12a40 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
12a60 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.
12a80 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
12aa0 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.
12ac0 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
12ae0 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.
12b00 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
12b20 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
12b40 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
12b60 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
12b80 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.
12ba0 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
12bc0 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
12be0 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
12c00 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");..}
12c20 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
12c40 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).
12c60 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);
12c80 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
12ca0 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
12cc0 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;.
12ce0 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
12d00 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)
12d20 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)
12d40 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.*).(
12d60 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
12d80 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
12da0 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
12dc0 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
12de0 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
12e00 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(
12e20 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
12e40 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
12e60 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.+=.
12e80 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(
12ea0 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
12ec0 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
12ee0 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.
12f00 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
12f20 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_
12f40 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
12f60 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
12f80 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
12fa0 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
12fc0 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.*)(&
12fe0 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_
13000 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.
13020 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_
13040 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.*
13060 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
13080 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
130a0 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
130c0 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
130e0 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_
13100 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
13120 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]),
13140 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
13160 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
13180 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
131a0 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)
131c0 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
131e0 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
13200 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
13220 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;
13240 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);.
13260 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
13280 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
132a0 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.
132c0 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
132e0 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
13300 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);
13320 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;.}
13340 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
13360 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
13380 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_
133a0 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
133c0 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
133e0 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
13400 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
13420 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
13440 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
13460 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
13480 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
134a0 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
134c0 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
134e0 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.*(
13500 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
13520 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.*
13540 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.*(
13560 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
13580 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.
135a0 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
135c0 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);.}.
135e0 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
13600 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
13620 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
13640 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));.
13660 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
13680 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
136a0 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
136c0 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))
136e0 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
13700 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
13720 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._
13740 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
13760 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).{..
13780 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
137a0 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));.
137c0 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
137e0 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
13800 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_
13820 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
13840 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
13860 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
13880 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
138a0 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
138c0 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
138e0 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
13900 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
13920 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
13940 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
13960 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
13980 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
139a0 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:...
139c0 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
139e0 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
13a00 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
13a20 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
13a40 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_
13a60 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
13a80 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
13aa0 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
13ac0 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);.
13ae0 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
13b00 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);....
13b20 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
13b40 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
13b60 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;.
13b80 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.(
13ba0 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
13bc0 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_
13be0 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,
13c00 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
13c20 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
13c40 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
13c60 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
13c80 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_
13ca0 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
13cc0 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).{
13ce0 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
13d00 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
13d20 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
13d40 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)).!=.
13d60 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
13d80 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
13da0 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.
13dc0 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);
13de0 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
13e00 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
13e20 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.=.
13e40 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);.
13e60 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
13e80 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
13ea0 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
13ec0 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
13ee0 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
13f00 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(
13f20 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
13f40 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
13f60 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(
13f80 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
13fa0 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.
13fc0 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
13fe0 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
14000 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
14020 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:..
14040 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
14060 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
14080 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
140a0 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
140c0 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
140e0 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
14100 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
14120 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
14140 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.
14160 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.=.
14180 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);..
141a0 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_
141c0 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
141e0 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
14200 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
14220 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
14240 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->
14260 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
14280 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-
142a0 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
142c0 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
142e0 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
14300 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
14320 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
14340 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
14360 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
14380 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
143a0 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
143c0 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),
143e0 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
14400 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
14420 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
14440 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
14460 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_
14480 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
144a0 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
144c0 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
144e0 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
14500 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
14520 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.
14540 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.
14560 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
14580 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
145a0 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).==.
145c0 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
145e0 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
14600 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
14620 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
14640 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,.
14660 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
14680 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
146a0 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)
146c0 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
146e0 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;.
14700 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
14720 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,.__
14740 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,
14760 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
14780 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
147a0 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
147c0 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
147e0 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,
14800 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.{...
14820 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
14840 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
14860 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);./
14880 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
148a0 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
148c0 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
148e0 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_
14900 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
14920 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).
14940 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
14960 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,
14980 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
149a0 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_
149c0 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
149e0 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
14a00 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
14a20 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
14a40 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
14a60 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);.
14a80 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);..
14aa0 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
14ac0 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
14ae0 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
14b00 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,
14b20 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
14b40 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
14b60 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
14b80 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
14ba0 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.
14bc0 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
14be0 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
14c00 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.
14c20 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
14c40 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
14c60 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
14c80 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
14ca0 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
14cc0 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
14ce0 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-
14d00 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
14d20 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
14d40 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;.}..#
14d60 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
14d80 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
14da0 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
14dc0 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
14de0 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
14e00 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
14e20 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
14e40 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
14e60 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
14e80 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
14ea0 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
14ec0 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
14ee0 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
14f00 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
14f20 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
14f40 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.*/...
14f60 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
14f80 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
14fa0 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
14fc0 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
14fe0 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(
15000 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);.../*
15020 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
15040 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
15060 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
15080 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
150a0 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
150c0 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
150e0 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(
15100 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
15120 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
15140 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
15160 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
15180 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
151a0 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
151c0 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
151e0 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;.
15200 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
15220 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
15240 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
15260 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;.}.
15280 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
152a0 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
152c0 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...*
152e0 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
15300 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
15320 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.
15340 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.
15360 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
15380 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(
153a0 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;...
153c0 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("
153e0 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__);.
15400 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
15420 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
15440 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
15460 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
15480 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
154a0 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])
154c0 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
154e0 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))
15500 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
15520 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
15540 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,
15560 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
15580 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
155a0 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
155c0 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
155e0 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
15600 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
15620 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:
15640 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
15660 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
15680 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
156a0 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.
156c0 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,
156e0 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
15700 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.*/...
15720 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
15740 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);
15760 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
15780 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
157a0 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
157c0 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_
157e0 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
15800 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
15820 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,
15840 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.
15860 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
15880 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
158a0 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
158c0 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_
158e0 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;.
15900 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.
15920 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
15940 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.
15960 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
15980 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
159a0 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
159c0 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
159e0 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
15a00 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,.
15a20 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
15a40 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
15a60 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
15a80 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
15aa0 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
15ac0 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
15ae0 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.??.*/..}
15b00 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
15b20 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
15b40 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
15b60 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
15b80 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.
15ba0 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);..
15bc0 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.
15be0 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).&&.!(
15c00 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
15c20 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;..
15c40 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
15c60 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
15c80 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
15ca0 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
15cc0 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.=
15ce0 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
15d00 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.+=.
15d20 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
15d40 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.
15d60 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
15d80 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
15da0 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
15dc0 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
15de0 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
15e00 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
15e20 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
15e40 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
15e60 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
15e80 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_
15ea0 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
15ec0 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
15ee0 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
15f00 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-
15f20 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
15f40 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
15f60 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.*
15f80 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
15fa0 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,
15fc0 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.
15fe0 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
16000 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
16020 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)
16040 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
16060 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
16080 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
160a0 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,.
160c0 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
160e0 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
16100 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
16120 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);..
16140 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
16160 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
16180 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;..
161a0 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.
161c0 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);
161e0 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.=.
16200 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);..
16220 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
16240 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
16260 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
16280 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
162a0 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
162c0 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
162e0 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
16300 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
16320 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
16340 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
16360 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,.
16380 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
163a0 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
163c0 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
163e0 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].
16400 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].=
16420 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
16440 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.*
16460 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
16480 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
164a0 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
164c0 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
164e0 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
16500 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
16520 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
16540 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
16560 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
16580 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
165a0 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);
165c0 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
165e0 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
16600 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
16620 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
16640 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
16660 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
16680 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_
166a0 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
166c0 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,
166e0 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
16700 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
16720 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
16740 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
16760 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);
16780 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
167a0 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
167c0 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_
167e0 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
16800 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
16820 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
16840 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
16860 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
16880 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,...
168a0 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
168c0 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
168e0 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;..}
16900 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
16920 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);..
16940 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
16960 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
16980 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
169a0 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
169c0 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
169e0 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
16a00 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);.
16a20 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->
16a40 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
16a60 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
16a80 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;.}..
16aa0 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
16ac0 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
16ae0 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
16b00 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,...
16b20 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,........
16b40 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
16b60 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
16b80 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
16ba0 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
16bc0 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
16be0 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,
16c00 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_
16c20 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[
16c40 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,.
16c60 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
16c80 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));./
16ca0 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
16cc0 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
16ce0 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(*
16d00 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
16d20 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);..
16d40 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
16d60 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);..
16d80 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
16da0 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.
16dc0 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
16de0 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
16e00 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.
16e20 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)
16e40 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
16e60 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,.
16e80 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
16ea0 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_
16ec0 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
16ee0 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
16f00 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
16f20 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
16f40 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
16f60 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
16f80 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,.
16fa0 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
16fc0 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
16fe0 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
17000 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
17020 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
17040 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
17060 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
17080 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
170a0 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,
170c0 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
170e0 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_
17100 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
17120 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
17140 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
17160 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
17180 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(
171a0 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
171c0 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
171e0 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,.....
17200 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,
17220 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*.
17240 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
17260 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
17280 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);
172a0 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
172c0 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
172e0 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_
17300 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
17320 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
17340 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_
17360 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_
17380 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
173a0 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;
173c0 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(
173e0 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
17400 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
17420 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);..
17440 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;...
17460 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;./*.
17480 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
174a0 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.=
174c0 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
174e0 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,.
17500 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
17520 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
17540 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
17560 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
17580 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)
175a0 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
175c0 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
175e0 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
17600 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
17620 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
17640 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
17660 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
17680 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_
176a0 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,
176c0 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.(
176e0 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.=.
17700 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;.
17720 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
17740 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
17760 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,.
17780 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))
177a0 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
177c0 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,
177e0 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.=.
17800 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
17820 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
17840 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
17860 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
17880 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
178a0 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
178c0 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
178e0 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
17900 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
17920 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
17940 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_
17960 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
17980 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
179a0 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
179c0 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.
179e0 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
17a00 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
17a20 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
17a40 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.
17a60 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
17a80 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).!=
17aa0 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
17ac0 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
17ae0 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
17b00 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
17b20 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
17b40 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
17b60 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
17b80 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
17ba0 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
17bc0 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
17be0 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
17c00 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
17c20 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.*/..
17c40 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
17c60 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
17c80 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);
17ca0 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
17cc0 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.
17ce0 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))...
17d00 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
17d20 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.*
17d40 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
17d60 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)
17d80 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
17da0 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(
17dc0 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),......
17de0 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),...
17e00 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
17e20 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
17e40 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,.&(
17e60 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
17e80 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
17ea0 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_
17ec0 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
17ee0 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
17f00 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).{..__
17f20 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
17f40 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
17f60 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;
17f80 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
17fa0 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
17fc0 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
17fe0 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
18000 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
18020 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
18040 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
18060 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);.
18080 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
180a0 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,.
180c0 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
180e0 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.
18100 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
18120 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,
18140 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
18160 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
18180 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,.....
181a0 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
181c0 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
181e0 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
18200 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);.
18220 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
18240 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_
18260 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
18280 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
182a0 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
182c0 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
182e0 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));./
18300 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
18320 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
18340 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
18360 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
18380 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,.
183a0 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
183c0 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
183e0 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
18400 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
18420 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
18440 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.
18460 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
18480 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
184a0 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
184c0 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
184e0 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
18500 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;..}.
18520 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
18540 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
18560 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
18580 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.=.
185a0 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
185c0 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.
185e0 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);..
18600 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
18620 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
18640 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,.
18660 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
18680 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
186a0 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
186c0 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.
186e0 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).|
18700 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
18720 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
18740 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
18760 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
18780 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
187a0 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)-
187c0 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
187e0 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
18800 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
18820 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
18840 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
18860 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
18880 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
188a0 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_
188c0 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
188e0 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
18900 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.*/
18920 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
18940 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_
18960 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)
18980 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
189a0 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)
189c0 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.*/.
189e0 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_
18a00 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);..
18a20 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_
18a40 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
18a60 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);..
18a80 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:.
18aa0 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
18ac0 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_
18ae0 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
18b00 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,
18b20 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
18b40 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.
18b60 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.
18b80 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
18ba0 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..
18bc0 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
18be0 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
18c00 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,.......
18c20 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
18c40 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
18c60 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,
18c80 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.
18ca0 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.=.
18cc0 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
18ce0 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,..........
18d00 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
18d20 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
18d40 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
18d60 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
18d80 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
18da0 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
18dc0 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,.
18de0 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,....
18e00 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
18e20 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
18e40 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
18e60 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
18e80 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,..
18ea0 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
18ec0 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)
18ee0 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
18f00 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);
18f20 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_
18f40 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
18f60 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
18f80 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
18fa0 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,.
18fc0 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
18fe0 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
19000 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
19020 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
19040 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);
19060 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)
19080 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
190a0 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
190c0 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
190e0 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
19100 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(
19120 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
19140 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
19160 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
19180 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
191a0 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
191c0 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
191e0 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
19200 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_
19220 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
19240 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_
19260 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
19280 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
192a0 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.
192c0 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
192e0 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
19300 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...
19320 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.
19340 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.*
19360 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
19380 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
193a0 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,.__
193c0 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
193e0 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
19400 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
19420 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
19440 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
19460 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
19480 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
194a0 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
194c0 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.=.
194e0 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
19500 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
19520 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
19540 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
19560 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.
19580 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
195a0 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.+............
195c0 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.=
195e0 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
19600 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
19620 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;...}..}..
19640 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_
19660 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
19680 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.
196a0 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
196c0 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
196e0 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
19700 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
19720 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
19740 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,.
19760 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
19780 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
197a0 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
197c0 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
197e0 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;..
19800 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
19820 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
19840 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
19860 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
19880 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
198a0 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.
198c0 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
198e0 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)
19900 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
19920 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,
19940 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
19960 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
19980 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
199a0 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
199c0 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
199e0 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
19a00 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
19a20 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
19a40 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.
19a60 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,...
19a80 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).{..
19aa0 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
19ac0 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)
19ae0 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
19b00 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
19b20 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,
19b40 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,.
19b60 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
19b80 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
19ba0 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
19bc0 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
19be0 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./*
19c00 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.*/..
19c20 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.
19c40 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.
19c60 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
19c80 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
19ca0 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...*/
19cc0 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
19ce0 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
19d00 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
19d20 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
19d40 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
19d60 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
19d80 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
19da0 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;
19dc0 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
19de0 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
19e00 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_
19e20 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
19e40 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.<.
19e60 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_
19e80 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,
19ea0 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;....
19ec0 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
19ee0 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)
19f00 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_
19f20 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.
19f40 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
19f60 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.
19f80 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.<.
19fa0 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
19fc0 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++).{.
19fe0 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.
1a000 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.>=
1a020 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
1a040 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.>.
1a060 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;......
1a080 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).|.
1a0a0 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
1a0c0 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.
1a0e0 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.
1a100 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.
1a120 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;....}...}.
1a140 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!
1a160 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
1a180 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.(
1a1a0 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
1a1c0 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).{...
1a1e0 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.
1a200 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].=.
1a220 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]);...
1a240 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
1a260 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
1a280 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
1a2a0 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
1a2c0 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
1a2e0 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.*
1a300 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
1a320 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
1a340 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.*
1a360 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
1a380 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
1a3a0 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
1a3c0 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
1a3e0 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.=.
1a400 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;..../*
1a420 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.=.
1a440 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.
1a460 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;..
1a480 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
1a4a0 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
1a4c0 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;..}..
1a4e0 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
1a500 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
1a520 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.
1a540 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
1a560 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
1a580 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
1a5a0 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
1a5c0 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;..../*
1a5e0 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!.*/..
1a600 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
1a620 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
1a640 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
1a660 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
1a680 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
1a6a0 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.
1a6c0 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
1a6e0 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)).>=
1a700 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
1a720 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
1a740 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
1a760 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;.....}
1a780 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.(
1a7a0 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
1a7c0 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.&.
1a7e0 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').{.
1a800 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;......}
1a820 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.>>=.
1a840 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;....}...
1a860 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
1a880 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:
1a8a0 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
1a8c0 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
1a8e0 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
1a900 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.
1a920 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,.
1a940 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.<=
1a960 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;..
1a980 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;
1a9a0 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
1a9c0 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++;...}
1a9e0 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,
1aa00 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
1aa20 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
1aa40 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.
1aa60 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,
1aa80 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
1aaa0 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
1aac0 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
1aae0 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
1ab00 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
1ab20 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+
1ab40 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
1ab60 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
1ab80 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;..*
1aba0 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.
1abc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1abe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ac00 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....................
1ac20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ac40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ac60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
1ac80 30 30 35 34 30 34 37 00 31 33 31 32 32 32 31 33 31 35 30 00 30 31 31 37 37 30 00 20 30 00 00 00 0054047.13122213150.011770..0...
1aca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1acc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ace0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ad00 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
1ad20 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
1ad40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ad60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ad80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ada0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1adc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ade0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ae00 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..*.
1ae20 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
1ae40 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,
1ae60 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
1ae80 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.
1aea0 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
1aec0 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..*.
1aee0 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_
1af00 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
1af20 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.
1af40 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
1af60 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.<
1af80 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
1afa0 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 63 68 65 64 2f 73 69 ring.h>.#include.<linux/sched/si
1afc0 67 6e 61 6c 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 75 61 63 63 65 73 73 2e gnal.h>.#include.<linux/uaccess.
1afe0 68 3e 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 h>.#include.<linux/in.h>.#includ
1b000 65 20 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 e.<linux/net.h>.#include.<linux/
1b020 6d 6d 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 mm.h>.#include.<linux/netdevice.
1b040 68 3e 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 h>.#include.<linux/signal.h>.#in
1b060 63 6c 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 clude.<linux/slab.h>.#include.<n
1b080 65 74 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 et/scm.h>.#include.<net/sock.h>.
1b0a0 23 69 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 #include.<linux/ipx.h>.#include.
1b0c0 3c 6c 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 <linux/poll.h>.#include.<linux/f
1b0e0 69 6c 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 ile.h>..#include."ncp_fs.h"..#in
1b100 63 6c 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 clude."ncpsign_kernel.h"..static
1b120 20 69 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 .int._recv(struct.socket.*sock,.
1b140 76 6f 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 void.*buf,.int.size,.unsigned.fl
1b160 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 3d 20 7b 4e 55 4c ags).{..struct.msghdr.msg.=.{NUL
1b180 4c 2c 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 L,.};..struct.kvec.iov.=.{buf,.s
1b1a0 69 7a 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 ize};..return.kernel_recvmsg(soc
1b1c0 6b 2c 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 k,.&msg,.&iov,.1,.size,.flags);.
1b1e0 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 5f 73 65 6e 64 28 73 74 72 75 63 74 20 73 6f 63 6b 65 }..static.int._send(struct.socke
1b200 74 20 2a 73 6f 63 6b 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 62 75 66 66 2c 20 69 6e 74 20 6c t.*sock,.const.void.*buff,.int.l
1b220 65 6e 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 20 2e 6d 73 en).{..struct.msghdr.msg.=.{..ms
1b240 67 5f 66 6c 61 67 73 20 3d 20 30 20 7d 3b 0a 09 73 74 72 75 63 74 20 6b 76 65 63 20 76 65 63 20 g_flags.=.0.};..struct.kvec.vec.
1b260 3d 20 7b 2e 69 6f 76 5f 62 61 73 65 20 3d 20 28 76 6f 69 64 20 2a 29 62 75 66 66 2c 20 2e 69 6f =.{.iov_base.=.(void.*)buff,..io
1b280 76 5f 6c 65 6e 20 3d 20 6c 65 6e 7d 3b 0a 09 69 6f 76 5f 69 74 65 72 5f 6b 76 65 63 28 26 6d 73 v_len.=.len};..iov_iter_kvec(&ms
1b2a0 67 2e 6d 73 67 5f 69 74 65 72 2c 20 57 52 49 54 45 20 7c 20 49 54 45 52 5f 4b 56 45 43 2c 20 26 g.msg_iter,.WRITE.|.ITER_KVEC,.&
1b2c0 76 65 63 2c 20 31 2c 20 6c 65 6e 29 3b 0a 09 72 65 74 75 72 6e 20 73 6f 63 6b 5f 73 65 6e 64 6d vec,.1,.len);..return.sock_sendm
1b2e0 73 67 28 73 6f 63 6b 2c 20 26 6d 73 67 29 3b 0a 7d 0a 0a 73 74 72 75 63 74 20 6e 63 70 5f 72 65 sg(sock,.&msg);.}..struct.ncp_re
1b300 71 75 65 73 74 5f 72 65 70 6c 79 20 7b 0a 09 73 74 72 75 63 74 20 6c 69 73 74 5f 68 65 61 64 20 quest_reply.{..struct.list_head.
1b320 72 65 71 3b 0a 09 77 61 69 74 5f 71 75 65 75 65 5f 68 65 61 64 5f 74 20 77 71 3b 0a 09 61 74 6f req;..wait_queue_head_t.wq;..ato
1b340 6d 69 63 5f 74 20 72 65 66 73 3b 0a 09 75 6e 73 69 67 6e 65 64 20 63 68 61 72 2a 20 72 65 70 6c mic_t.refs;..unsigned.char*.repl
1b360 79 5f 62 75 66 3b 0a 09 73 69 7a 65 5f 74 20 64 61 74 61 6c 65 6e 3b 0a 09 69 6e 74 20 72 65 73 y_buf;..size_t.datalen;..int.res
1b380 75 6c 74 3b 0a 09 65 6e 75 6d 20 7b 20 52 51 5f 44 4f 4e 45 2c 20 52 51 5f 49 4e 50 52 4f 47 52 ult;..enum.{.RQ_DONE,.RQ_INPROGR
1b3a0 45 53 53 2c 20 52 51 5f 51 55 45 55 45 44 2c 20 52 51 5f 49 44 4c 45 2c 20 52 51 5f 41 42 41 4e ESS,.RQ_QUEUED,.RQ_IDLE,.RQ_ABAN
1b3c0 44 4f 4e 45 44 20 7d 20 73 74 61 74 75 73 3b 0a 09 73 74 72 75 63 74 20 69 6f 76 5f 69 74 65 72 DONED.}.status;..struct.iov_iter
1b3e0 20 66 72 6f 6d 3b 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 .from;..struct.kvec.tx_iov[3];..
1b400 75 5f 69 6e 74 31 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 u_int16_t.tx_type;..u_int32_t.si
1b420 67 6e 5b 36 5d 3b 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 gn[6];.};..static.inline.struct.
1b440 6e 63 70 5f 72 65 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 ncp_request_reply*.ncp_alloc_req
1b460 28 76 6f 69 64 29 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 (void).{..struct.ncp_request_rep
1b480 6c 79 20 2a 72 65 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 ly.*req;...req.=.kmalloc(sizeof(
1b4a0 73 74 72 75 63 74 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 struct.ncp_request_reply),.GFP_K
1b4c0 45 52 4e 45 4c 29 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 ERNEL);..if.(!req)...return.NULL
1b4e0 3b 0a 0a 09 69 6e 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 ;...init_waitqueue_head(&req->wq
1b500 29 3b 0a 09 61 74 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 );..atomic_set(&req->refs,.(1));
1b520 0a 09 72 65 71 2d 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 ..req->status.=.RQ_IDLE;...retur
1b540 6e 20 72 65 71 3b 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 n.req;.}..static.void.ncp_req_ge
1b560 74 28 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 t(struct.ncp_request_reply.*req)
1b580 0a 7b 0a 09 61 74 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 .{..atomic_inc(&req->refs);.}..s
1b5a0 74 61 74 69 63 20 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 tatic.void.ncp_req_put(struct.nc
1b5c0 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 69 66 20 28 61 74 6f p_request_reply.*req).{..if.(ato
1b5e0 6d 69 63 5f 64 65 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 mic_dec_and_test(&req->refs))...
1b600 6b 66 72 65 65 28 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 kfree(req);.}..void.ncp_tcp_data
1b620 5f 72 65 61 64 79 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 _ready(struct.sock.*sk).{..struc
1b640 74 20 6e 63 70 5f 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 t.ncp_server.*server.=.sk->sk_us
1b660 65 72 5f 64 61 74 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 er_data;...server->data_ready(sk
1b680 29 3b 0a 09 73 63 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 );..schedule_work(&server->rcv.t
1b6a0 71 29 3b 0a 7d 0a 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 q);.}..void.ncp_tcp_error_report
1b6c0 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_
1b6e0 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
1b700 61 3b 0a 09 0a 09 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 a;....server->error_report(sk);.
1b720 09 73 63 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 .schedule_work(&server->rcv.tq);
1b740 0a 7d 0a 0a 76 6f 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 .}..void.ncp_tcp_write_space(str
1b760 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 73 65 72 76 uct.sock.*sk).{..struct.ncp_serv
1b780 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 61 3b 0a 09 er.*server.=.sk->sk_user_data;..
1b7a0 0a 09 2f 2a 20 57 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 ../*.We.do.not.need.any.locking:
1b7c0 20 77 65 20 66 69 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 .we.first.set.tx.creq,.and.then.
1b7e0 77 65 20 64 6f 20 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 we.do.sendmsg,.....not.vice.vers
1b800 61 2e 2e 2e 20 2a 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 a....*/..server->write_space(sk)
1b820 3b 0a 09 69 66 20 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 ;..if.(server->tx.creq)...schedu
1b840 6c 65 5f 77 6f 72 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 le_work(&server->tx.tq);.}..void
1b860 20 6e 63 70 64 67 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 .ncpdgram_timeout_call(unsigned.
1b880 6c 6f 6e 67 20 76 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 long.v).{..struct.ncp_server.*se
1b8a0 72 76 65 72 20 3d 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 rver.=.(void*)v;....schedule_wor
1b8c0 6b 28 26 73 65 72 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 k(&server->timeout_tq);.}..stati
1b8e0 63 20 69 6e 6c 69 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 c.inline.void.ncp_finish_request
1b900 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 75 (struct.ncp_server.*server,.stru
1b920 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 72 ct.ncp_request_reply.*req,.int.r
1b940 65 73 75 6c 74 29 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 esult).{..req->result.=.result;.
1b960 09 69 66 20 28 72 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 .if.(req->status.!=.RQ_ABANDONED
1b980 29 0a 09 09 6d 65 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 )...memcpy(req->reply_buf,.serve
1b9a0 72 2d 3e 72 78 62 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 r->rxbuf,.req->datalen);..req->s
1b9c0 74 61 74 75 73 20 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 tatus.=.RQ_DONE;..wake_up_all(&r
1b9e0 65 71 2d 3e 77 71 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 eq->wq);..ncp_req_put(req);.}..s
1ba00 74 61 74 69 63 20 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 tatic.void.__abort_ncp_connectio
1ba20 6e 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 n(struct.ncp_server.*server).{..
1ba40 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 3b 0a 0a struct.ncp_request_reply.*req;..
1ba60 09 6e 63 70 5f 69 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 .ncp_invalidate_conn(server);..d
1ba80 65 6c 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 29 3b 0a 09 el_timer(&server->timeout_tm);..
1baa0 77 68 69 6c 65 20 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 while.(!list_empty(&server->tx.r
1bac0 65 71 75 65 73 74 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 equests)).{...req.=.list_entry(s
1bae0 65 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 erver->tx.requests.next,.struct.
1bb00 6e 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 09 0a 09 09 6c 69 ncp_request_reply,.req);......li
1bb20 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 6e 63 70 5f 66 69 st_del_init(&req->req);...ncp_fi
1bb40 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 4f 29 3b nish_request(server,.req,.-EIO);
1bb60 0a 09 7d 0a 09 72 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 ..}..req.=.server->rcv.creq;..if
1bb80 20 28 72 65 71 29 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 .(req).{...server->rcv.creq.=.NU
1bba0 4c 4c 3b 0a 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 LL;...ncp_finish_request(server,
1bbc0 20 72 65 71 2c 20 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 .req,.-EIO);...server->rcv.ptr.=
1bbe0 20 4e 55 4c 4c 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 .NULL;...server->rcv.state.=.0;.
1bc00 09 7d 0a 09 72 65 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 .}..req.=.server->tx.creq;..if.(
1bc20 72 65 71 29 20 7b 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 req).{...server->tx.creq.=.NULL;
1bc40 0a 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 65 ...ncp_finish_request(server,.re
1bc60 71 2c 20 2d 45 49 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 q,.-EIO);..}.}..static.inline.in
1bc80 74 20 67 65 74 5f 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 t.get_conn_number(struct.ncp_rep
1bca0 6c 79 5f 68 65 61 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 ly_header.*rp).{..return.rp->con
1bcc0 6e 5f 6c 6f 77 20 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 n_low.|.(rp->conn_high.<<.8);.}.
1bce0 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 61 62 6f 72 74 5f .static.inline.void.__ncp_abort_
1bd00 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
1bd20 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
1bd40 2c 20 69 6e 74 20 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 ,.int.err).{../*.If.req.is.done,
1bd60 20 77 65 20 67 6f 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 .we.got.signal,.but.we.also.rece
1bd80 69 76 65 64 20 61 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 ived.answer....*/..switch.(req->
1bda0 73 74 61 74 75 73 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 status).{...case.RQ_IDLE:...case
1bdc0 20 52 51 5f 44 4f 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 .RQ_DONE:....break;...case.RQ_QU
1bde0 45 55 45 44 3a 0a 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 EUED:....list_del_init(&req->req
1be00 29 3b 0a 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 );....ncp_finish_request(server,
1be20 20 72 65 71 2c 20 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 .req,.err);....break;...case.RQ_
1be40 49 4e 50 52 4f 47 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 INPROGRESS:....req->status.=.RQ_
1be60 41 42 41 4e 44 4f 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 ABANDONED;....break;...case.RQ_A
1be80 42 41 4e 44 4f 4e 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 BANDONED:....break;..}.}..static
1bea0 20 69 6e 6c 69 6e 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 .inline.void.ncp_abort_request(s
1bec0 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 75 63 74 truct.ncp_server.*server,.struct
1bee0 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 65 72 72 .ncp_request_reply.*req,.int.err
1bf00 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 72 63 76 2e 63 72 65 ).{..mutex_lock(&server->rcv.cre
1bf20 71 5f 6d 75 74 65 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 q_mutex);..__ncp_abort_request(s
1bf40 65 72 76 65 72 2c 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 erver,.req,.err);..mutex_unlock(
1bf60 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 7d 0a 0a 73 74 61 &server->rcv.creq_mutex);.}..sta
1bf80 74 69 63 20 69 6e 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 tic.inline.void.__ncptcp_abort(s
1bfa0 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 5f 5f 61 truct.ncp_server.*server).{..__a
1bfc0 62 6f 72 74 5f 6e 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 bort_ncp_connection(server);.}..
1bfe0 73 74 61 74 69 63 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 static.int.ncpdgram_send(struct.
1c000 73 6f 63 6b 65 74 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 socket.*sock,.struct.ncp_request
1c020 5f 72 65 70 6c 79 20 2a 72 65 71 29 0a 7b 0a 09 73 74 72 75 63 74 20 6d 73 67 68 64 72 20 6d 73 _reply.*req).{..struct.msghdr.ms
1c040 67 20 3d 20 7b 20 2e 6d 73 67 5f 69 74 65 72 20 3d 20 72 65 71 2d 3e 66 72 6f 6d 2c 20 2e 6d 73 g.=.{..msg_iter.=.req->from,..ms
1c060 67 5f 66 6c 61 67 73 20 3d 20 4d 53 47 5f 44 4f 4e 54 57 41 49 54 20 7d 3b 0a 09 72 65 74 75 72 g_flags.=.MSG_DONTWAIT.};..retur
1c080 6e 20 73 6f 63 6b 5f 73 65 6e 64 6d 73 67 28 73 6f 63 6b 2c 20 26 6d 73 67 29 3b 0a 7d 0a 0a 73 n.sock_sendmsg(sock,.&msg);.}..s
1c0a0 74 61 74 69 63 20 76 6f 69 64 20 5f 5f 6e 63 70 74 63 70 5f 74 72 79 5f 73 65 6e 64 28 73 74 72 tatic.void.__ncptcp_try_send(str
1c0c0 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 63 uct.ncp_server.*server).{..struc
1c0e0 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 71 3b 0a 09 73 74 72 75 63 74 t.ncp_request_reply.*rq;..struct
1c100 20 6d 73 67 68 64 72 20 6d 73 67 20 3d 20 7b 20 2e 6d 73 67 5f 66 6c 61 67 73 20 3d 20 4d 53 47 .msghdr.msg.=.{..msg_flags.=.MSG
1c120 5f 4e 4f 53 49 47 4e 41 4c 20 7c 20 4d 53 47 5f 44 4f 4e 54 57 41 49 54 20 7d 3b 0a 09 69 6e 74 _NOSIGNAL.|.MSG_DONTWAIT.};..int
1c140 20 72 65 73 75 6c 74 3b 0a 0a 09 72 71 20 3d 20 73 65 72 76 65 72 2d 3e 74 78 2e 63 72 65 71 3b .result;...rq.=.server->tx.creq;
1c160 0a 09 69 66 20 28 21 72 71 29 0a 09 09 72 65 74 75 72 6e 3b 0a 0a 09 6d 73 67 2e 6d 73 67 5f 69 ..if.(!rq)...return;...msg.msg_i
1c180 74 65 72 20 3d 20 72 71 2d 3e 66 72 6f 6d 3b 0a 09 72 65 73 75 6c 74 20 3d 20 73 6f 63 6b 5f 73 ter.=.rq->from;..result.=.sock_s
1c1a0 65 6e 64 6d 73 67 28 73 65 72 76 65 72 2d 3e 6e 63 70 5f 73 6f 63 6b 2c 20 26 6d 73 67 29 3b 0a endmsg(server->ncp_sock,.&msg);.
1c1c0 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
1c1e0 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(
1c200 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
1c220 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,
1c240 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.(
1c260 21 6d 73 67 5f 64 61 74 61 5f 6c 65 66 74 28 26 6d 73 67 29 29 20 7b 0a 09 09 73 65 72 76 65 72 !msg_data_left(&msg)).{...server
1c280 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 74 78 2e 63 72 ->rcv.creq.=.rq;...server->tx.cr
1c2a0 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 2d 3e 66 72 6f eq.=.NULL;...return;..}..rq->fro
1c2c0 6d 20 3d 20 6d 73 67 2e 6d 73 67 5f 69 74 65 72 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 m.=.msg.msg_iter;.}..static.inli
1c2e0 6e 65 20 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 ne.void.ncp_init_header(struct.n
1c300 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 65 cp_server.*server,.struct.ncp_re
1c320 71 75 65 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 quest_reply.*req,.struct.ncp_req
1c340 75 65 73 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 uest_header.*h).{..req->status.=
1c360 20 52 51 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 .RQ_INPROGRESS;..h->conn_low.=.s
1c380 65 72 76 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 erver->connection;..h->conn_high
1c3a0 20 3d 20 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 .=.server->connection.>>.8;..h->
1c3c0 73 65 71 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 sequence.=.++server->sequence;.}
1c3e0 0a 09 0a 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 ...static.void.ncpdgram_start_re
1c400 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 72 2c quest(struct.ncp_server.*server,
1c420 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 29 0a .struct.ncp_request_reply.*req).
1c440 7b 0a 09 73 69 7a 65 5f 74 20 73 69 67 6e 6c 65 6e 2c 20 6c 65 6e 20 3d 20 72 65 71 2d 3e 74 78 {..size_t.signlen,.len.=.req->tx
1c460 5f 69 6f 76 5b 31 5d 2e 69 6f 76 5f 6c 65 6e 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 _iov[1].iov_len;..struct.ncp_req
1c480 75 65 73 74 5f 68 65 61 64 65 72 20 2a 68 20 3d 20 72 65 71 2d 3e 74 78 5f 69 6f 76 5b 31 5d 2e uest_header.*h.=.req->tx_iov[1].
1c4a0 69 6f 76 5f 62 61 73 65 3b 0a 09 0a 09 6e 63 70 5f 69 6e 69 74 5f 68 65 61 64 65 72 28 73 65 72 iov_base;....ncp_init_header(ser
1c4c0 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 67 6e 5f 70 61 ver,.req,.h);..signlen.=.sign_pa
1c4e0 63 6b 65 74 28 73 65 72 76 65 72 2c 0a 09 09 09 72 65 71 2d 3e 74 78 5f 69 6f 76 5b 31 5d 2e 69 cket(server,....req->tx_iov[1].i
1c500 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 71 75 ov_base.+.sizeof(struct.ncp_requ
1c520 65 73 74 5f 68 65 61 64 65 72 29 20 2d 20 31 2c 20 0a 09 09 09 6c 65 6e 20 2d 20 73 69 7a 65 6f est_header).-.1,.....len.-.sizeo
1c540 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 20 2b 20 31 f(struct.ncp_request_header).+.1
1c560 2c 0a 09 09 09 63 70 75 5f 74 6f 5f 6c 65 33 32 28 6c 65 6e 29 2c 20 72 65 71 2d 3e 73 69 67 6e ,....cpu_to_le32(len),.req->sign
1c580 29 3b 0a 09 69 66 20 28 73 69 67 6e 6c 65 6e 29 20 7b 0a 09 09 2f 2a 20 4e 43 50 20 6f 76 65 72 );..if.(signlen).{.../*.NCP.over
1c5a0 20 55 44 50 20 61 70 70 65 6e 64 73 20 73 69 67 6e 61 74 75 72 65 20 2a 2f 0a 09 09 72 65 71 2d .UDP.appends.signature.*/...req-
1c5c0 3e 74 78 5f 69 6f 76 5b 32 5d 2e 69 6f 76 5f 62 61 73 65 20 3d 20 72 65 71 2d 3e 73 69 67 6e 3b >tx_iov[2].iov_base.=.req->sign;
1c5e0 0a 09 09 72 65 71 2d 3e 74 78 5f 69 6f 76 5b 32 5d 2e 69 6f 76 5f 6c 65 6e 20 3d 20 73 69 67 6e ...req->tx_iov[2].iov_len.=.sign
1c600 6c 65 6e 3b 0a 09 7d 0a 09 69 6f 76 5f 69 74 65 72 5f 6b 76 65 63 28 26 72 65 71 2d 3e 66 72 6f len;..}..iov_iter_kvec(&req->fro
1c620 6d 2c 20 57 52 49 54 45 20 7c 20 49 54 45 52 5f 4b 56 45 43 2c 0a 09 09 09 72 65 71 2d 3e 74 78 m,.WRITE.|.ITER_KVEC,....req->tx
1c640 5f 69 6f 76 20 2b 20 31 2c 20 73 69 67 6e 6c 65 6e 20 3f 20 32 20 3a 20 31 2c 20 6c 65 6e 20 2b _iov.+.1,.signlen.?.2.:.1,.len.+
1c660 20 73 69 67 6e 6c 65 6e 29 3b 0a 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 20 3d 20 72 .signlen);..server->rcv.creq.=.r
1c680 65 71 3b 0a 09 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 6c 61 73 74 20 3d 20 73 65 72 76 eq;..server->timeout_last.=.serv
1c6a0 65 72 2d 3e 6d 2e 74 69 6d 65 5f 6f 75 74 3b 0a 09 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 er->m.time_out;..server->timeout
1c6c0 5f 72 65 74 72 69 65 73 20 3d 20 73 65 72 76 65 72 2d 3e 6d 2e 72 65 74 72 79 5f 63 6f 75 6e 74 _retries.=.server->m.retry_count
1c6e0 3b 0a 09 6e 63 70 64 67 72 61 6d 5f 73 65 6e 64 28 73 65 72 76 65 72 2d 3e 6e 63 70 5f 73 6f 63 ;..ncpdgram_send(server->ncp_soc
1c700 6b 2c 20 72 65 71 29 3b 0a 09 6d 6f 64 5f 74 69 6d 65 72 28 26 73 65 72 76 65 72 2d 3e 74 69 6d k,.req);..mod_timer(&server->tim
1c720 65 6f 75 74 5f 74 6d 2c 20 6a 69 66 66 69 65 73 20 2b 20 73 65 72 76 65 72 2d 3e 6d 2e 74 69 6d eout_tm,.jiffies.+.server->m.tim
1c740 65 5f 6f 75 74 29 3b 0a 7d 0a 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 54 43 50 5f 58 4d 49 54 5f e_out);.}..#define.NCP_TCP_XMIT_
1c760 4d 41 47 49 43 09 28 30 78 34 34 36 44 36 34 35 34 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f 54 MAGIC.(0x446D6454).#define.NCP_T
1c780 43 50 5f 58 4d 49 54 5f 56 45 52 53 49 4f 4e 09 28 31 29 0a 23 64 65 66 69 6e 65 20 4e 43 50 5f CP_XMIT_VERSION.(1).#define.NCP_
1c7a0 54 43 50 5f 52 43 56 44 5f 4d 41 47 49 43 09 28 30 78 37 34 34 45 36 33 35 30 29 0a 0a 73 74 61 TCP_RCVD_MAGIC.(0x744E6350)..sta
1c7c0 74 69 63 20 76 6f 69 64 20 6e 63 70 74 63 70 5f 73 74 61 72 74 5f 72 65 71 75 65 73 74 28 73 74 tic.void.ncptcp_start_request(st
1c7e0 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 75 63 74 20 ruct.ncp_server.*server,.struct.
1c800 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 73 69 7a 65 5f ncp_request_reply.*req).{..size_
1c820 74 20 73 69 67 6e 6c 65 6e 2c 20 6c 65 6e 20 3d 20 72 65 71 2d 3e 74 78 5f 69 6f 76 5b 31 5d 2e t.signlen,.len.=.req->tx_iov[1].
1c840 69 6f 76 5f 6c 65 6e 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 68 65 61 iov_len;..struct.ncp_request_hea
1c860 64 65 72 20 2a 68 20 3d 20 72 65 71 2d 3e 74 78 5f 69 6f 76 5b 31 5d 2e 69 6f 76 5f 62 61 73 65 der.*h.=.req->tx_iov[1].iov_base
1c880 3b 0a 0a 09 6e 63 70 5f 69 6e 69 74 5f 68 65 61 64 65 72 28 73 65 72 76 65 72 2c 20 72 65 71 2c ;...ncp_init_header(server,.req,
1c8a0 20 68 29 3b 0a 09 73 69 67 6e 6c 65 6e 20 3d 20 73 69 67 6e 5f 70 61 63 6b 65 74 28 73 65 72 76 .h);..signlen.=.sign_packet(serv
1c8c0 65 72 2c 20 72 65 71 2d 3e 74 78 5f 69 6f 76 5b 31 5d 2e 69 6f 76 5f 62 61 73 65 20 2b 20 73 69 er,.req->tx_iov[1].iov_base.+.si
1c8e0 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 20 zeof(struct.ncp_request_header).
1c900 2d 20 31 2c 0a 09 09 09 6c 65 6e 20 2d 20 73 69 7a 65 6f 66 28 73 74 72 75 63 74 20 6e 63 70 5f -.1,....len.-.sizeof(struct.ncp_
1c920 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 5f 62 request_header).+.1,....cpu_to_b
1c940 65 33 32 28 6c 65 6e 20 2b 20 32 34 29 2c 20 72 65 71 2d 3e 73 69 67 6e 20 2b 20 34 29 20 2b 20 e32(len.+.24),.req->sign.+.4).+.
1c960 31 36 3b 0a 0a 09 72 65 71 2d 3e 73 69 67 6e 5b 30 5d 20 3d 20 68 74 6f 6e 6c 28 4e 43 50 5f 54 16;...req->sign[0].=.htonl(NCP_T
1c980 43 50 5f 58 4d 49 54 5f 4d 41 47 49 43 29 3b 0a 09 72 65 71 2d 3e 73 69 67 6e 5b 31 5d 20 3d 20 CP_XMIT_MAGIC);..req->sign[1].=.
1c9a0 68 74 6f 6e 6c 28 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 htonl(len.+.signlen);..req->sign
1c9c0 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
1c9e0 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
1ca00 74 61 6c 65 6e 20 2b 20 38 29 3b 0a 09 2f 2a 20 4e 43 50 20 6f 76 65 72 20 54 43 50 20 70 72 65 talen.+.8);../*.NCP.over.TCP.pre
1ca20 70 65 6e 64 73 20 73 69 67 6e 61 74 75 72 65 20 2a 2f 0a 09 72 65 71 2d 3e 74 78 5f 69 6f 76 5b pends.signature.*/..req->tx_iov[
1ca40 30 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 72 65 71 2d 3e 74 0].iov_base.=.req->sign;..req->t
1ca60 78 5f 69 6f 76 5b 30 5d 2e 69 6f 76 5f 6c 65 6e 20 3d 20 73 69 67 6e 6c 65 6e 3b 0a 09 69 6f 76 x_iov[0].iov_len.=.signlen;..iov
1ca80 5f 69 74 65 72 5f 6b 76 65 63 28 26 72 65 71 2d 3e 66 72 6f 6d 2c 20 57 52 49 54 45 20 7c 20 49 _iter_kvec(&req->from,.WRITE.|.I
1caa0 54 45 52 5f 4b 56 45 43 2c 0a 09 09 09 72 65 71 2d 3e 74 78 5f 69 6f 76 2c 20 32 2c 20 6c 65 6e TER_KVEC,....req->tx_iov,.2,.len
1cac0 20 2b 20 73 69 67 6e 6c 65 6e 29 3b 0a 0a 09 73 65 72 76 65 72 2d 3e 74 78 2e 63 72 65 71 20 3d .+.signlen);...server->tx.creq.=
1cae0 20 72 65 71 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 .req;..__ncptcp_try_send(server)
1cb00 3b 0a 7d 0a 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 ;.}..static.inline.void.__ncp_st
1cb20 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 2a 73 art_request(struct.ncp_server.*s
1cb40 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 79 20 erver,.struct.ncp_request_reply.
1cb60 2a 72 65 71 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 *req).{../*.we.copy.the.data.so.
1cb80 74 68 61 74 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 that.we.do.not.depend.on.the.cal
1cba0 6c 65 72 0a 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 ler.....staying.alive.*/..memcpy
1cbc0 28 73 65 72 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 (server->txbuf,.req->tx_iov[1].i
1cbe0 6f 76 5f 62 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 ov_base,.req->tx_iov[1].iov_len)
1cc00 3b 0a 09 72 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 ;..req->tx_iov[1].iov_base.=.ser
1cc20 76 65 72 2d 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 ver->txbuf;...if.(server->ncp_so
1cc40 63 6b 2d 3e 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 ck->type.==.SOCK_STREAM)...ncptc
1cc60 70 5f 73 74 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 p_start_request(server,.req);..e
1cc80 6c 73 65 0a 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 lse...ncpdgram_start_request(ser
1cca0 76 65 72 2c 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 ver,.req);.}..static.int.ncp_add
1ccc0 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 2a 73 65 72 76 _request(struct.ncp_server.*serv
1cce0 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 79 20 2a 72 65 er,.struct.ncp_request_reply.*re
1cd00 71 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 72 63 76 2e 63 72 q).{..mutex_lock(&server->rcv.cr
1cd20 65 71 5f 6d 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 eq_mutex);..if.(!ncp_conn_valid(
1cd40 73 65 72 76 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 server)).{...mutex_unlock(&serve
1cd60 72 2d 3e 72 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 r->rcv.creq_mutex);...pr_err("tc
1cd80 70 3a 20 53 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 p:.Server.died\n");...return.-EI
1cda0 4f 3b 0a 09 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 O;..}..ncp_req_get(req);..if.(se
1cdc0 72 76 65 72 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 rver->tx.creq.||.server->rcv.cre
1cde0 71 29 20 7b 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 q).{...req->status.=.RQ_QUEUED;.
1ce00 09 09 6c 69 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 ..list_add_tail(&req->req,.&serv
1ce20 65 72 2d 3e 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 er->tx.requests);...mutex_unlock
1ce40 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 72 65 74 (&server->rcv.creq_mutex);...ret
1ce60 75 72 6e 20 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 urn.0;..}..__ncp_start_request(s
1ce80 65 72 76 65 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 erver,.req);..mutex_unlock(&serv
1cea0 65 72 2d 3e 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 er->rcv.creq_mutex);..return.0;.
1cec0 7d 0a 0a 73 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 }..static.void.__ncp_next_reques
1cee0 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 0a 7b 0a 09 t(struct.ncp_server.*server).{..
1cf00 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 3b 0a 0a struct.ncp_request_reply.*req;..
1cf20 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 69 66 20 28 6c .server->rcv.creq.=.NULL;..if.(l
1cf40 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 73 29 29 ist_empty(&server->tx.requests))
1cf60 20 7b 0a 09 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 .{...return;..}..req.=.list_entr
1cf80 79 28 73 65 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 y(server->tx.requests.next,.stru
1cfa0 63 74 20 6e 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 ct.ncp_request_reply,.req);..lis
1cfc0 74 5f 64 65 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 t_del_init(&req->req);..__ncp_st
1cfe0 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 7d 0a 0a 73 74 61 art_request(server,.req);.}..sta
1d000 74 69 63 20 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 tic.void.info_server(struct.ncp_
1d020 73 65 72 76 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 server.*server,.unsigned.int.id,
1d040 20 63 6f 6e 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 .const.void.*.data,.size_t.len).
1d060 7b 0a 09 69 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 {..if.(server->info_sock).{...st
1d080 72 75 63 74 20 6d 73 67 68 64 72 20 6d 73 67 20 3d 20 7b 20 2e 6d 73 67 5f 66 6c 61 67 73 20 3d ruct.msghdr.msg.=.{..msg_flags.=
1d0a0 20 4d 53 47 5f 4e 4f 53 49 47 4e 41 4c 20 7d 3b 0a 09 09 5f 5f 62 65 33 32 20 68 64 72 5b 32 5d .MSG_NOSIGNAL.};...__be32.hdr[2]
1d0c0 20 3d 20 7b 63 70 75 5f 74 6f 5f 62 65 33 32 28 6c 65 6e 20 2b 20 38 29 2c 20 63 70 75 5f 74 6f .=.{cpu_to_be32(len.+.8),.cpu_to
1d0e0 5f 62 65 33 32 28 69 64 29 7d 3b 0a 09 09 73 74 72 75 63 74 20 6b 76 65 63 20 69 6f 76 5b 32 5d _be32(id)};...struct.kvec.iov[2]
1d100 20 3d 20 7b 0a 09 09 09 7b 2e 69 6f 76 5f 62 61 73 65 20 3d 20 68 64 72 2c 20 2e 69 6f 76 5f 6c .=.{....{.iov_base.=.hdr,..iov_l
1d120 65 6e 20 3d 20 38 7d 2c 0a 09 09 09 7b 2e 69 6f 76 5f 62 61 73 65 20 3d 20 28 76 6f 69 64 20 2a en.=.8},....{.iov_base.=.(void.*
1d140 29 64 61 74 61 2c 20 2e 69 6f 76 5f 6c 65 6e 20 3d 20 6c 65 6e 7d 2c 0a 09 09 7d 3b 0a 0a 09 09 )data,..iov_len.=.len},...};....
1d160 69 6f 76 5f 69 74 65 72 5f 6b 76 65 63 28 26 6d 73 67 2e 6d 73 67 5f 69 74 65 72 2c 20 49 54 45 iov_iter_kvec(&msg.msg_iter,.ITE
1d180 52 5f 4b 56 45 43 20 7c 20 57 52 49 54 45 2c 0a 09 09 09 09 69 6f 76 2c 20 32 2c 20 6c 65 6e 20 R_KVEC.|.WRITE,.....iov,.2,.len.
1d1a0 2b 20 38 29 3b 0a 0a 09 09 73 6f 63 6b 5f 73 65 6e 64 6d 73 67 28 73 65 72 76 65 72 2d 3e 69 6e +.8);....sock_sendmsg(server->in
1d1c0 66 6f 5f 73 6f 63 6b 2c 20 26 6d 73 67 29 3b 0a 09 7d 0a 7d 0a 0a 76 6f 69 64 20 6e 63 70 64 67 fo_sock,.&msg);..}.}..void.ncpdg
1d1e0 72 61 6d 5f 72 63 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 ram_rcv_proc(struct.work_struct.
1d200 2a 77 6f 72 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 72 *work).{..struct.ncp_server.*ser
1d220 76 65 72 20 3d 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 ver.=...container_of(work,.struc
1d240 74 20 6e 63 70 5f 73 65 72 76 65 72 2c 20 72 63 76 2e 74 71 29 3b 0a 09 73 74 72 75 63 74 20 73 t.ncp_server,.rcv.tq);..struct.s
1d260 6f 63 6b 65 74 2a 20 73 6f 63 6b 3b 0a 09 0a 09 73 6f 63 6b 20 3d 20 73 65 72 76 65 72 2d 3e 6e ocket*.sock;....sock.=.server->n
1d280 63 70 5f 73 6f 63 6b 3b 0a 09 0a 09 77 68 69 6c 65 20 28 31 29 20 7b 0a 09 09 73 74 72 75 63 74 cp_sock;....while.(1).{...struct
1d2a0 20 6e 63 70 5f 72 65 70 6c 79 5f 68 65 61 64 65 72 20 72 65 70 6c 79 3b 0a 09 09 69 6e 74 20 72 .ncp_reply_header.reply;...int.r
1d2c0 65 73 75 6c 74 3b 0a 0a 09 09 72 65 73 75 6c 74 20 3d 20 5f 72 65 63 76 28 73 6f 63 6b 2c 20 26 esult;....result.=._recv(sock,.&
1d2e0 72 65 70 6c 79 2c 20 73 69 7a 65 6f 66 28 72 65 70 6c 79 29 2c 20 4d 53 47 5f 50 45 45 4b 20 7c reply,.sizeof(reply),.MSG_PEEK.|
1d300 20 4d 53 47 5f 44 4f 4e 54 57 41 49 54 29 3b 0a 09 09 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 .MSG_DONTWAIT);...if.(result.<.0
1d320 29 20 7b 0a 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 20 3e ).{....break;...}...if.(result.>
1d340 3d 20 73 69 7a 65 6f 66 28 72 65 70 6c 79 29 29 20 7b 0a 09 09 09 73 74 72 75 63 74 20 6e 63 70 =.sizeof(reply)).{....struct.ncp
1d360 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 20 2a 72 65 71 3b 0a 09 0a 09 09 09 69 66 20 28 72 65 _request_reply.*req;......if.(re
1d380 70 6c 79 2e 74 79 70 65 20 3d 3d 20 4e 43 50 5f 57 41 54 43 48 44 4f 47 29 20 7b 0a 09 09 09 09 ply.type.==.NCP_WATCHDOG).{.....
1d3a0 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 62 75 66 5b 31 30 5d 3b 0a 0a 09 09 09 09 69 66 20 28 unsigned.char.buf[10];......if.(
1d3c0 73 65 72 76 65 72 2d 3e 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d 20 67 65 74 5f 63 6f 6e 6e 5f 6e server->connection.!=.get_conn_n
1d3e0 75 6d 62 65 72 28 26 72 65 70 6c 79 29 29 20 7b 0a 09 09 09 09 09 67 6f 74 6f 20 64 72 6f 70 3b umber(&reply)).{......goto.drop;
1d400 0a 09 09 09 09 7d 0a 09 09 09 09 72 65 73 75 6c 74 20 3d 20 5f 72 65 63 76 28 73 6f 63 6b 2c 20 .....}.....result.=._recv(sock,.
1d420 62 75 66 2c 20 73 69 7a 65 6f 66 28 62 75 66 29 2c 20 4d 53 47 5f 44 4f 4e 54 57 41 49 54 29 3b buf,.sizeof(buf),.MSG_DONTWAIT);
1d440 0a 09 09 09 09 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 20 7b 0a 09 09 09 09 09 6e 63 70 5f .....if.(result.<.0).{......ncp_
1d460 64 62 67 28 31 2c 20 22 72 65 63 76 20 66 61 69 6c 65 64 20 77 69 74 68 20 25 64 5c 6e 22 2c 20 dbg(1,."recv.failed.with.%d\n",.
1d480 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 09 result);......continue;.....}...
1d4a0 09 09 69 66 20 28 72 65 73 75 6c 74 20 3c 20 31 30 29 20 7b 0a 09 09 09 09 09 6e 63 70 5f 64 62 ..if.(result.<.10).{......ncp_db
1d4c0 67 28 31 2c 20 22 74 6f 6f 20 73 68 6f 72 74 20 28 25 75 29 20 77 61 74 63 68 64 6f 67 20 70 61 g(1,."too.short.(%u).watchdog.pa
1d4e0 63 6b 65 74 5c 6e 22 2c 20 72 65 73 75 6c 74 29 3b 0a 09 09 09 09 09 63 6f 6e 74 69 6e 75 65 3b cket\n",.result);......continue;
1d500 0a 09 09 09 09 7d 0a 09 09 09 09 69 66 20 28 62 75 66 5b 39 5d 20 21 3d 20 27 3f 27 29 20 7b 0a .....}.....if.(buf[9].!=.'?').{.
1d520 09 09 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 62 61 64 20 73 69 67 6e 61 74 75 72 65 20 28 .....ncp_dbg(1,."bad.signature.(
1d540 25 30 32 58 29 20 69 6e 20 77 61 74 63 68 64 6f 67 20 70 61 63 6b 65 74 5c 6e 22 2c 20 62 75 66 %02X).in.watchdog.packet\n",.buf
1d560 5b 39 5d 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 09 09 09 62 [9]);......continue;.....}.....b
1d580 75 66 5b 39 5d 20 3d 20 27 59 27 3b 0a 09 09 09 09 5f 73 65 6e 64 28 73 6f 63 6b 2c 20 62 75 66 uf[9].=.'Y';....._send(sock,.buf
1d5a0 2c 20 73 69 7a 65 6f 66 28 62 75 66 29 29 3b 0a 09 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 ,.sizeof(buf));.....continue;...
1d5c0 09 7d 0a 09 09 09 69 66 20 28 72 65 70 6c 79 2e 74 79 70 65 20 21 3d 20 4e 43 50 5f 50 4f 53 49 .}....if.(reply.type.!=.NCP_POSI
1d5e0 54 49 56 45 5f 41 43 4b 20 26 26 20 72 65 70 6c 79 2e 74 79 70 65 20 21 3d 20 4e 43 50 5f 52 45 TIVE_ACK.&&.reply.type.!=.NCP_RE
1d600 50 4c 59 29 20 7b 0a 09 09 09 09 72 65 73 75 6c 74 20 3d 20 5f 72 65 63 76 28 73 6f 63 6b 2c 20 PLY).{.....result.=._recv(sock,.
1d620 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 64 61 74 61 2c 20 server->unexpected_packet.data,.
1d640 73 69 7a 65 6f 66 28 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 sizeof(server->unexpected_packet
1d660 2e 64 61 74 61 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 28 72 .data),.MSG_DONTWAIT);.....if.(r
1d680 65 73 75 6c 74 20 3c 20 30 29 20 7b 0a 09 09 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 09 esult.<.0).{......continue;.....
1d6a0 7d 0a 09 09 09 09 69 6e 66 6f 5f 73 65 72 76 65 72 28 73 65 72 76 65 72 2c 20 30 2c 20 73 65 72 }.....info_server(server,.0,.ser
1d6c0 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 2c 20 72 65 73 ver->unexpected_packet.data,.res
1d6e0 75 6c 74 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 6d 75 74 65 ult);.....continue;....}....mute
1d700 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 78 29 3b x_lock(&server->rcv.creq_mutex);
1d720 0a 09 09 09 72 65 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 69 ....req.=.server->rcv.creq;....i
1d740 66 20 28 72 65 71 20 26 26 20 28 72 65 71 2d 3e 74 78 5f 74 79 70 65 20 3d 3d 20 4e 43 50 5f 41 f.(req.&&.(req->tx_type.==.NCP_A
1d760 4c 4c 4f 43 5f 53 4c 4f 54 5f 52 45 51 55 45 53 54 20 7c 7c 20 28 73 65 72 76 65 72 2d 3e 73 65 LLOC_SLOT_REQUEST.||.(server->se
1d780 71 75 65 6e 63 65 20 3d 3d 20 72 65 70 6c 79 2e 73 65 71 75 65 6e 63 65 20 26 26 20 0a 09 09 09 quence.==.reply.sequence.&&.....
1d7a0 09 09 73 65 72 76 65 72 2d 3e 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d 3d 20 67 65 74 5f 63 6f 6e 6e ..server->connection.==.get_conn
1d7c0 5f 6e 75 6d 62 65 72 28 26 72 65 70 6c 79 29 29 29 29 20 7b 0a 09 09 09 09 69 66 20 28 72 65 70 _number(&reply)))).{.....if.(rep
1d7e0 6c 79 2e 74 79 70 65 20 3d 3d 20 4e 43 50 5f 50 4f 53 49 54 49 56 45 5f 41 43 4b 29 20 7b 0a 09 ly.type.==.NCP_POSITIVE_ACK).{..
1d800 09 09 09 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 ....server->timeout_retries.=.se
1d820 72 76 65 72 2d 3e 6d 2e 72 65 74 72 79 5f 63 6f 75 6e 74 3b 0a 09 09 09 09 09 73 65 72 76 65 72 rver->m.retry_count;......server
1d840 2d 3e 74 69 6d 65 6f 75 74 5f 6c 61 73 74 20 3d 20 4e 43 50 5f 4d 41 58 5f 52 50 43 5f 54 49 4d ->timeout_last.=.NCP_MAX_RPC_TIM
1d860 45 4f 55 54 3b 0a 09 09 09 09 09 6d 6f 64 5f 74 69 6d 65 72 28 26 73 65 72 76 65 72 2d 3e 74 69 EOUT;......mod_timer(&server->ti
1d880 6d 65 6f 75 74 5f 74 6d 2c 20 6a 69 66 66 69 65 73 20 2b 20 4e 43 50 5f 4d 41 58 5f 52 50 43 5f meout_tm,.jiffies.+.NCP_MAX_RPC_
1d8a0 54 49 4d 45 4f 55 54 29 3b 0a 09 09 09 09 7d 20 65 6c 73 65 20 69 66 20 28 72 65 70 6c 79 2e 74 TIMEOUT);.....}.else.if.(reply.t
1d8c0 79 70 65 20 3d 3d 20 4e 43 50 5f 52 45 50 4c 59 29 20 7b 0a 09 09 09 09 09 72 65 73 75 6c 74 20 ype.==.NCP_REPLY).{......result.
1d8e0 3d 20 5f 72 65 63 76 28 73 6f 63 6b 2c 20 73 65 72 76 65 72 2d 3e 72 78 62 75 66 2c 20 72 65 71 =._recv(sock,.server->rxbuf,.req
1d900 2d 3e 64 61 74 61 6c 65 6e 2c 20 4d 53 47 5f 44 4f 4e 54 57 41 49 54 29 3b 0a 23 69 66 64 65 66 ->datalen,.MSG_DONTWAIT);.#ifdef
1d920 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 0a 09 09 09 .CONFIG_NCPFS_PACKET_SIGNING....
1d940 09 09 69 66 20 28 72 65 73 75 6c 74 20 3e 3d 20 30 20 26 26 20 73 65 72 76 65 72 2d 3e 73 69 67 ..if.(result.>=.0.&&.server->sig
1d960 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 5f n_active.&&.req->tx_type.!=.NCP_
1d980 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 09 69 66 DEALLOC_SLOT_REQUEST).{.......if
1d9a0 20 28 72 65 73 75 6c 74 20 3c 20 38 20 2b 20 38 29 20 7b 0a 09 09 09 09 09 09 09 72 65 73 75 6c .(result.<.8.+.8).{........resul
1d9c0 74 20 3d 20 2d 45 49 4f 3b 0a 09 09 09 09 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 09 09 09 09 t.=.-EIO;.......}.else.{........
1d9e0 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 68 64 72 6c 3b 0a 09 09 09 09 09 09 09 0a 09 09 09 09 09 unsigned.int.hdrl;..............
1da00 09 09 72 65 73 75 6c 74 20 2d 3d 20 38 3b 0a 09 09 09 09 09 09 09 68 64 72 6c 20 3d 20 73 6f 63 ..result.-=.8;........hdrl.=.soc
1da20 6b 2d 3e 73 6b 2d 3e 73 6b 5f 66 61 6d 69 6c 79 20 3d 3d 20 41 46 5f 49 4e 45 54 20 3f 20 38 20 k->sk->sk_family.==.AF_INET.?.8.
1da40 3a 20 36 3b 0a 09 09 09 09 09 09 09 69 66 20 28 73 69 67 6e 5f 76 65 72 69 66 79 5f 72 65 70 6c :.6;........if.(sign_verify_repl
1da60 79 28 73 65 72 76 65 72 2c 20 73 65 72 76 65 72 2d 3e 72 78 62 75 66 20 2b 20 68 64 72 6c 2c 20 y(server,.server->rxbuf.+.hdrl,.
1da80 72 65 73 75 6c 74 20 2d 20 68 64 72 6c 2c 20 63 70 75 5f 74 6f 5f 6c 65 33 32 28 72 65 73 75 6c result.-.hdrl,.cpu_to_le32(resul
1daa0 74 29 2c 20 73 65 72 76 65 72 2d 3e 72 78 62 75 66 20 2b 20 72 65 73 75 6c 74 29 29 20 7b 0a 09 t),.server->rxbuf.+.result)).{..
1dac0 09 09 09 09 09 09 09 70 72 5f 69 6e 66 6f 28 22 53 69 67 6e 61 74 75 72 65 20 76 69 6f 6c 61 74 .......pr_info("Signature.violat
1dae0 69 6f 6e 5c 6e 22 29 3b 0a 09 09 09 09 09 09 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 49 4f 3b 0a ion\n");.........result.=.-EIO;.
1db00 09 09 09 09 09 09 09 7d 0a 09 09 09 09 09 09 7d 0a 09 09 09 09 09 7d 0a 23 65 6e 64 69 66 0a 09 .......}.......}......}.#endif..
1db20 09 09 09 09 64 65 6c 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 ....del_timer(&server->timeout_t
1db40 6d 29 3b 0a 09 09 09 09 20 20 20 20 20 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 20 3d m);...........server->rcv.creq.=
1db60 20 4e 55 4c 4c 3b 0a 09 09 09 09 09 6e 63 70 5f 66 69 6e 69 73 68 5f 72 65 71 75 65 73 74 28 73 .NULL;......ncp_finish_request(s
1db80 65 72 76 65 72 2c 20 72 65 71 2c 20 72 65 73 75 6c 74 29 3b 0a 09 09 09 09 09 5f 5f 6e 63 70 5f erver,.req,.result);......__ncp_
1dba0 6e 65 78 74 5f 72 65 71 75 65 73 74 28 73 65 72 76 65 72 29 3b 0a 09 09 09 09 09 6d 75 74 65 78 next_request(server);......mutex
1dbc0 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 78 29 _unlock(&server->rcv.creq_mutex)
1dbe0 3b 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 7d 0a 09 09 09 6d ;......continue;.....}....}....m
1dc00 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
1dc20 74 65 78 29 3b 0a 09 09 7d 0a 64 72 6f 70 3a 3b 09 09 0a 09 09 5f 72 65 63 76 28 73 6f 63 6b 2c tex);...}.drop:;....._recv(sock,
1dc40 20 26 72 65 70 6c 79 2c 20 73 69 7a 65 6f 66 28 72 65 70 6c 79 29 2c 20 4d 53 47 5f 44 4f 4e 54 .&reply,.sizeof(reply),.MSG_DONT
1dc60 57 41 49 54 29 3b 0a 09 7d 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 5f 5f 6e 63 70 64 67 WAIT);..}.}..static.void.__ncpdg
1dc80 72 61 6d 5f 74 69 6d 65 6f 75 74 5f 70 72 6f 63 28 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 ram_timeout_proc(struct.ncp_serv
1dca0 65 72 20 2a 73 65 72 76 65 72 29 0a 7b 0a 09 2f 2a 20 49 66 20 74 69 6d 65 72 20 69 73 20 70 65 er.*server).{../*.If.timer.is.pe
1dcc0 6e 64 69 6e 67 2c 20 77 65 20 61 72 65 20 70 72 6f 63 65 73 73 69 6e 67 20 61 6e 6f 74 68 65 72 nding,.we.are.processing.another
1dce0 20 72 65 71 75 65 73 74 2e 2e 2e 20 2a 2f 0a 09 69 66 20 28 21 74 69 6d 65 72 5f 70 65 6e 64 69 .request....*/..if.(!timer_pendi
1dd00 6e 67 28 26 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 74 6d 29 29 20 7b 0a 09 09 73 74 72 ng(&server->timeout_tm)).{...str
1dd20 75 63 74 20 6e 63 70 5f 72 65 71 75 65 73 74 5f 72 65 70 6c 79 2a 20 72 65 71 3b 0a 09 09 0a 09 uct.ncp_request_reply*.req;.....
1dd40 09 72 65 71 20 3d 20 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 3b 0a 09 09 69 66 20 28 72 .req.=.server->rcv.creq;...if.(r
1dd60 65 71 29 20 7b 0a 09 09 09 69 6e 74 20 74 69 6d 65 6f 75 74 3b 0a 09 09 09 0a 09 09 09 69 66 20 eq).{....int.timeout;........if.
1dd80 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 53 4f 46 (server->m.flags.&.NCP_MOUNT_SOF
1dda0 54 29 20 7b 0a 09 09 09 09 69 66 20 28 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 72 65 74 T).{.....if.(server->timeout_ret
1ddc0 72 69 65 73 2d 2d 20 3d 3d 20 30 29 20 7b 0a 09 09 09 09 09 5f 5f 6e 63 70 5f 61 62 6f 72 74 5f ries--.==.0).{......__ncp_abort_
1dde0 72 65 71 75 65 73 74 28 73 65 72 76 65 72 2c 20 72 65 71 2c 20 2d 45 54 49 4d 45 44 4f 55 54 29 request(server,.req,.-ETIMEDOUT)
1de00 3b 0a 09 09 09 09 09 72 65 74 75 72 6e 3b 0a 09 09 09 09 7d 0a 09 09 09 7d 0a 09 09 09 2f 2a 20 ;......return;.....}....}..../*.
1de20 49 67 6e 6f 72 65 20 65 72 72 6f 72 73 20 2a 2f 0a 09 09 09 6e 63 70 64 67 72 61 6d 5f 73 65 6e Ignore.errors.*/....ncpdgram_sen
1de40 64 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 09 09 74 69 6d d(server->ncp_sock,.req);....tim
1de60 65 6f 75 74 20 3d 20 73 65 72 76 65 72 2d 3e 74 69 6d 65 6f 75 74 5f 6c 61 73 74 20 3c 3c 20 31 eout.=.server->timeout_last.<<.1
1de80 3b 0a 09 09 09 69 66 20 28 74 69 6d 65 6f 75 74 20 3e 20 4e 43 50 5f 4d 41 58 5f 52 50 43 5f 54 ;....if.(timeout.>.NCP_MAX_RPC_T
1dea0 49 4d 45 4f 55 54 29 20 7b 0a 09 09 09 09 74 69 6d 65 6f 75 74 20 3d 20 4e 43 50 5f 4d 41 58 5f IMEOUT).{.....timeout.=.NCP_MAX_
1dec0 52 50 43 5f 54 49 4d 45 4f 55 54 3b 0a 09 09 09 7d 0a 09 09 09 73 65 72 76 65 72 2d 3e 74 69 6d RPC_TIMEOUT;....}....server->tim
1dee0 65 6f 75 74 5f 6c 61 73 74 20 3d 20 74 69 6d 65 6f 75 74 3b 0a 09 09 09 6d 6f 64 5f 74 69 6d 65 eout_last.=.timeout;....mod_time
1df00 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 20 2b r(&server->timeout_tm,.jiffies.+
1df20 20 74 69 6d 65 6f 75 74 29 3b 0a 09 09 7d 0a 09 7d 0a 7d 0a 0a 76 6f 69 64 20 6e 63 70 64 67 72 .timeout);...}..}.}..void.ncpdgr
1df40 61 6d 5f 74 69 6d 65 6f 75 74 5f 70 72 6f 63 28 73 74 72 75 63 74 20 77 6f 72 6b 5f 73 74 72 75 am_timeout_proc(struct.work_stru
1df60 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 65 72 76 65 72 20 2a ct.*work).{..struct.ncp_server.*
1df80 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 6f 72 6b 2c 20 73 74 server.=...container_of(work,.st
1dfa0 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2c 20 74 69 6d 65 6f 75 74 5f 74 71 29 3b 0a 09 6d ruct.ncp_server,.timeout_tq);..m
1dfc0 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
1dfe0 78 29 3b 0a 09 5f 5f 6e 63 70 64 67 72 61 6d 5f 74 69 6d 65 6f 75 74 5f 70 72 6f 63 28 73 65 72 x);..__ncpdgram_timeout_proc(ser
1e000 76 65 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 ver);..mutex_unlock(&server->rcv
1e020 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 74 20 64 6f 5f 74 .creq_mutex);.}..static.int.do_t
1e040 63 70 5f 72 63 76 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 cp_rcv(struct.ncp_server.*server
1e060 2c 20 76 6f 69 64 20 2a 62 75 66 66 65 72 2c 20 73 69 7a 65 5f 74 20 6c 65 6e 29 0a 7b 0a 09 69 ,.void.*buffer,.size_t.len).{..i
1e080 6e 74 20 72 65 73 75 6c 74 3b 0a 09 0a 09 69 66 20 28 62 75 66 66 65 72 29 20 7b 0a 09 09 72 65 nt.result;....if.(buffer).{...re
1e0a0 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 20 62 sult.=._recv(server->ncp_sock,.b
1e0c0 75 66 66 65 72 2c 20 6c 65 6e 2c 20 4d 53 47 5f 44 4f 4e 54 57 41 49 54 29 3b 0a 09 7d 20 65 6c uffer,.len,.MSG_DONTWAIT);..}.el
1e0e0 73 65 20 7b 0a 09 09 73 74 61 74 69 63 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 64 75 6d 6d se.{...static.unsigned.char.dumm
1e100 79 5b 31 30 32 34 5d 3b 0a 09 09 09 0a 09 09 69 66 20 28 6c 65 6e 20 3e 20 73 69 7a 65 6f 66 28 y[1024];.......if.(len.>.sizeof(
1e120 64 75 6d 6d 79 29 29 20 7b 0a 09 09 09 6c 65 6e 20 3d 20 73 69 7a 65 6f 66 28 64 75 6d 6d 79 29 dummy)).{....len.=.sizeof(dummy)
1e140 3b 0a 09 09 7d 0a 09 09 72 65 73 75 6c 74 20 3d 20 5f 72 65 63 76 28 73 65 72 76 65 72 2d 3e 6e ;...}...result.=._recv(server->n
1e160 63 70 5f 73 6f 63 6b 2c 20 64 75 6d 6d 79 2c 20 6c 65 6e 2c 20 4d 53 47 5f 44 4f 4e 54 57 41 49 cp_sock,.dummy,.len,.MSG_DONTWAI
1e180 54 29 3b 0a 09 7d 0a 09 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 20 7b 0a 09 09 72 65 74 75 T);..}..if.(result.<.0).{...retu
1e1a0 72 6e 20 72 65 73 75 6c 74 3b 0a 09 7d 0a 09 69 66 20 28 72 65 73 75 6c 74 20 3e 20 6c 65 6e 29 rn.result;..}..if.(result.>.len)
1e1c0 20 7b 0a 09 09 70 72 5f 65 72 72 28 22 74 63 70 3a 20 62 75 67 20 69 6e 20 72 65 63 76 6d 73 67 .{...pr_err("tcp:.bug.in.recvmsg
1e1e0 20 28 25 75 20 3e 20 25 7a 75 29 5c 6e 22 2c 20 72 65 73 75 6c 74 2c 20 6c 65 6e 29 3b 0a 09 09 .(%u.>.%zu)\n",.result,.len);...
1e200 72 65 74 75 72 6e 20 2d 45 49 4f 3b 09 09 09 0a 09 7d 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c return.-EIO;.....}..return.resul
1e220 74 3b 0a 7d 09 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 5f 5f 6e 63 70 74 63 70 5f 72 63 76 5f 70 t;.}...static.int.__ncptcp_rcv_p
1e240 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 65 72 29 0a 7b roc(struct.ncp_server.*server).{
1e260 0a 09 2f 2a 20 57 65 20 68 61 76 65 20 74 6f 20 63 68 65 63 6b 20 74 68 65 20 72 65 73 75 6c 74 ../*.We.have.to.check.the.result
1e280 2c 20 73 6f 20 73 74 6f 72 65 20 74 68 65 20 63 6f 6d 70 6c 65 74 65 20 68 65 61 64 65 72 20 2a ,.so.store.the.complete.header.*
1e2a0 2f 0a 09 77 68 69 6c 65 20 28 31 29 20 7b 0a 09 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 09 09 73 /..while.(1).{...int.result;...s
1e2c0 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 3b 0a 09 09 truct.ncp_request_reply.*req;...
1e2e0 69 6e 74 20 64 61 74 61 6c 65 6e 3b 0a 09 09 69 6e 74 20 74 79 70 65 3b 0a 0a 09 09 77 68 69 6c int.datalen;...int.type;....whil
1e300 65 20 28 73 65 72 76 65 72 2d 3e 72 63 76 2e 6c 65 6e 29 20 7b 0a 09 09 09 72 65 73 75 6c 74 20 e.(server->rcv.len).{....result.
1e320 3d 20 64 6f 5f 74 63 70 5f 72 63 76 28 73 65 72 76 65 72 2c 20 73 65 72 76 65 72 2d 3e 72 63 76 =.do_tcp_rcv(server,.server->rcv
1e340 2e 70 74 72 2c 20 73 65 72 76 65 72 2d 3e 72 63 76 2e 6c 65 6e 29 3b 0a 09 09 09 69 66 20 28 72 .ptr,.server->rcv.len);....if.(r
1e360 65 73 75 6c 74 20 3d 3d 20 2d 45 41 47 41 49 4e 29 20 7b 0a 09 09 09 09 72 65 74 75 72 6e 20 30 esult.==.-EAGAIN).{.....return.0
1e380 3b 0a 09 09 09 7d 0a 09 09 09 69 66 20 28 72 65 73 75 6c 74 20 3c 3d 20 30 29 20 7b 0a 09 09 09 ;....}....if.(result.<=.0).{....
1e3a0 09 72 65 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 .req.=.server->rcv.creq;.....if.
1e3c0 28 72 65 71 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 (req).{......__ncp_abort_request
1e3e0 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 7d 20 65 6c 73 65 20 (server,.req,.-EIO);.....}.else.
1e400 7b 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 09 {......__ncptcp_abort(server);..
1e420 09 09 09 7d 0a 09 09 09 09 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 20 7b 0a 09 09 09 09 09 ...}.....if.(result.<.0).{......
1e440 70 72 5f 65 72 72 28 22 74 63 70 3a 20 65 72 72 6f 72 20 69 6e 20 72 65 63 76 6d 73 67 3a 20 25 pr_err("tcp:.error.in.recvmsg:.%
1e460 64 5c 6e 22 2c 20 72 65 73 75 6c 74 29 3b 0a 09 09 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 09 d\n",.result);.....}.else.{.....
1e480 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 74 63 70 3a 20 45 4f 46 5c 6e 22 29 3b 0a 09 09 09 09 7d .ncp_dbg(1,."tcp:.EOF\n");.....}
1e4a0 0a 09 09 09 09 72 65 74 75 72 6e 20 2d 45 49 4f 3b 0a 09 09 09 7d 0a 09 09 09 69 66 20 28 73 65 .....return.-EIO;....}....if.(se
1e4c0 72 76 65 72 2d 3e 72 63 76 2e 70 74 72 29 20 7b 0a 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 rver->rcv.ptr).{.....server->rcv
1e4e0 2e 70 74 72 20 2b 3d 20 72 65 73 75 6c 74 3b 0a 09 09 09 7d 0a 09 09 09 73 65 72 76 65 72 2d 3e .ptr.+=.result;....}....server->
1e500 72 63 76 2e 6c 65 6e 20 2d 3d 20 72 65 73 75 6c 74 3b 0a 09 09 7d 0a 09 09 73 77 69 74 63 68 20 rcv.len.-=.result;...}...switch.
1e520 28 73 65 72 76 65 72 2d 3e 72 63 76 2e 73 74 61 74 65 29 20 7b 0a 09 09 09 63 61 73 65 20 30 3a (server->rcv.state).{....case.0:
1e540 0a 09 09 09 09 69 66 20 28 73 65 72 76 65 72 2d 3e 72 63 76 2e 62 75 66 2e 6d 61 67 69 63 20 21 .....if.(server->rcv.buf.magic.!
1e560 3d 20 68 74 6f 6e 6c 28 4e 43 50 5f 54 43 50 5f 52 43 56 44 5f 4d 41 47 49 43 29 29 20 7b 0a 09 =.htonl(NCP_TCP_RCVD_MAGIC)).{..
1e580 09 09 09 09 70 72 5f 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 ....pr_err("tcp:.Unexpected.repl
1e5a0 79 20 74 79 70 65 20 25 30 38 58 5c 6e 22 2c 20 6e 74 6f 68 6c 28 73 65 72 76 65 72 2d 3e 72 63 y.type.%08X\n",.ntohl(server->rc
1e5c0 76 2e 62 75 66 2e 6d 61 67 69 63 29 29 3b 0a 09 09 09 09 09 5f 5f 6e 63 70 74 63 70 5f 61 62 6f v.buf.magic));......__ncptcp_abo
1e5e0 72 74 28 73 65 72 76 65 72 29 3b 0a 09 09 09 09 09 72 65 74 75 72 6e 20 2d 45 49 4f 3b 0a 09 09 rt(server);......return.-EIO;...
1e600 09 09 7d 0a 09 09 09 09 64 61 74 61 6c 65 6e 20 3d 20 6e 74 6f 68 6c 28 73 65 72 76 65 72 2d 3e ..}.....datalen.=.ntohl(server->
1e620 72 63 76 2e 62 75 66 2e 6c 65 6e 29 20 26 20 30 78 30 46 46 46 46 46 46 46 3b 0a 09 09 09 09 69 rcv.buf.len).&.0x0FFFFFFF;.....i
1e640 66 20 28 64 61 74 61 6c 65 6e 20 3c 20 31 30 29 20 7b 0a 09 09 09 09 09 70 72 5f 65 72 72 28 22 f.(datalen.<.10).{......pr_err("
1e660 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 64 5c 6e 22 2c tcp:.Unexpected.reply.len.%d\n",
1e680 20 64 61 74 61 6c 65 6e 29 3b 0a 09 09 09 09 09 5f 5f 6e 63 70 74 63 70 5f 61 62 6f 72 74 28 73 .datalen);......__ncptcp_abort(s
1e6a0 65 72 76 65 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 erver);......return.-EIO;.....}.
1e6c0 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 49 47 4e 49 #ifdef.CONFIG_NCPFS_PACKET_SIGNI
1e6e0 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 67 6e 5f 61 63 74 69 NG.........if.(server->sign_acti
1e700 76 65 29 20 7b 0a 09 09 09 09 09 69 66 20 28 64 61 74 61 6c 65 6e 20 3c 20 31 38 29 20 7b 0a 09 ve).{......if.(datalen.<.18).{..
1e720 09 09 09 09 09 70 72 5f 65 72 72 28 22 74 63 70 3a 20 55 6e 65 78 70 65 63 74 65 64 20 72 65 70 .....pr_err("tcp:.Unexpected.rep
1e740 6c 79 20 6c 65 6e 20 25 64 5c 6e 22 2c 20 64 61 74 61 6c 65 6e 29 3b 0a 09 09 09 09 09 09 5f 5f ly.len.%d\n",.datalen);.......__
1e760 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 09 09 72 65 74 75 ncptcp_abort(server);.......retu
1e780 72 6e 20 2d 45 49 4f 3b 0a 09 09 09 09 09 7d 0a 09 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 rn.-EIO;......}......server->rcv
1e7a0 2e 62 75 66 2e 6c 65 6e 20 3d 20 64 61 74 61 6c 65 6e 20 2d 20 38 3b 0a 09 09 09 09 09 73 65 72 .buf.len.=.datalen.-.8;......ser
1e7c0 76 65 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 ver->rcv.ptr.=.(unsigned.char*)&
1e7e0 73 65 72 76 65 72 2d 3e 72 63 76 2e 62 75 66 2e 70 31 3b 0a 09 09 09 09 09 73 65 72 76 65 72 2d server->rcv.buf.p1;......server-
1e800 3e 72 63 76 2e 6c 65 6e 20 3d 20 38 3b 0a 09 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 73 >rcv.len.=.8;......server->rcv.s
1e820 74 61 74 65 20 3d 20 34 3b 0a 09 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 09 7d 0a 23 65 6e 64 tate.=.4;......break;.....}.#end
1e840 69 66 09 09 09 09 0a 09 09 09 09 74 79 70 65 20 3d 20 6e 74 6f 68 73 28 73 65 72 76 65 72 2d 3e if.........type.=.ntohs(server->
1e860 72 63 76 2e 62 75 66 2e 74 79 70 65 29 3b 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 rcv.buf.type);.#ifdef.CONFIG_NCP
1e880 46 53 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 09 09 09 09 0a 63 6f 6e 74 3a 3b 09 09 09 09 FS_PACKET_SIGNING.....cont:;....
1e8a0 0a 23 65 6e 64 69 66 0a 09 09 09 09 69 66 20 28 74 79 70 65 20 21 3d 20 4e 43 50 5f 52 45 50 4c .#endif.....if.(type.!=.NCP_REPL
1e8c0 59 29 20 7b 0a 09 09 09 09 09 69 66 20 28 64 61 74 61 6c 65 6e 20 2d 20 38 20 3c 3d 20 73 69 7a Y).{......if.(datalen.-.8.<=.siz
1e8e0 65 6f 66 28 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 64 61 eof(server->unexpected_packet.da
1e900 74 61 29 29 20 7b 0a 09 09 09 09 09 09 2a 28 5f 5f 75 31 36 2a 29 28 73 65 72 76 65 72 2d 3e 75 ta)).{.......*(__u16*)(server->u
1e920 6e 65 78 70 65 63 74 65 64 5f 70 61 63 6b 65 74 2e 64 61 74 61 29 20 3d 20 68 74 6f 6e 73 28 74 nexpected_packet.data).=.htons(t
1e940 79 70 65 29 3b 0a 09 09 09 09 09 09 73 65 72 76 65 72 2d 3e 75 6e 65 78 70 65 63 74 65 64 5f 70 ype);.......server->unexpected_p
1e960 61 63 6b 65 74 2e 6c 65 6e 20 3d 20 64 61 74 61 6c 65 6e 20 2d 20 38 3b 0a 0a 09 09 09 09 09 09 acket.len.=.datalen.-.8;........
1e980 73 65 72 76 65 72 2d 3e 72 63 76 2e 73 74 61 74 65 20 3d 20 35 3b 0a 09 09 09 09 09 09 73 65 72 server->rcv.state.=.5;.......ser
1e9a0 76 65 72 2d 3e 72 63 76 2e 70 74 72 20 3d 20 73 65 72 76 65 72 2d 3e 75 6e 65 78 70 65 63 74 65 ver->rcv.ptr.=.server->unexpecte
1e9c0 64 5f 70 61 63 6b 65 74 2e 64 61 74 61 20 2b 20 32 3b 0a 09 09 09 09 09 09 73 65 72 76 65 72 2d d_packet.data.+.2;.......server-
1e9e0 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 09 62 >rcv.len.=.datalen.-.10;.......b
1ea00 72 65 61 6b 3b 0a 09 09 09 09 09 7d 09 09 09 09 09 0a 09 09 09 09 09 6e 63 70 5f 64 62 67 28 31 reak;......}...........ncp_dbg(1
1ea20 2c 20 22 74 63 70 3a 20 55 6e 65 78 70 65 63 74 65 64 20 4e 43 50 20 74 79 70 65 20 25 30 32 58 ,."tcp:.Unexpected.NCP.type.%02X
1ea40 5c 6e 22 2c 20 74 79 70 65 29 3b 0a 73 6b 69 70 64 61 74 61 32 3a 3b 0a 09 09 09 09 09 73 65 72 \n",.type);.skipdata2:;......ser
1ea60 76 65 72 2d 3e 72 63 76 2e 73 74 61 74 65 20 3d 20 32 3b 0a 73 6b 69 70 64 61 74 61 3a 3b 0a 09 ver->rcv.state.=.2;.skipdata:;..
1ea80 09 09 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 0a 09 09 09 09 ....server->rcv.ptr.=.NULL;.....
1eaa0 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 6c 65 6e 20 3d 20 64 61 74 61 6c 65 6e 20 2d 20 31 30 3b .server->rcv.len.=.datalen.-.10;
1eac0 0a 09 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 09 7d 0a 09 09 09 09 72 65 71 20 3d 20 73 65 72 ......break;.....}.....req.=.ser
1eae0 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 3b 0a 09 09 09 09 69 66 20 28 21 72 65 71 29 20 7b 0a 09 ver->rcv.creq;.....if.(!req).{..
1eb00 09 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 52 65 70 6c 79 20 77 69 74 68 6f 75 74 20 61 70 ....ncp_dbg(1,."Reply.without.ap
1eb20 70 72 6f 70 72 69 61 74 65 20 72 65 71 75 65 73 74 5c 6e 22 29 3b 0a 09 09 09 09 09 67 6f 74 6f propriate.request\n");......goto
1eb40 20 73 6b 69 70 64 61 74 61 32 3b 0a 09 09 09 09 7d 0a 09 09 09 09 69 66 20 28 64 61 74 61 6c 65 .skipdata2;.....}.....if.(datale
1eb60 6e 20 3e 20 72 65 71 2d 3e 64 61 74 61 6c 65 6e 20 2b 20 38 29 20 7b 0a 09 09 09 09 09 70 72 5f n.>.req->datalen.+.8).{......pr_
1eb80 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.%
1eba0 64 20 28 65 78 70 65 63 74 65 64 20 61 74 20 6d 6f 73 74 20 25 7a 64 29 5c 6e 22 2c 20 64 61 74 d.(expected.at.most.%zd)\n",.dat
1ebc0 61 6c 65 6e 2c 20 72 65 71 2d 3e 64 61 74 61 6c 65 6e 20 2b 20 38 29 3b 0a 09 09 09 09 09 73 65 alen,.req->datalen.+.8);......se
1ebe0 72 76 65 72 2d 3e 72 63 76 2e 73 74 61 74 65 20 3d 20 33 3b 0a 09 09 09 09 09 67 6f 74 6f 20 73 rver->rcv.state.=.3;......goto.s
1ec00 6b 69 70 64 61 74 61 3b 0a 09 09 09 09 7d 0a 09 09 09 09 72 65 71 2d 3e 64 61 74 61 6c 65 6e 20 kipdata;.....}.....req->datalen.
1ec20 3d 20 64 61 74 61 6c 65 6e 20 2d 20 38 3b 0a 09 09 09 09 28 28 73 74 72 75 63 74 20 6e 63 70 5f =.datalen.-.8;.....((struct.ncp_
1ec40 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 75 66 29 2d 3e 74 79 reply_header*)server->rxbuf)->ty
1ec60 70 65 20 3d 20 4e 43 50 5f 52 45 50 4c 59 3b 0a 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e pe.=.NCP_REPLY;.....server->rcv.
1ec80 70 74 72 20 3d 20 73 65 72 76 65 72 2d 3e 72 78 62 75 66 20 2b 20 32 3b 0a 09 09 09 09 73 65 72 ptr.=.server->rxbuf.+.2;.....ser
1eca0 76 65 72 2d 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 ver->rcv.len.=.datalen.-.10;....
1ecc0 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 73 74 61 74 65 20 3d 20 31 3b 0a 09 09 09 09 62 72 65 61 .server->rcv.state.=.1;.....brea
1ece0 6b 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 54 5f 53 49 k;.#ifdef.CONFIG_NCPFS_PACKET_SI
1ed00 47 4e 49 4e 47 09 09 09 09 0a 09 09 09 63 61 73 65 20 34 3a 0a 09 09 09 09 64 61 74 61 6c 65 6e GNING........case.4:.....datalen
1ed20 20 3d 20 73 65 72 76 65 72 2d 3e 72 63 76 2e 62 75 66 2e 6c 65 6e 3b 0a 09 09 09 09 74 79 70 65 .=.server->rcv.buf.len;.....type
1ed40 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 74 79 70 65 32 29 3b .=.ntohs(server->rcv.buf.type2);
1ed60 0a 09 09 09 09 67 6f 74 6f 20 63 6f 6e 74 3b 0a 23 65 6e 64 69 66 0a 09 09 09 63 61 73 65 20 31 .....goto.cont;.#endif....case.1
1ed80 3a 0a 09 09 09 09 72 65 71 20 3d 20 73 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 3b 0a 09 09 :.....req.=.server->rcv.creq;...
1eda0 09 09 69 66 20 28 72 65 71 2d 3e 74 78 5f 74 79 70 65 20 21 3d 20 4e 43 50 5f 41 4c 4c 4f 43 5f ..if.(req->tx_type.!=.NCP_ALLOC_
1edc0 53 4c 4f 54 5f 52 45 51 55 45 53 54 29 20 7b 0a 09 09 09 09 09 69 66 20 28 28 28 73 74 72 75 63 SLOT_REQUEST).{......if.(((struc
1ede0 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 75 t.ncp_reply_header*)server->rxbu
1ee00 66 29 2d 3e 73 65 71 75 65 6e 63 65 20 21 3d 20 73 65 72 76 65 72 2d 3e 73 65 71 75 65 6e 63 65 f)->sequence.!=.server->sequence
1ee20 29 20 7b 0a 09 09 09 09 09 09 70 72 5f 65 72 72 28 22 74 63 70 3a 20 42 61 64 20 73 65 71 75 65 ).{.......pr_err("tcp:.Bad.seque
1ee40 6e 63 65 20 6e 75 6d 62 65 72 5c 6e 22 29 3b 0a 09 09 09 09 09 09 5f 5f 6e 63 70 5f 61 62 6f 72 nce.number\n");.......__ncp_abor
1ee60 74 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 4f 29 3b 0a 09 09 t_request(server,.req,.-EIO);...
1ee80 09 09 09 09 72 65 74 75 72 6e 20 2d 45 49 4f 3b 0a 09 09 09 09 09 7d 0a 09 09 09 09 09 69 66 20 ....return.-EIO;......}......if.
1eea0 28 28 28 28 73 74 72 75 63 74 20 6e 63 70 5f 72 65 70 6c 79 5f 68 65 61 64 65 72 2a 29 73 65 72 ((((struct.ncp_reply_header*)ser
1eec0 76 65 72 2d 3e 72 78 62 75 66 29 2d 3e 63 6f 6e 6e 5f 6c 6f 77 20 7c 20 28 28 28 73 74 72 75 63 ver->rxbuf)->conn_low.|.(((struc
1eee0 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 75 t.ncp_reply_header*)server->rxbu
1ef00 66 29 2d 3e 63 6f 6e 6e 5f 68 69 67 68 20 3c 3c 20 38 29 29 20 21 3d 20 73 65 72 76 65 72 2d 3e f)->conn_high.<<.8)).!=.server->
1ef20 63 6f 6e 6e 65 63 74 69 6f 6e 29 20 7b 0a 09 09 09 09 09 09 70 72 5f 65 72 72 28 22 74 63 70 3a connection).{.......pr_err("tcp:
1ef40 20 43 6f 6e 6e 65 63 74 69 6f 6e 20 6e 75 6d 62 65 72 20 6d 69 73 6d 61 74 63 68 5c 6e 22 29 3b .Connection.number.mismatch\n");
1ef60 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 28 73 65 72 76 65 .......__ncp_abort_request(serve
1ef80 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 6e 20 2d 45 49 4f r,.req,.-EIO);.......return.-EIO
1efa0 3b 0a 09 09 09 09 09 7d 0a 09 09 09 09 7d 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 ;......}.....}.#ifdef.CONFIG_NCP
1efc0 46 53 5f 50 41 43 4b 45 54 5f 53 49 47 4e 49 4e 47 09 09 09 09 0a 09 09 09 09 69 66 20 28 73 65 FS_PACKET_SIGNING.........if.(se
1efe0 72 76 65 72 2d 3e 73 69 67 6e 5f 61 63 74 69 76 65 20 26 26 20 72 65 71 2d 3e 74 78 5f 74 79 70 rver->sign_active.&&.req->tx_typ
1f000 65 20 21 3d 20 4e 43 50 5f 44 45 41 4c 4c 4f 43 5f 53 4c 4f 54 5f 52 45 51 55 45 53 54 29 20 7b e.!=.NCP_DEALLOC_SLOT_REQUEST).{
1f020 0a 09 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 ......if.(sign_verify_reply(serv
1f040 65 72 2c 20 73 65 72 76 65 72 2d 3e 72 78 62 75 66 20 2b 20 36 2c 20 72 65 71 2d 3e 64 61 74 61 er,.server->rxbuf.+.6,.req->data
1f060 6c 65 6e 20 2d 20 36 2c 20 63 70 75 5f 74 6f 5f 62 65 33 32 28 72 65 71 2d 3e 64 61 74 61 6c 65 len.-.6,.cpu_to_be32(req->datale
1f080 6e 20 2b 20 31 36 29 2c 20 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 62 75 66 2e 74 79 70 65 29 29 n.+.16),.&server->rcv.buf.type))
1f0a0 20 7b 0a 09 09 09 09 09 09 70 72 5f 65 72 72 28 22 74 63 70 3a 20 53 69 67 6e 61 74 75 72 65 20 .{.......pr_err("tcp:.Signature.
1f0c0 76 69 6f 6c 61 74 69 6f 6e 5c 6e 22 29 3b 0a 09 09 09 09 09 09 5f 5f 6e 63 70 5f 61 62 6f 72 74 violation\n");.......__ncp_abort
1f0e0 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 4f 29 3b 0a 09 09 09 _request(server,.req,.-EIO);....
1f100 09 09 09 72 65 74 75 72 6e 20 2d 45 49 4f 3b 0a 09 09 09 09 09 7d 0a 09 09 09 09 7d 0a 23 65 6e ...return.-EIO;......}.....}.#en
1f120 64 69 66 09 09 09 09 0a 09 09 09 09 6e 63 70 5f 66 69 6e 69 73 68 5f 72 65 71 75 65 73 74 28 73 dif.........ncp_finish_request(s
1f140 65 72 76 65 72 2c 20 72 65 71 2c 20 72 65 71 2d 3e 64 61 74 61 6c 65 6e 29 3b 0a 09 09 09 6e 65 erver,.req,.req->datalen);....ne
1f160 78 74 72 65 71 3a 3b 0a 09 09 09 09 5f 5f 6e 63 70 5f 6e 65 78 74 5f 72 65 71 75 65 73 74 28 73 xtreq:;.....__ncp_next_request(s
1f180 65 72 76 65 72 29 3b 0a 09 09 09 63 61 73 65 20 32 3a 0a 09 09 09 6e 65 78 74 3a 3b 0a 09 09 09 erver);....case.2:....next:;....
1f1a0 09 73 65 72 76 65 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 .server->rcv.ptr.=.(unsigned.cha
1f1c0 72 2a 29 26 73 65 72 76 65 72 2d 3e 72 63 76 2e 62 75 66 3b 0a 09 09 09 09 73 65 72 76 65 72 2d r*)&server->rcv.buf;.....server-
1f1e0 3e 72 63 76 2e 6c 65 6e 20 3d 20 31 30 3b 0a 09 09 09 09 73 65 72 76 65 72 2d 3e 72 63 76 2e 73 >rcv.len.=.10;.....server->rcv.s
1f200 74 61 74 65 20 3d 20 30 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 63 61 73 65 20 33 3a 0a tate.=.0;.....break;....case.3:.
1f220 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 73 ....ncp_finish_request(server,.s
1f240 65 72 76 65 72 2d 3e 72 63 76 2e 63 72 65 71 2c 20 2d 45 49 4f 29 3b 0a 09 09 09 09 67 6f 74 6f erver->rcv.creq,.-EIO);.....goto
1f260 20 6e 65 78 74 72 65 71 3b 0a 09 09 09 63 61 73 65 20 35 3a 0a 09 09 09 09 69 6e 66 6f 5f 73 65 .nextreq;....case.5:.....info_se
1f280 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 78 70 65 63 74 rver(server,.0,.server->unexpect
1f2a0 65 64 5f 70 61 63 6b 65 74 2e 64 61 74 61 2c 20 73 65 72 76 65 72 2d 3e 75 6e 65 78 70 65 63 74 ed_packet.data,.server->unexpect
1f2c0 65 64 5f 70 61 63 6b 65 74 2e 6c 65 6e 29 3b 0a 09 09 09 09 67 6f 74 6f 20 6e 65 78 74 3b 0a 09 ed_packet.len);.....goto.next;..
1f2e0 09 7d 0a 09 7d 0a 7d 0a 0a 76 6f 69 64 20 6e 63 70 5f 74 63 70 5f 72 63 76 5f 70 72 6f 63 28 73 .}..}.}..void.ncp_tcp_rcv_proc(s
1f300 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 09 73 74 72 75 truct.work_struct.*work).{..stru
1f320 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 6f 6e 74 61 69 ct.ncp_server.*server.=...contai
1f340 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 76 65 72 2c 20 ner_of(work,.struct.ncp_server,.
1f360 72 63 76 2e 74 71 29 3b 0a 0a 09 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 73 65 72 76 65 72 2d 3e 72 rcv.tq);...mutex_lock(&server->r
1f380 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 72 63 76 5f 70 72 cv.creq_mutex);..__ncptcp_rcv_pr
1f3a0 6f 63 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 73 65 72 76 65 oc(server);..mutex_unlock(&serve
1f3c0 72 2d 3e 72 63 76 2e 63 72 65 71 5f 6d 75 74 65 78 29 3b 0a 7d 0a 0a 76 6f 69 64 20 6e 63 70 5f r->rcv.creq_mutex);.}..void.ncp_
1f3e0 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 20 2a tcp_tx_proc(struct.work_struct.*
1f400 77 6f 72 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 72 76 work).{..struct.ncp_server.*serv
1f420 65 72 20 3d 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 er.=...container_of(work,.struct
1f440 20 6e 63 70 5f 73 65 72 76 65 72 2c 20 74 78 2e 74 71 29 3b 0a 09 0a 09 6d 75 74 65 78 5f 6c 6f .ncp_server,.tx.tq);....mutex_lo
1f460 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 5f 5f ck(&server->rcv.creq_mutex);..__
1f480 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 09 6d 75 74 65 78 5f ncptcp_try_send(server);..mutex_
1f4a0 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 78 29 3b unlock(&server->rcv.creq_mutex);
1f4c0 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 64 6f 5f 6e 63 70 5f 72 70 63 5f 63 61 6c 6c 28 73 .}..static.int.do_ncp_rpc_call(s
1f4e0 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 74 20 73 69 truct.ncp_server.*server,.int.si
1f500 7a 65 2c 0a 09 09 75 6e 73 69 67 6e 65 64 20 63 68 61 72 2a 20 72 65 70 6c 79 5f 62 75 66 2c 20 ze,...unsigned.char*.reply_buf,.
1f520 69 6e 74 20 6d 61 78 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 int.max_reply_size).{..int.resul
1f540 74 3b 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 t;..struct.ncp_request_reply.*re
1f560 71 3b 0a 0a 09 72 65 71 20 3d 20 6e 63 70 5f 61 6c 6c 6f 63 5f 72 65 71 28 29 3b 0a 09 69 66 20 q;...req.=.ncp_alloc_req();..if.
1f580 28 21 72 65 71 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 4e 4f 4d 45 4d 3b 0a 0a 09 72 65 71 2d 3e (!req)...return.-ENOMEM;...req->
1f5a0 72 65 70 6c 79 5f 62 75 66 20 3d 20 72 65 70 6c 79 5f 62 75 66 3b 0a 09 72 65 71 2d 3e 64 61 74 reply_buf.=.reply_buf;..req->dat
1f5c0 61 6c 65 6e 20 3d 20 6d 61 78 5f 72 65 70 6c 79 5f 73 69 7a 65 3b 0a 09 72 65 71 2d 3e 74 78 5f alen.=.max_reply_size;..req->tx_
1f5e0 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 3e 70 61 63 6b 65 74 iov[1].iov_base.=.server->packet
1f600 3b 0a 09 72 65 71 2d 3e 74 78 5f 69 6f 76 5b 31 5d 2e 69 6f 76 5f 6c 65 6e 20 3d 20 73 69 7a 65 ;..req->tx_iov[1].iov_len.=.size
1f620 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 31 36 5f 74 2a 29 73 ;..req->tx_type.=.*(u_int16_t*)s
1f640 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 20 6e 63 70 5f 61 64 erver->packet;...result.=.ncp_ad
1f660 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 69 66 20 28 72 65 73 d_request(server,.req);..if.(res
1f680 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 20 28 77 61 69 74 5f ult.<.0)...goto.out;...if.(wait_
1f6a0 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 77 71 2c 20 72 65 71 event_interruptible(req->wq,.req
1f6c0 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 09 6e 63 70 5f 61 62 ->status.==.RQ_DONE)).{...ncp_ab
1f6e0 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 2d 45 49 4e 54 52 29 ort_request(server,.req,.-EINTR)
1f700 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 74 6f 20 6f 75 74 3b ;...result.=.-EINTR;...goto.out;
1f720 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 74 3b 0a 0a 6f 75 74 ..}...result.=.req->result;..out
1f740 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 74 75 72 6e 20 72 65 :..ncp_req_put(req);...return.re
1f760 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 65 20 73 65 72 76 65 sult;.}../*..*.We.need.the.serve
1f780 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 68 65 63 6b 21 0a 20 r.to.be.locked.here,.so.check!..
1f7a0 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 75 65 73 74 28 73 74 */..static.int.ncp_do_request(st
1f7c0 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 74 20 73 69 7a ruct.ncp_server.*server,.int.siz
1f7e0 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 5f 72 65 70 6c 79 5f e,...void*.reply,.int.max_reply_
1f800 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 20 28 73 65 72 76 65 size).{..int.result;...if.(serve
1f820 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 22 53 65 72 76 65 72 r->lock.==.0).{...pr_err("Server
1f840 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 6e 20 2d 45 49 4f 3b .not.locked!\n");...return.-EIO;
1f860 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 73 65 72 76 65 72 29 ..}..if.(!ncp_conn_valid(server)
1f880 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 09 09 73 69 67 73 65 ).{...return.-EIO;..}..{...sigse
1f8a0 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 6f 6e 67 20 6d 61 73 t_t.old_set;...unsigned.long.mas
1f8c0 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 71 73 61 76 65 28 26 k,.flags;....spin_lock_irqsave(&
1f8e0 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 67 73 current->sighand->siglock,.flags
1f900 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 6c 6f 63 6b 65 64 3b );...old_set.=.current->blocked;
1f920 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 46 5f 45 58 49 54 49 ...if.(current->flags.&.PF_EXITI
1f940 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 09 09 6d 61 73 6b 20 NG)....mask.=.0;...else....mask.
1f960 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 28 73 65 72 76 65 72 =.sigmask(SIGKILL);...if.(server
1f980 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 52 29 20 7b 0a 09 09 ->m.flags.&.NCP_MOUNT_INTR).{...
1f9a0 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 65 65 6d 20 72 69 67 ./*.FIXME:.This.doesn't.seem.rig
1f9c0 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 20 20 20 77 65 20 63 ht.at.all...So,.like,.......we.c
1f9e0 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 74 20 77 68 61 74 65 an't.handle.SIGINT.and.get.whate
1fa00 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 66 20 77 65 27 76 65 ver.to.stop?.......What.if.we've
1fa20 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 68 61 74 20 61 62 6f .blocked.it.ourselves?..What.abo
1fa40 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 20 66 61 63 74 2c 20 ut.......alarms?..Why,.in.fact,.
1fa60 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 09 09 20 20 20 73 69 are.we.mucking.with.the.......si
1fa80 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 09 69 66 20 28 63 75 gmask.at.all?.--.r~.*/....if.(cu
1faa0 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 47 49 4e 54 20 2d 20 rrent->sighand->action[SIGINT.-.
1fac0 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 46 4c 29 0a 09 09 09 1].sa.sa_handler.==.SIG_DFL)....
1fae0 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 0a 09 09 09 69 66 20 .mask.|=.sigmask(SIGINT);....if.
1fb00 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 47 51 55 49 (current->sighand->action[SIGQUI
1fb20 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 46 4c 29 T.-.1].sa.sa_handler.==.SIG_DFL)
1fb40 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 55 49 54 29 3b 0a 09 .....mask.|=.sigmask(SIGQUIT);..
1fb60 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 6e 74 2d 3e 62 6c 6f .}...siginitsetinv(&current->blo
1fb80 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 70 65 6e 64 69 6e 67 cked,.mask);...recalc_sigpending
1fba0 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 6f 72 65 28 26 63 75 ();...spin_unlock_irqrestore(&cu
1fbc0 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 67 73 29 3b rrent->sighand->siglock,.flags);
1fbe0 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 5f 63 61 6c 6c 28 73 ......result.=.do_ncp_rpc_call(s
1fc00 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 65 70 6c 79 5f 73 69 erver,.size,.reply,.max_reply_si
1fc20 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 28 26 63 75 72 72 65 ze);....spin_lock_irqsave(&curre
1fc40 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 67 73 29 3b 0a 09 09 nt->sighand->siglock,.flags);...
1fc60 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 74 3b 0a 09 09 72 65 current->blocked.=.old_set;...re
1fc80 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 5f 75 6e 6c 6f 63 6b calc_sigpending();...spin_unlock
1fca0 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 68 61 6e 64 2d 3e 73 _irqrestore(&current->sighand->s
1fcc0 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 64 62 67 28 32 2c 20 iglock,.flags);..}...ncp_dbg(2,.
1fce0 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 20 25 64 5c 6e 22 2c "do_ncp_rpc_call.returned.%d\n",
1fd00 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 3b 0a 7d 0a 0a 2f 2a .result);...return.result;.}../*
1fd20 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 68 61 74 20 61 74 20 .ncp_do_request.assures.that.at.
1fd40 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 61 64 65 72 20 69 73 least.a.complete.reply.header.is
1fd60 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 74 68 61 74 20 73 65 ..*.received..It.assumes.that.se
1fd80 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 6e 73 20 74 68 65 20 rver->current_size.contains.the.
1fda0 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 6e 74 20 6e 63 70 5f ncp..*.request.size..*/.int.ncp_
1fdc0 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 72 20 2a 73 65 72 76 request2(struct.ncp_server.*serv
1fde0 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 2a 20 72 70 6c 2c 20 er,.int.function,....void*.rpl,.
1fe00 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 65 71 75 65 73 74 5f int.size).{..struct.ncp_request_
1fe20 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 70 6c 79 5f 68 65 61 header.*h;..struct.ncp_reply_hea
1fe40 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 73 75 6c 74 3b 0a 0a der*.reply.=.rpl;..int.result;..
1fe60 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 68 65 61 64 65 72 20 .h.=.(struct.ncp_request_header.
1fe80 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 28 73 65 72 76 65 72 *).(server->packet);..if.(server
1fea0 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 0a 09 09 2a 28 5f 5f ->has_subfunction.!=.0).{...*(__
1fec0 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 74 6f 6e 73 28 73 65 u16.*).&.(h->data[0]).=.htons(se
1fee0 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 6f 66 28 2a 68 29 20 rver->current_size.-.sizeof(*h).
1ff00 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 45 51 55 45 53 54 3b -.2);..}..h->type.=.NCP_REQUEST;
1ff20 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 64 6e 27 74 20 6b 6e ../*...*.The.server.shouldn't.kn
1ff40 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 61 6b 69 6e 67 20 61 ow.or.care.what.task.is.making.a
1ff60 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 73 20 75 73 65 20 74 ...*.request,.so.we.always.use.t
1ff80 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 0a 09 68 2d 3e 74 61 he.same.task.number....*/..h->ta
1ffa0 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 20 26 20 30 78 66 66 sk.=.2;./*.(current->pid).&.0xff
1ffc0 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 69 6f 6e 3b 0a 0a 09 ;.*/..h->function.=.function;...
1ffe0 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 65 72 76 65 72 2c 20 result.=.ncp_do_request(server,.
20000 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 6c 79 2c 20 73 69 7a server->current_size,.reply,.siz
20020 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 6e 63 70 5f 64 62 67 e);..if.(result.<.0).{...ncp_dbg
20040 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 64 5c 6e 22 2c 20 72 (1,."ncp_request_error:.%d\n",.r
20060 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 65 72 76 65 72 2d 3e esult);...goto.out;..}..server->
20080 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 65 74 69 6f 6e 5f 63 completion.=.reply->completion_c
200a0 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 20 3d 20 72 65 70 6c ode;..server->conn_status.=.repl
200c0 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 76 65 72 2d 3e 72 65 y->connection_state;..server->re
200e0 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 72 2d 3e 6e 63 70 5f ply_size.=.result;..server->ncp_
20100 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 65 6f 66 28 73 74 72 reply_size.=.result.-.sizeof(str
20120 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 72 65 73 75 6c 74 20 uct.ncp_reply_header);...result.
20140 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 0a 0a 09 69 66 20 28 =.reply->completion_code;...if.(
20160 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 63 6f 6d 70 6c 65 74 result.!=.0)...ncp_vdbg("complet
20180 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 6f 75 74 3a 0a 09 72 ion.code=%x\n",.result);.out:..r
201a0 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 63 6f 6e 6e 65 63 74 eturn.result;.}..int.ncp_connect
201c0 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 73 (struct.ncp_server.*server).{..s
201e0 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 2a 68 3b 0a 09 69 6e truct.ncp_request_header.*h;..in
20200 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 63 74 69 6f 6e 20 3d t.result;...server->connection.=
20220 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 65 20 3d 20 32 35 35 .0xFFFF;..server->sequence.=.255
20240 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 68 65 61 64 ;...h.=.(struct.ncp_request_head
20260 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 68 2d 3e 74 79 70 65 er.*).(server->packet);..h->type
20280 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 3b 0a 09 68 2d 3e 74 .=.NCP_ALLOC_SLOT_REQUEST;..h->t
202a0 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 0a 09 68 2d 3e 66 75 ask..=.2;./*.see.above.*/..h->fu
202c0 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 70 5f 64 6f 5f 72 65 nction.=.0;...result.=.ncp_do_re
202e0 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 20 73 65 72 76 65 72 quest(server,.sizeof(*h),.server
20300 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 73 69 7a 65 29 3b 0a ->packet,.server->packet_size);.
20320 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 75 74 3b 0a 09 73 65 .if.(result.<.0)...goto.out;..se
20340 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 6e 5f 6c 6f 77 20 2b rver->connection.=.h->conn_low.+
20360 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 65 73 75 6c 74 20 3d .(h->conn_high.*.256);..result.=
20380 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 7d 0a 0a 69 6e 74 20 .0;.out:..return.result;.}..int.
203a0 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 65 72 76 65 72 ncp_disconnect(struct.ncp_server
203c0 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 65 71 75 65 73 74 5f .*server).{..struct.ncp_request_
203e0 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 6e 63 70 5f 72 65 71 header.*h;...h.=.(struct.ncp_req
20400 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 61 63 6b 65 74 29 3b uest_header.*).(server->packet);
20420 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 4c 4f 54 5f 52 45 51 ..h->type.=.NCP_DEALLOC_SLOT_REQ
20440 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 65 65 20 61 62 6f 76 UEST;..h->task..=.2;./*.see.abov
20460 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 72 65 74 75 72 6e 20 e.*/..h->function.=.0;...return.
20480 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 7a 65 6f 66 28 2a 68 ncp_do_request(server,.sizeof(*h
204a0 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 2d 3e 70 61 63 6b 65 ),.server->packet,.server->packe
204c0 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 5f 73 65 72 76 65 72 t_size);.}..void.ncp_lock_server
204e0 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 6d (struct.ncp_server.*server).{..m
20500 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 3b 0a 09 69 66 20 28 utex_lock(&server->mutex);..if.(
20520 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 25 73 3a 20 77 61 73 server->lock)...pr_warn("%s:.was
20540 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 73 65 72 76 65 72 2d .locked!\n",.__func__);..server-
20560 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 6c 6f 63 6b 5f 73 65 >lock.=.1;.}..void.ncp_unlock_se
20580 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 0a rver(struct.ncp_server.*server).
205a0 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 09 70 72 5f 77 61 72 {..if.(!server->lock).{...pr_war
205c0 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 2c 20 5f 5f 66 75 6e n("%s:.was.not.locked!\n",.__fun
205e0 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 72 2d 3e 6c 6f 63 6b c__);...return;..}..server->lock
20600 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 65 72 2d 3e 6d 75 74 .=.0;..mutex_unlock(&server->mut
20620 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 00 00 00 00 00 00 00 ex);.}..........................
20640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
206a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
206c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
206e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
207a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
207c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
207e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20800 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...........
20820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20860 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
20880 30 30 31 35 34 33 30 00 31 33 31 32 32 32 31 33 31 35 30 00 30 31 33 36 33 36 00 20 30 00 00 00 0015430.13122213150.013636..0...
208a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
208c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
208e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20900 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
20920 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
20940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
209a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
209c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
209e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20a00 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
20a20 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
20a40 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
20a60 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.
20a80 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
20aa0 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.
20ac0 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
20ae0 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
20b00 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
20b20 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
20b40 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
20b60 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
20b80 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>.
20ba0 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
20bc0 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
20be0 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
20c00 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
20c20 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 75 61 63 63 65 73 73 2e 68 3e 0a 23 69 6e 63 6c 75 64 nclude.<linux/uaccess.h>.#includ
20c40 65 20 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 e.<asm/byteorder.h>.#include.<as
20c60 6d 2f 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 m/unaligned.h>.#include.<asm/str
20c80 69 6e 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 ing.h>..#ifdef.CONFIG_NCPFS_NLS.
20ca0 23 69 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 #include.<linux/nls.h>.#else.#in
20cc0 63 6c 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 clude.<linux/ctype.h>.#endif./*.
20ce0 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 20 4e 43 50 CONFIG_NCPFS_NLS.*/..#define.NCP
20d00 5f 4d 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 _MIN_SYMLINK_SIZE.8.#define.NCP_
20d20 4d 41 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 MAX_SYMLINK_SIZE.512..#define.NC
20d40 50 5f 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 P_BLOCK_SHIFT..9.#define.NCP_BLO
20d60 43 4b 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 CK_SIZE..(1.<<.(NCP_BLOCK_SHIFT)
20d80 29 0a 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 )..int.ncp_negotiate_buffersize(
20da0 73 74 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 struct.ncp_server.*,.int,.int.*)
20dc0 3b 0a 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 ;.int.ncp_negotiate_size_and_opt
20de0 69 6f 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 ions(struct.ncp_server.*server,.
20e00 69 6e 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 int.size,........int.options,.in
20e20 74 20 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 t.*ret_size,.int.*ret_options);.
20e40 0a 69 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 .int.ncp_get_volume_info_with_nu
20e60 6d 62 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 mber(struct.ncp_server*.server,.
20e80 69 6e 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 int.n,.........struct.ncp_volume
20ea0 5f 69 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 _info.*target);..int.ncp_get_dir
20ec0 65 63 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 ectory_info(struct.ncp_server*.s
20ee0 65 72 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 erver,.__u8.dirhandle,.......str
20f00 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 3b 0a 0a 69 uct.ncp_volume_info*.target);..i
20f20 6e 74 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 nt.ncp_close_file(struct.ncp_ser
20f40 76 65 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 ver.*,.const.char.*);.static.inl
20f60 69 6e 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 ine.int.ncp_read_bounce_size(__u
20f80 33 32 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 32.size).{..return.sizeof(struct
20fa0 20 6e 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 .ncp_reply_header).+.2.+.2.+.siz
20fc0 65 20 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 e.+.8;.};.int.ncp_read_bounce(st
20fe0 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.*,
21000 20 5f 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 .__u32,.__u16,....struct.iov_ite
21020 72 20 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 r.*,.int.*,.void.*bounce,.__u32.
21040 62 6f 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 bouncelen);.int.ncp_read_kernel(
21060 73 74 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 struct.ncp_server.*,.const.char.
21080 2a 2c 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 *,.__u32,.__u16,....char.*,.int.
210a0 2a 29 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 *);.int.ncp_write_kernel(struct.
210c0 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 5f 75 33 ncp_server.*,.const.char.*,.__u3
210e0 32 2c 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 2,.__u16,...const.char.*,.int.*)
21100 3b 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 6f 64 65 5f ;..static.inline.void.ncp_inode_
21120 63 6c 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 close(struct.inode.*inode).{..at
21140 6f 6d 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 omic_dec(&NCP_FINFO(inode)->open
21160 65 64 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 ed);.}..void.ncp_extract_file_in
21180 66 6f 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 fo(const.void*.src,.struct.nw_in
211a0 66 6f 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 fo_struct*.target);.int.ncp_obta
211c0 69 6e 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 in_info(struct.ncp_server.*serve
211e0 72 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 2a 2c r,.struct.inode.*,.const.char.*,
21200 0a 09 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 ...struct.nw_info_struct.*target
21220 29 3b 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 );.int.ncp_obtain_nfs_info(struc
21240 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 77 5f t.ncp_server.*server,.struct.nw_
21260 69 6e 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 info_struct.*target);.int.ncp_up
21280 64 61 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 date_known_namespace(struct.ncp_
212a0 73 65 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 server.*server,.__u8.volume,.int
212c0 20 2a 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 .*ret_ns);.int.ncp_get_volume_ro
212e0 6f 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 63 6f ot(struct.ncp_server.*server,.co
21300 6e 73 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 nst.char.*volname,....__u32.*vol
21320 75 6d 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 ume,.__le32.*dirent,.__le32.*dos
21340 64 69 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 dirent);.int.ncp_lookup_volume(s
21360 74 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 truct.ncp_server.*,.const.char.*
21380 2c 20 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 ,.struct.nw_info_struct.*);.int.
213a0 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 73 5f 69 6e ncp_modify_file_or_subdir_dos_in
213c0 66 6f 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 fo(struct.ncp_server.*,.struct.i
213e0 6e 6f 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 node.*,...__le32,.const.struct.n
21400 77 5f 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 w_modify_dos_info.*info);.int.nc
21420 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
21440 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 2c 20 73 74 72 75 63 _path(struct.ncp_server.*,.struc
21460 74 20 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 t.inode.*,...const.char*.path,._
21480 5f 6c 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 _le32,.const.struct.nw_modify_do
214a0 73 5f 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 s_info.*info);.int.ncp_modify_nf
214c0 73 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 2c 20 5f 5f 75 38 s_info(struct.ncp_server.*,.__u8
214e0 20 76 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 .volnum,.__le32.dirent,....__u32
21500 20 6d 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 .mode,.__u32.rdev);..int.ncp_del
21520 5f 66 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 _file_or_subdir2(struct.ncp_serv
21540 65 72 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 er.*,.struct.dentry*);.int.ncp_d
21560 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 63 70 5f 73 65 72 el_file_or_subdir(struct.ncp_ser
21580 76 65 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 ver.*,.struct.inode.*,.const.cha
215a0 72 20 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 r.*);.int.ncp_open_create_file_o
215c0 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 2c 20 73 74 r_subdir(struct.ncp_server.*,.st
215e0 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 09 09 09 ruct.inode.*,.const.char.*,.....
21600 69 6e 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 int,.__le32,.__le16,.struct.ncp_
21620 65 6e 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 entry_info.*);..int.ncp_initiali
21640 7a 65 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 ze_search(struct.ncp_server.*,.s
21660 74 72 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 truct.inode.*,.........struct.nw
21680 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 3b 0a 69 6e 74 20 6e _search_sequence.*target);.int.n
216a0 63 70 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 cp_search_for_fileset(struct.ncp
216c0 5f 73 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 _server.*server,.......struct.nw
216e0 5f 73 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 _search_sequence.*seq,.......int
21700 2a 20 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 *.more,.int*.cnt,.......char*.bu
21720 66 66 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 ffer,.size_t.bufsize,.......char
21740 2a 2a 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 **.rbuf,.size_t*.rsize);..int.nc
21760 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 74 72 75 p_ren_or_mov_file_or_subdir(stru
21780 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 20 20 20 20 20 20 ct.ncp_server.*server,..........
217a0 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 20 73 74 struct.inode.*,.const.char.*,.st
217c0 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 29 3b 0a 0a 0a 69 ruct.inode.*,.const.char.*);...i
217e0 6e 74 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 nt.ncp_LogPhysicalRecord(struct.
21800 6e 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 63 6f 6e 73 ncp_server.*server,.........cons
21820 74 20 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 t.char.*file_id,.__u8.locktype,.
21840 09 09 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 ........__u32.offset,.__u32.leng
21860 74 68 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 th,.__u16.timeout);..#ifdef.CONF
21880 49 47 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 IG_NCPFS_IOCTL_LOCKING.int.ncp_C
218a0 6c 65 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 learPhysicalRecord(struct.ncp_se
218c0 72 76 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 rver.*server,....const.char.*fil
218e0 65 5f 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 e_id,....__u32.offset,.__u32.len
21900 67 74 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 gth);.#endif./*.CONFIG_NCPFS_IOC
21920 54 4c 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 TL_LOCKING.*/..int.ncp_mount_sub
21940 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 5f 5f 75 38 2c 20 5f dir(struct.ncp_server.*,.__u8,._
21960 5f 75 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 _u8,.__le32,....__u32*.volume,._
21980 5f 6c 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 _le32*.dirent,.__le32*.dosdirent
219a0 29 3b 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 );.int.ncp_dirhandle_alloc(struc
219c0 74 20 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 t.ncp_server.*,.__u8.vol,.__le32
219e0 20 64 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 .dirent,.__u8.*dirhandle);.int.n
21a00 63 70 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 cp_dirhandle_free(struct.ncp_ser
21a20 76 65 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 ver.*,.__u8.dirhandle);..int.ncp
21a40 5f 63 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 _create_new(struct.inode.*dir,.s
21a60 74 72 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 truct.dentry.*dentry,...........
21a80 20 20 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 ................umode_t.mode,.de
21aa0 76 5f 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 v_t.rdev,.__le32.attributes);..s
21ac0 74 61 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 tatic.inline.int.ncp_is_nfs_extr
21ae0 61 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 75 6e as(struct.ncp_server*.server,.un
21b00 73 69 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 signed.int.volnum).{.#ifdef.CONF
21b20 49 47 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 IG_NCPFS_NFS_NS..return.(server-
21b40 3e 6d 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 >m.flags.&.NCP_MOUNT_NFS_EXTRAS)
21b60 20 26 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 .&&.........(server->name_space[
21b80 76 6f 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 volnum].==.NW_NS_NFS);.#else..re
21ba0 74 75 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 turn.0;.#endif.}..#ifdef.CONFIG_
21bc0 4e 43 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 NCPFS_NLS..int.ncp__io2vol(struc
21be0 74 20 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 t.ncp_server.*,.unsigned.char.*,
21c00 20 75 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 .unsigned.int.*,.....const.unsig
21c20 6e 65 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 ned.char.*,.unsigned.int,.int);.
21c40 69 6e 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 int.ncp__vol2io(struct.ncp_serve
21c60 72 20 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 r.*,.unsigned.char.*,.unsigned.i
21c80 6e 74 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 nt.*,.....const.unsigned.char.*,
21ca0 20 75 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 .unsigned.int,.int);..#define.NC
21cc0 50 5f 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 P_ESC...':'.#define.NCP_IO_TABLE
21ce0 28 73 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 (sb).(NCP_SBP(sb)->nls_io).#defi
21d00 6e 65 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 ne.ncp_tolower(t,.c).nls_tolower
21d20 28 74 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 (t,.c).#define.ncp_toupper(t,.c)
21d40 09 6e 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 .nls_toupper(t,.c).#define.ncp_s
21d60 74 72 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 trnicmp(t,.s1,.s2,.len).\..nls_s
21d80 74 72 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 trnicmp(t,.s1,.s2,.len).#define.
21da0 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 32 ncp_io2vol(S,m,i,n,k,U).ncp__io2
21dc0 76 6f 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 vol(S,m,i,n,k,U).#define.ncp_vol
21de0 32 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 53 2c 6d 2io(S,m,i,n,k,U).ncp__vol2io(S,m
21e00 2c 69 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 ,i,n,k,U)..#else..int.ncp__io2vo
21e20 6c 28 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 l(unsigned.char.*,.unsigned.int.
21e40 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 6e *,.....const.unsigned.char.*,.un
21e60 73 69 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 signed.int,.int);.int.ncp__vol2i
21e80 6f 28 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 o(unsigned.char.*,.unsigned.int.
21ea0 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 6e *,.....const.unsigned.char.*,.un
21ec0 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 49 signed.int,.int);..#define.NCP_I
21ee0 4f 5f 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 O_TABLE(sb).NULL.#define.ncp_tol
21f00 6f 77 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 ower(t,.c).tolower(c).#define.nc
21f20 70 5f 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 p_toupper(t,.c).toupper(c).#defi
21f40 6e 65 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 ne.ncp_io2vol(S,m,i,n,k,U).ncp__
21f60 69 6f 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 io2vol(m,i,n,k,U).#define.ncp_vo
21f80 6c 32 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 l2io(S,m,i,n,k,U).ncp__vol2io(m,
21fa0 69 2c 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 i,n,k,U)...static.inline.int.ncp
21fc0 5f 73 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 _strnicmp(const.struct.nls_table
21fe0 20 2a 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 .*t,...const.unsigned.char.*s1,.
22000 63 6f 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 const.unsigned.char.*s2,.int.len
22020 29 0a 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 ).{..while.(len--).{...if.(tolow
22040 65 72 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 er(*s1++).!=.tolower(*s2++))....
22060 72 65 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 return.1;..}...return.0;.}..#end
22080 69 66 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 if./*.CONFIG_NCPFS_NLS.*/..#defi
220a0 6e 65 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 ne.NCP_GET_AGE(dentry).(jiffies.
220c0 2d 20 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 -.(dentry)->d_time).#define.NCP_
220e0 4d 41 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 MAX_AGE(server).atomic_read(&(se
22100 72 76 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 rver)->dentry_ttl).#define.NCP_T
22120 45 53 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 EST_AGE(server,dentry).(NCP_GET_
22140 41 47 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 AGE(dentry).<.NCP_MAX_AGE(server
22160 29 29 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 ))..static.inline.void.ncp_age_d
22180 65 6e 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 entry(struct.ncp_server*.server,
221a0 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 09 64 65 6e 74 72 .struct.dentry*.dentry).{..dentr
221c0 79 2d 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 y->d_time.=.jiffies.-.NCP_MAX_AG
221e0 45 28 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 E(server);.}..static.inline.void
22200 0a 6e 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 .ncp_new_dentry(struct.dentry*.d
22220 65 6e 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 entry).{..dentry->d_time.=.jiffi
22240 65 73 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 es;.}..struct.ncp_cache_head.{..
22260 74 69 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 time_t..mtime;..unsigned.long.ti
22280 6d 65 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 me;./*.cache.age.*/..unsigned.lo
222a0 6e 67 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 ng.end;./*.last.valid.fpos.in.ca
222c0 63 68 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 che.*/..int..eof;.};..#define.NC
222e0 50 5f 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 P_DIRCACHE_SIZE.((int)(PAGE_SIZE
22300 2f 73 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 /sizeof(struct.dentry.*))).union
22320 20 6e 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 .ncp_dir_cache.{..struct.ncp_cac
22340 68 65 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 he_head.head;..struct.dentry..*d
22360 65 6e 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 entry[NCP_DIRCACHE_SIZE];.};..#d
22380 65 66 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 efine.NCP_FIRSTCACHE_SIZE.((int)
223a0 28 28 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 ((NCP_DIRCACHE_SIZE.*.\..sizeof(
223c0 73 74 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 struct.dentry.*).-.sizeof(struct
223e0 20 6e 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 .ncp_cache_head))./.\..sizeof(st
22400 72 75 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 ruct.dentry.*)))..#define.NCP_DI
22420 52 43 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 RCACHE_START.(NCP_DIRCACHE_SIZE.
22440 2d 20 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 -.NCP_FIRSTCACHE_SIZE)..struct.n
22460 63 70 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 cp_cache_control.{..struct.ncp_c
22480 61 63 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 ache_head..head;..struct.page...
224a0 2a 70 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 *page;..union.ncp_dir_cache..*ca
224c0 63 68 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 che;..unsigned.long...fpos,.ofs;
224e0 0a 09 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 ..int....filled,.valid,.idx;.};.
22500 0a 23 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 .#endif./*._NCPLIB_H.*/.........
22520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
225a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
225c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
225e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22600 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..........
22620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22660 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
22680 30 30 30 37 32 32 31 00 31 33 31 32 32 32 31 33 31 35 30 00 30 31 34 30 32 32 00 20 30 00 00 00 0007221.13122213150.014022..0...
226a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
226c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
226e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22700 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
22720 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
22740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
227a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
227c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
227e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22800 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
22820 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),
22840 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
22860 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
22880 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
228a0 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
228c0 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
228e0 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,.
22900 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
22920 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.
22940 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)).
22960 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.*)
22980 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
229a0 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)
229c0 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
229e0 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
22a00 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
22a20 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].=.
22a40 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
22a60 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).{
22a80 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
22aa0 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
22ac0 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
22ae0 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
22b00 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).
22b20 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
22b40 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
22b60 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
22b80 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)
22ba0 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(_
22bc0 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).{
22be0 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
22c00 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.>>
22c20 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
22c40 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).
22c60 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
22c80 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
22ca0 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;
22cc0 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
22ce0 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
22d00 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
22d20 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
22d40 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.
22d60 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
22d80 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=
22da0 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(
22dc0 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
22de0 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);..
22e00 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
22e20 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))
22e40 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.
22e60 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
22e80 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.+.((
22ea0 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
22ec0 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.
22ee0 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+
22f00 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++).{.
22f20 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
22f40 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
22f60 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.+.(((
22f80 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
22fa0 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
22fc0 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
22fe0 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+
23000 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
23020 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
23040 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
23060 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.+.((
23080 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
230a0 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
230c0 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
230e0 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
23100 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
23120 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);...
23140 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).+
23160 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],
23180 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
231a0 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);.
231c0 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
231e0 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
23200 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
23220 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
23240 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
23260 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
23280 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
232a0 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
232c0 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
232e0 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,.
23300 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,
23320 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
23340 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];...
23360 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,.
23380 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
233a0 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
233c0 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
233e0 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
23400 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
23420 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
23440 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
23460 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
23480 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
234a0 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
234c0 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
234e0 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
23500 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.
23520 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
23540 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
23560 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).=.
23580 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
235a0 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);.
235c0 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
235e0 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
23600 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(
23620 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);.
23640 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,.
23660 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
23680 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.*/.................
236a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
236c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
236e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
237a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
237c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
237e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23800 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.................
23820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23860 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
23880 30 30 31 30 33 37 34 00 31 33 31 32 32 32 31 33 31 35 30 00 30 31 32 35 31 32 00 20 30 00 00 00 0010374.13122213150.012512..0...
238a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
238c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
238e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23900 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
23920 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
23940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
239a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
239c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
239e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23a00 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.
23a20 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
23a40 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).
23a60 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
23a80 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
23aa0 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.
23ac0 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.
23ae0 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
23b00 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.
23b20 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...*.
23b40 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
23b60 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.
23b80 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
23ba0 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
23bc0 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..*..*..
23be0 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..
23c00 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
23c20 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.
23c40 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
23c60 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
23c80 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
23ca0 66 6f 0a 20 2a 0a 20 2a 2f 0a 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 75 61 63 63 fo..*..*/...#include.<linux/uacc
23cc0 65 73 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 ess.h>..#include.<linux/errno.h>
23ce0 0a 23 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 .#include.<linux/fs.h>.#include.
23d00 3c 6c 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 <linux/time.h>.#include.<linux/s
23d20 6c 61 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 lab.h>.#include.<linux/mm.h>.#in
23d40 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 22 6e clude.<linux/stat.h>.#include."n
23d60 63 70 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 cp_fs.h"../*.these.magic.numbers
23d80 20 6d 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 .must.appear.in.the.symlink.file
23da0 20 2d 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 .--.this.makes.it.a.bit....more.
23dc0 72 65 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 resilient.against.the.magic.attr
23de0 69 62 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 ibutes.being.set.on.random.files
23e00 2e 20 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 ..*/..#define.NCP_SYMLINK_MAGIC0
23e20 09 63 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 .cpu_to_le32(0x6c6d7973)...../*.
23e40 22 73 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 "symlnk->".*/.#define.NCP_SYMLIN
23e60 4b 5f 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 K_MAGIC1.cpu_to_le32(0x3e2d6b6e)
23e80 0a 0a 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 ../*.-----.read.a.symbolic.link.
23ea0 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 --------------------------------
23ec0 2d 2d 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 ----------.*/..static.int.ncp_sy
23ee0 6d 6c 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 mlink_readpage(struct.file.*file
23f00 2c 20 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 ,.struct.page.*page).{..struct.i
23f20 6e 6f 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 node.*inode.=.page->mapping->hos
23f40 74 3b 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 t;..int.error,.length,.len;..cha
23f60 72 20 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 r.*link,.*rawlink;..char.*buf.=.
23f80 6b 6d 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 kmap(page);...error.=.-ENOMEM;..
23fa0 72 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 rawlink.=.kmalloc(NCP_MAX_SYMLIN
23fc0 4b 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 K_SIZE,.GFP_KERNEL);..if.(!rawli
23fe0 6e 6b 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 nk)...goto.fail;...if.(ncp_make_
24000 6f 70 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 open(inode,O_RDONLY))...goto.fai
24020 6c 45 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 lEIO;...error=ncp_read_kernel(NC
24040 50 5f 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 P_SERVER(inode),NCP_FINFO(inode)
24060 2d 3e 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 ->file_handle,..................
24080 20 20 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 ........0,NCP_MAX_SYMLINK_SIZE,r
240a0 61 77 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 awlink,&length);...ncp_inode_clo
240c0 73 65 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 se(inode);../*.Close.file.handle
240e0 20 69 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 .if.no.other.users....*/..ncp_ma
24100 6b 65 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 ke_closed(inode);..if.(error)...
24120 67 6f 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 goto.failEIO;...if.(NCP_FINFO(in
24140 6f 64 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 ode)->flags.&.NCPI_KLUDGE_SYMLIN
24160 4b 29 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 K).{...if.(length<NCP_MIN_SYMLIN
24180 4b 5f 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 K_SIZE.||........((__le32.*)rawl
241a0 69 6e 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 ink)[0]!=NCP_SYMLINK_MAGIC0.||..
241c0 09 20 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 .....((__le32.*)rawlink)[1]!=NCP
241e0 5f 53 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 _SYMLINK_MAGIC1)........goto.fai
24200 6c 45 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 lEIO;...link.=.rawlink.+.8;...le
24220 6e 67 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 ngth.-=.8;..}.else.{...link.=.ra
24240 77 6c 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 wlink;..}...len.=.NCP_MAX_SYMLIN
24260 4b 5f 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 K_SIZE;..error.=.ncp_vol2io(NCP_
24280 53 45 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 SERVER(inode),.buf,.&len,.link,.
242a0 6c 65 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 length,.0);..kfree(rawlink);..if
242c0 20 28 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 .(error)...goto.fail;..SetPageUp
242e0 74 6f 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 todate(page);..kunmap(page);..un
24300 6c 6f 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 lock_page(page);..return.0;..fai
24320 6c 45 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 lEIO:..error.=.-EIO;..kfree(rawl
24340 69 6e 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 ink);.fail:..SetPageError(page);
24360 0a 09 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 ..kunmap(page);..unlock_page(pag
24380 65 29 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 e);..return.error;.}../*..*.syml
243a0 69 6e 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 inks.can't.do.much.....*/.const.
243c0 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 73 20 struct.address_space_operations.
243e0 6e 63 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 ncp_symlink_aops.=.{...readpage.
24400 3d 20 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 =.ncp_symlink_readpage,.};.../*.
24420 2d 2d 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 -----.create.a.new.symbolic.link
24440 20 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 .-------------------------------
24460 2d 2d 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 -------.*/...int.ncp_symlink(str
24480 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
244a0 65 6e 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 entry,.const.char.*symname).{..s
244c0 74 72 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 truct.inode.*inode;..char.*rawli
244e0 6e 6b 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 nk;..int.length,.err,.i,.outlen;
24500 0a 09 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 ..int.kludge;..umode_t.mode;..__
24520 6c 65 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 le32.attr;..unsigned.int.hdr;...
24540 6e 63 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 ncp_dbg(1,."dir=%p,.dentry=%p,.s
24560 79 6d 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 ymname=%s\n",.dir,.dentry,.symna
24580 6d 65 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 me);...if.(ncp_is_nfs_extras(NCP
245a0 5f 53 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 _SERVER(dir),.NCP_FINFO(dir)->vo
245c0 6c 4e 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 lNumber))...kludge.=.0;..else.#i
245e0 66 64 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 fdef.CONFIG_NCPFS_EXTRAS..if.(NC
24600 50 5f 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 P_SERVER(dir)->m.flags.&.NCP_MOU
24620 4e 54 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 NT_SYMLINKS)...kludge.=.1;..else
24640 0a 23 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 .#endif../*.EPERM.is.returned.by
24660 20 56 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 .VFS.if.symlink.procedure.does.n
24680 6f 74 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 ot.exist.*/...return.-EPERM;....
246a0 09 72 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 .rawlink.=.kmalloc(NCP_MAX_SYMLI
246c0 4e 4b 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 NK_SIZE,.GFP_KERNEL);..if.(!rawl
246e0 69 6e 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 ink)...return.-ENOMEM;...if.(klu
24700 64 67 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 dge).{...mode.=.0;...attr.=.aSHA
24720 52 45 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 RED.|.aHIDDEN;...((__le32.*)rawl
24740 69 6e 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 ink)[0]=NCP_SYMLINK_MAGIC0;...((
24760 5f 5f 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 __le32.*)rawlink)[1]=NCP_SYMLINK
24780 5f 4d 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 _MAGIC1;...hdr.=.8;..}.else.{...
247a0 6d 6f 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 mode.=.S_IFLNK.|.S_IRWXUGO;...at
247c0 74 72 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 tr.=.0;...hdr.=.0;..}......lengt
247e0 68 20 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 h.=.strlen(symname);../*.map.to/
24800 66 72 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 from.server.charset,.do.not.touc
24820 68 20 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 h.upper/lower.case.as.....symlin
24840 6b 20 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 k.can.point.out.of.ncp.filesyste
24860 6d 20 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 m.*/..outlen.=.NCP_MAX_SYMLINK_S
24880 49 5a 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 IZE.-.hdr;..err.=.ncp_io2vol(NCP
248a0 5f 53 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 _SERVER(dir),.rawlink.+.hdr,.&ou
248c0 74 6c 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 tlen,.symname,.length,.0);..if.(
248e0 65 72 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 err)...goto.failfree;...outlen.+
24900 3d 20 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 =.hdr;...err.=.-EIO;..if.(ncp_cr
24920 65 61 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 eate_new(dir,dentry,mode,0,attr)
24940 29 20 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 ).{...goto.failfree;..}...inode=
24960 64 5f 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 d_inode(dentry);...if.(ncp_make_
24980 6f 70 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 open(inode,.O_WRONLY))...goto.fa
249a0 69 6c 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 ilfree;...if.(ncp_write_kernel(N
249c0 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 4f 28 69 6e 6f 64 CP_SERVER(inode),.NCP_FINFO(inod
249e0 65 29 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 e)->file_handle,..........0,.out
24a00 6c 65 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 len,.rawlink,.&i).||.i!=outlen).
24a20 7b 0a 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 {...goto.fail;..}...ncp_inode_cl
24a40 6f 73 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 ose(inode);..ncp_make_closed(ino
24a60 64 65 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 de);..kfree(rawlink);..return.0;
24a80 0a 66 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 .fail:;..ncp_inode_close(inode);
24aa0 0a 09 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 ..ncp_make_closed(inode);.failfr
24ac0 65 65 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 ee:;..kfree(rawlink);..return.er
24ae0 72 3b 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 r;.}../*.-----.EOF.-----.*/.....
24b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24c00 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..................
24c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24c60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
24c80 30 30 30 30 36 37 33 00 31 33 31 32 32 34 32 33 36 30 37 00 30 31 32 33 33 33 00 20 30 00 00 00 0000673.13122423607.012333..0...
24ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24d00 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
24d20 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
24d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24e00 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
24e20 69 6c 65 73 79 73 74 65 6d 20 72 6f 75 74 69 6e 65 73 2e 0a 23 0a 0a 43 4f 4e 46 49 47 5f 4e 43 ilesystem.routines..#..CONFIG_NC
24e40 50 5f 46 53 3d 6d 0a 0a 6f 62 6a 2d 24 28 43 4f 4e 46 49 47 5f 4e 43 50 5f 46 53 29 20 2b 3d 20 P_FS=m..obj-$(CONFIG_NCP_FS).+=.
24e60 6e 63 70 66 73 2e 6f 0a 0a 6e 63 70 66 73 2d 79 20 20 20 20 20 20 3a 3d 20 64 69 72 2e 6f 20 66 ncpfs.o..ncpfs-y......:=.dir.o.f
24e80 69 6c 65 2e 6f 20 69 6e 6f 64 65 2e 6f 20 69 6f 63 74 6c 2e 6f 20 6d 6d 61 70 2e 6f 20 6e 63 70 ile.o.inode.o.ioctl.o.mmap.o.ncp
24ea0 6c 69 62 5f 6b 65 72 6e 65 6c 2e 6f 20 73 6f 63 6b 2e 6f 20 5c 0a 09 09 6e 63 70 73 69 67 6e 5f lib_kernel.o.sock.o.\...ncpsign_
24ec0 6b 65 72 6e 65 6c 2e 6f 20 67 65 74 6f 70 74 2e 6f 0a 0a 6e 63 70 66 73 2d 24 28 43 4f 4e 46 49 kernel.o.getopt.o..ncpfs-$(CONFI
24ee0 47 5f 4e 43 50 46 53 5f 45 58 54 52 41 53 29 20 20 20 2b 3d 20 73 79 6d 6c 69 6e 6b 2e 6f 0a 6e G_NCPFS_EXTRAS)...+=.symlink.o.n
24f00 63 70 66 73 2d 24 28 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 29 20 20 20 2b 3d cpfs-$(CONFIG_NCPFS_NFS_NS)...+=
24f20 20 73 79 6d 6c 69 6e 6b 2e 6f 0a 0a 23 20 49 66 20 79 6f 75 20 77 61 6e 74 20 64 65 62 75 67 67 .symlink.o..#.If.you.want.debugg
24f40 69 6e 67 20 6f 75 74 70 75 74 2c 20 70 6c 65 61 73 65 20 75 6e 63 6f 6d 6d 65 6e 74 20 74 68 65 ing.output,.please.uncomment.the
24f60 20 66 6f 6c 6c 6f 77 69 6e 67 20 6c 69 6e 65 0a 23 20 63 63 66 6c 61 67 73 2d 79 20 3a 3d 20 2d .following.line.#.ccflags-y.:=.-
24f80 44 44 45 42 55 47 5f 4e 43 50 3d 31 0a 0a 43 46 4c 41 47 53 5f 6e 63 70 6c 69 62 5f 6b 65 72 6e DDEBUG_NCP=1..CFLAGS_ncplib_kern
24fa0 65 6c 2e 6f 20 3a 3d 20 2d 66 69 6e 6c 69 6e 65 2d 66 75 6e 63 74 69 6f 6e 73 0a 00 00 00 00 00 el.o.:=.-finline-functions......
24fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
25000 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.....................
25020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
25040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
25060 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
25080 30 30 37 36 31 36 35 00 31 33 31 32 32 34 32 33 36 35 35 00 30 31 31 36 33 31 00 20 30 00 00 00 0076165.13122423655.011631..0...
250a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
250c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
250e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
25100 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
25120 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
25140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
25160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
25180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
251a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
251c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
251e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
25200 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
25220 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.
25240 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
25260 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.
25280 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
252a0 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.
252c0 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
252e0 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.
25300 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
25320 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
25340 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
25360 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
25380 6e 66 6f 0a 20 2a 0a 20 2a 2f 0a 0a 23 64 65 66 69 6e 65 20 43 4f 4e 46 49 47 5f 4e 43 50 5f 46 nfo..*..*/..#define.CONFIG_NCP_F
253a0 53 20 6d 0a 23 64 65 66 69 6e 65 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 50 41 43 4b 45 54 5f S.m.#define.CONFIG_NCPFS_PACKET_
253c0 53 49 47 4e 49 4e 47 20 79 0a 23 64 65 66 69 6e 65 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 53 SIGNING.y.#define.CONFIG_NCPFS_S
253e0 54 52 4f 4e 47 20 79 0a 23 64 65 66 69 6e 65 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 TRONG.y.#define.CONFIG_NCPFS_NFS
25400 5f 4e 53 20 79 0a 23 64 65 66 69 6e 65 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4f 53 32 5f 4e _NS.y.#define.CONFIG_NCPFS_OS2_N
25420 53 20 79 0a 23 64 65 66 69 6e 65 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 53 4d 41 4c 4c 44 4f S.y.#define.CONFIG_NCPFS_SMALLDO
25440 53 20 79 0a 23 64 65 66 69 6e 65 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4e 4c 53 20 79 0a 23 S.y.#define.CONFIG_NCPFS_NLS.y.#
25460 64 65 66 69 6e 65 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 45 58 54 52 41 53 20 79 0a 0a 0a 23 define.CONFIG_NCPFS_EXTRAS.y...#
25480 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.
254a0 3c 6c 69 6e 75 78 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 <linux/errno.h>.#include.<linux/
254c0 73 74 61 74 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 stat.h>.#include.<linux/kernel.h
254e0 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 69 6e >.#include.<linux/vmalloc.h>.#in
25500 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 6e clude.<linux/mm.h>.#include.<lin
25520 75 78 2f 6e 61 6d 65 69 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 75 61 63 63 ux/namei.h>.#include.<linux/uacc
25540 65 73 73 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 61 73 6d 2f 62 79 74 65 6f 72 64 65 72 2e 68 ess.h>.#include.<asm/byteorder.h
25560 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 63 20 76 >..#include."ncp_fs.h"..static.v
25580 6f 69 64 20 6e 63 70 5f 72 65 61 64 5f 76 6f 6c 75 6d 65 5f 6c 69 73 74 28 73 74 72 75 63 74 20 oid.ncp_read_volume_list(struct.
255a0 66 69 6c 65 20 2a 2c 20 73 74 72 75 63 74 20 64 69 72 5f 63 6f 6e 74 65 78 74 20 2a 2c 0a 09 09 file.*,.struct.dir_context.*,...
255c0 09 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 2a 29 3b 0a 73 ..struct.ncp_cache_control.*);.s
255e0 74 61 74 69 63 20 76 6f 69 64 20 6e 63 70 5f 64 6f 5f 72 65 61 64 64 69 72 28 73 74 72 75 63 74 tatic.void.ncp_do_readdir(struct
25600 20 66 69 6c 65 20 2a 2c 20 73 74 72 75 63 74 20 64 69 72 5f 63 6f 6e 74 65 78 74 20 2a 2c 0a 09 .file.*,.struct.dir_context.*,..
25620 09 09 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 2a 29 3b 0a ...struct.ncp_cache_control.*);.
25640 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 72 65 61 64 64 69 72 28 73 74 72 75 63 74 20 66 .static.int.ncp_readdir(struct.f
25660 69 6c 65 20 2a 2c 20 73 74 72 75 63 74 20 64 69 72 5f 63 6f 6e 74 65 78 74 20 2a 29 3b 0a 0a 73 ile.*,.struct.dir_context.*);..s
25680 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 63 72 65 61 74 65 28 73 74 72 75 63 74 20 69 6e 6f 64 tatic.int.ncp_create(struct.inod
256a0 65 20 2a 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 2c 20 75 6d 6f 64 65 5f 74 2c 20 62 e.*,.struct.dentry.*,.umode_t,.b
256c0 6f 6f 6c 29 3b 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 ool);.static.struct.dentry.*ncp_
256e0 6c 6f 6f 6b 75 70 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 lookup(struct.inode.*,.struct.de
25700 6e 74 72 79 20 2a 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 29 3b 0a 73 74 61 74 69 63 20 69 6e ntry.*,.unsigned.int);.static.in
25720 74 20 6e 63 70 5f 75 6e 6c 69 6e 6b 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 73 74 72 t.ncp_unlink(struct.inode.*,.str
25740 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 6d 6b uct.dentry.*);.static.int.ncp_mk
25760 64 69 72 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 6e 74 72 dir(struct.inode.*,.struct.dentr
25780 79 20 2a 2c 20 75 6d 6f 64 65 5f 74 29 3b 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 72 6d y.*,.umode_t);.static.int.ncp_rm
257a0 64 69 72 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 6e 74 72 dir(struct.inode.*,.struct.dentr
257c0 79 20 2a 29 3b 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 72 65 6e 61 6d 65 28 73 74 72 75 y.*);.static.int.ncp_rename(stru
257e0 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 0a 09 09 20 ct.inode.*,.struct.dentry.*,....
25800 20 20 20 20 20 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 .....struct.inode.*,.struct.dent
25820 72 79 20 2a 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 29 3b 0a 73 74 61 74 69 63 20 69 6e 74 20 ry.*,.unsigned.int);.static.int.
25840 6e 63 70 5f 6d 6b 6e 6f 64 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 20 64 69 72 2c 20 73 74 ncp_mknod(struct.inode.*.dir,.st
25860 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 2c 0a 09 09 20 20 20 20 20 75 6d 6f 64 ruct.dentry.*dentry,........umod
25880 65 5f 74 20 6d 6f 64 65 2c 20 64 65 76 5f 74 20 72 64 65 76 29 3b 0a 23 69 66 20 64 65 66 69 6e e_t.mode,.dev_t.rdev);.#if.defin
258a0 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 20 64 65 66 69 6e ed(CONFIG_NCPFS_EXTRAS).||.defin
258c0 65 64 28 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 69 ed(CONFIG_NCPFS_NFS_NS).extern.i
258e0 6e 74 20 6e 63 70 5f 73 79 6d 6c 69 6e 6b 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 2c 20 73 nt.ncp_symlink(struct.inode.*,.s
25900 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 29 3b 0a 23 truct.dentry.*,.const.char.*);.#
25920 65 6c 73 65 0a 23 64 65 66 69 6e 65 20 6e 63 70 5f 73 79 6d 6c 69 6e 6b 20 4e 55 4c 4c 0a 23 65 else.#define.ncp_symlink.NULL.#e
25940 6e 64 69 66 0a 09 09 20 20 20 20 20 20 0a 63 6f 6e 73 74 20 73 74 72 75 63 74 20 66 69 6c 65 5f ndif..........const.struct.file_
25960 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 6f 6e 73 20 3d 0a operations.ncp_dir_operations.=.
25980 7b 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 {...llseek..=.generic_file_llsee
259a0 6b 2c 0a 09 2e 72 65 61 64 09 09 3d 20 67 65 6e 65 72 69 63 5f 72 65 61 64 5f 64 69 72 2c 0a 09 k,...read..=.generic_read_dir,..
259c0 2e 69 74 65 72 61 74 65 09 3d 20 6e 63 70 5f 72 65 61 64 64 69 72 2c 0a 09 2e 75 6e 6c 6f 63 6b .iterate.=.ncp_readdir,...unlock
259e0 65 64 5f 69 6f 63 74 6c 09 3d 20 6e 63 70 5f 69 6f 63 74 6c 2c 0a 23 69 66 64 65 66 20 43 4f 4e ed_ioctl.=.ncp_ioctl,.#ifdef.CON
25a00 46 49 47 5f 43 4f 4d 50 41 54 0a 09 2e 63 6f 6d 70 61 74 5f 69 6f 63 74 6c 09 3d 20 6e 63 70 5f FIG_COMPAT...compat_ioctl.=.ncp_
25a20 63 6f 6d 70 61 74 5f 69 6f 63 74 6c 2c 0a 23 65 6e 64 69 66 0a 7d 3b 0a 0a 63 6f 6e 73 74 20 73 compat_ioctl,.#endif.};..const.s
25a40 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 64 69 72 5f 69 truct.inode_operations.ncp_dir_i
25a60 6e 6f 64 65 5f 6f 70 65 72 61 74 69 6f 6e 73 20 3d 0a 7b 0a 09 2e 63 72 65 61 74 65 09 09 3d 20 node_operations.=.{...create..=.
25a80 6e 63 70 5f 63 72 65 61 74 65 2c 0a 09 2e 6c 6f 6f 6b 75 70 09 09 3d 20 6e 63 70 5f 6c 6f 6f 6b ncp_create,...lookup..=.ncp_look
25aa0 75 70 2c 0a 09 2e 75 6e 6c 69 6e 6b 09 09 3d 20 6e 63 70 5f 75 6e 6c 69 6e 6b 2c 0a 09 2e 73 79 up,...unlink..=.ncp_unlink,...sy
25ac0 6d 6c 69 6e 6b 09 3d 20 6e 63 70 5f 73 79 6d 6c 69 6e 6b 2c 0a 09 2e 6d 6b 64 69 72 09 09 3d 20 mlink.=.ncp_symlink,...mkdir..=.
25ae0 6e 63 70 5f 6d 6b 64 69 72 2c 0a 09 2e 72 6d 64 69 72 09 09 3d 20 6e 63 70 5f 72 6d 64 69 72 2c ncp_mkdir,...rmdir..=.ncp_rmdir,
25b00 0a 09 2e 6d 6b 6e 6f 64 09 09 3d 20 6e 63 70 5f 6d 6b 6e 6f 64 2c 0a 09 2e 72 65 6e 61 6d 65 09 ...mknod..=.ncp_mknod,...rename.
25b20 09 3d 20 6e 63 70 5f 72 65 6e 61 6d 65 2c 0a 09 2e 73 65 74 61 74 74 72 09 3d 20 6e 63 70 5f 6e .=.ncp_rename,...setattr.=.ncp_n
25b40 6f 74 69 66 79 5f 63 68 61 6e 67 65 2c 0a 7d 3b 0a 0a 2f 2a 0a 20 2a 20 44 65 6e 74 72 79 20 6f otify_change,.};../*..*.Dentry.o
25b60 70 65 72 61 74 69 6f 6e 73 20 72 6f 75 74 69 6e 65 73 0a 20 2a 2f 0a 73 74 61 74 69 63 20 69 6e perations.routines..*/.static.in
25b80 74 20 6e 63 70 5f 6c 6f 6f 6b 75 70 5f 76 61 6c 69 64 61 74 65 28 73 74 72 75 63 74 20 64 65 6e t.ncp_lookup_validate(struct.den
25ba0 74 72 79 20 2a 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 29 3b 0a 73 74 61 74 69 63 20 69 6e 74 try.*,.unsigned.int);.static.int
25bc0 20 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 74 20 64 65 .ncp_hash_dentry(const.struct.de
25be0 6e 74 72 79 20 2a 2c 20 73 74 72 75 63 74 20 71 73 74 72 20 2a 29 3b 0a 73 74 61 74 69 63 20 69 ntry.*,.struct.qstr.*);.static.i
25c00 6e 74 20 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 nt.ncp_compare_dentry(const.stru
25c20 63 74 20 64 65 6e 74 72 79 20 2a 2c 0a 09 09 75 6e 73 69 67 6e 65 64 20 69 6e 74 2c 20 63 6f 6e ct.dentry.*,...unsigned.int,.con
25c40 73 74 20 63 68 61 72 20 2a 2c 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 71 73 74 72 20 2a 29 3b st.char.*,.const.struct.qstr.*);
25c60 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 64 65 6c 65 74 65 5f 64 65 6e 74 72 79 28 63 6f .static.int.ncp_delete_dentry(co
25c80 6e 73 74 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 20 76 6f 69 nst.struct.dentry.*);.static.voi
25ca0 64 20 6e 63 70 5f 64 5f 70 72 75 6e 65 28 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e d.ncp_d_prune(struct.dentry.*den
25cc0 74 72 79 29 3b 0a 0a 63 6f 6e 73 74 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 5f 6f 70 65 72 61 try);..const.struct.dentry_opera
25ce0 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 20 3d 0a 7b 0a tions.ncp_dentry_operations.=.{.
25d00 09 2e 64 5f 72 65 76 61 6c 69 64 61 74 65 09 3d 20 6e 63 70 5f 6c 6f 6f 6b 75 70 5f 76 61 6c 69 ..d_revalidate.=.ncp_lookup_vali
25d20 64 61 74 65 2c 0a 09 2e 64 5f 68 61 73 68 09 09 3d 20 6e 63 70 5f 68 61 73 68 5f 64 65 6e 74 72 date,...d_hash..=.ncp_hash_dentr
25d40 79 2c 0a 09 2e 64 5f 63 6f 6d 70 61 72 65 09 3d 20 6e 63 70 5f 63 6f 6d 70 61 72 65 5f 64 65 6e y,...d_compare.=.ncp_compare_den
25d60 74 72 79 2c 0a 09 2e 64 5f 64 65 6c 65 74 65 09 3d 20 6e 63 70 5f 64 65 6c 65 74 65 5f 64 65 6e try,...d_delete.=.ncp_delete_den
25d80 74 72 79 2c 0a 09 2e 64 5f 70 72 75 6e 65 09 3d 20 6e 63 70 5f 64 5f 70 72 75 6e 65 2c 0a 7d 3b try,...d_prune.=.ncp_d_prune,.};
25da0 0a 0a 23 64 65 66 69 6e 65 20 6e 63 70 5f 6e 61 6d 65 73 70 61 63 65 28 69 29 09 28 4e 43 50 5f ..#define.ncp_namespace(i).(NCP_
25dc0 53 45 52 56 45 52 28 69 29 2d 3e 6e 61 6d 65 5f 73 70 61 63 65 5b 4e 43 50 5f 46 49 4e 46 4f 28 SERVER(i)->name_space[NCP_FINFO(
25de0 69 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 5d 29 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 69 i)->volNumber])..static.inline.i
25e00 6e 74 20 6e 63 70 5f 70 72 65 73 65 72 76 65 5f 65 6e 74 72 79 5f 63 61 73 65 28 73 74 72 75 63 nt.ncp_preserve_entry_case(struc
25e20 74 20 69 6e 6f 64 65 20 2a 69 2c 20 5f 5f 75 33 32 20 6e 73 63 72 65 61 74 6f 72 29 0a 7b 0a 23 t.inode.*i,.__u32.nscreator).{.#
25e40 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 69 6e 74 ifdef.CONFIG_NCPFS_SMALLDOS..int
25e60 20 6e 73 20 3d 20 6e 63 70 5f 6e 61 6d 65 73 70 61 63 65 28 69 29 3b 0a 0a 09 69 66 20 28 28 6e .ns.=.ncp_namespace(i);...if.((n
25e80 73 20 3d 3d 20 4e 57 5f 4e 53 5f 44 4f 53 29 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 s.==.NW_NS_DOS).#ifdef.CONFIG_NC
25ea0 50 46 53 5f 4f 53 32 5f 4e 53 0a 09 09 7c 7c 20 28 28 6e 73 20 3d 3d 20 4e 57 5f 4e 53 5f 4f 53 PFS_OS2_NS...||.((ns.==.NW_NS_OS
25ec0 32 29 20 26 26 20 28 6e 73 63 72 65 61 74 6f 72 20 3d 3d 20 4e 57 5f 4e 53 5f 44 4f 53 29 29 0a 2).&&.(nscreator.==.NW_NS_DOS)).
25ee0 23 65 6e 64 69 66 20 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 4f 53 32 5f 4e 53 20 2a 2f #endif./*.CONFIG_NCPFS_OS2_NS.*/
25f00 0a 09 20 20 20 29 0a 09 09 72 65 74 75 72 6e 20 30 3b 0a 23 65 6e 64 69 66 20 2f 2a 20 43 4f 4e .....)...return.0;.#endif./*.CON
25f20 46 49 47 5f 4e 43 50 46 53 5f 53 4d 41 4c 4c 44 4f 53 20 2a 2f 0a 09 72 65 74 75 72 6e 20 31 3b FIG_NCPFS_SMALLDOS.*/..return.1;
25f40 0a 7d 0a 0a 23 64 65 66 69 6e 65 20 6e 63 70 5f 70 72 65 73 65 72 76 65 5f 63 61 73 65 28 69 29 .}..#define.ncp_preserve_case(i)
25f60 09 28 6e 63 70 5f 6e 61 6d 65 73 70 61 63 65 28 69 29 20 21 3d 20 4e 57 5f 4e 53 5f 44 4f 53 29 .(ncp_namespace(i).!=.NW_NS_DOS)
25f80 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 61 73 65 5f 73 65 6e ..static.inline.int.ncp_case_sen
25fa0 73 69 74 69 76 65 28 63 6f 6e 73 74 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 29 0a 7b 0a sitive(const.struct.inode.*i).{.
25fc0 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 72 65 74 75 #ifdef.CONFIG_NCPFS_NFS_NS..retu
25fe0 72 6e 20 6e 63 70 5f 6e 61 6d 65 73 70 61 63 65 28 69 29 20 3d 3d 20 4e 57 5f 4e 53 5f 4e 46 53 rn.ncp_namespace(i).==.NW_NS_NFS
26000 3b 0a 23 65 6c 73 65 0a 09 72 65 74 75 72 6e 20 30 3b 0a 23 65 6e 64 69 66 20 2f 2a 20 43 4f 4e ;.#else..return.0;.#endif./*.CON
26020 46 49 47 5f 4e 43 50 46 53 5f 4e 46 53 5f 4e 53 20 2a 2f 0a 7d 0a 0a 2f 2a 0a 20 2a 20 4e 6f 74 FIG_NCPFS_NFS_NS.*/.}../*..*.Not
26040 65 3a 20 6c 65 61 76 65 20 74 68 65 20 68 61 73 68 20 75 6e 63 68 61 6e 67 65 64 20 69 66 20 74 e:.leave.the.hash.unchanged.if.t
26060 68 65 20 64 69 72 65 63 74 6f 72 79 0a 20 2a 20 69 73 20 63 61 73 65 2d 73 65 6e 73 69 74 69 76 he.directory..*.is.case-sensitiv
26080 65 2e 0a 20 2a 0a 20 2a 20 41 63 63 65 73 73 69 6e 67 20 74 68 65 20 70 61 72 65 6e 74 20 69 6e e...*..*.Accessing.the.parent.in
260a0 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 20 70 61 74 68 77 61 ode.can.be.racy.under.RCU.pathwa
260c0 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 28 29 20 74 6f 20 6d lking...*.Use.ACCESS_ONCE().to.m
260e0 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 74 69 63 75 6c 61 72 ake.sure.we.use._one_.particular
26100 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 6c 6c 20 68 61 6e 64 .inode,..*.the.callers.will.hand
26120 6c 65 20 72 61 63 65 73 2e 0a 20 2a 2f 0a 73 74 61 74 69 63 20 69 6e 74 20 0a 6e 63 70 5f 68 61 le.races...*/.static.int..ncp_ha
26140 73 68 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 64 sh_dentry(const.struct.dentry.*d
26160 65 6e 74 72 79 2c 20 73 74 72 75 63 74 20 71 73 74 72 20 2a 74 68 69 73 29 0a 7b 0a 09 73 74 72 entry,.struct.qstr.*this).{..str
26180 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 65 5f 72 63 75 28 64 uct.inode.*inode.=.d_inode_rcu(d
261a0 65 6e 74 72 79 29 3b 0a 0a 09 69 66 20 28 21 69 6e 6f 64 65 29 0a 09 09 72 65 74 75 72 6e 20 30 entry);...if.(!inode)...return.0
261c0 3b 0a 0a 09 69 66 20 28 21 6e 63 70 5f 63 61 73 65 5f 73 65 6e 73 69 74 69 76 65 28 69 6e 6f 64 ;...if.(!ncp_case_sensitive(inod
261e0 65 29 29 20 7b 0a 09 09 73 74 72 75 63 74 20 6e 6c 73 5f 74 61 62 6c 65 20 2a 74 3b 0a 09 09 75 e)).{...struct.nls_table.*t;...u
26200 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 68 61 73 68 3b 0a 09 09 69 6e 74 20 69 3b 0a 0a 09 09 74 nsigned.long.hash;...int.i;....t
26220 20 3d 20 4e 43 50 5f 49 4f 5f 54 41 42 4c 45 28 64 65 6e 74 72 79 2d 3e 64 5f 73 62 29 3b 0a 09 .=.NCP_IO_TABLE(dentry->d_sb);..
26240 09 68 61 73 68 20 3d 20 69 6e 69 74 5f 6e 61 6d 65 5f 68 61 73 68 28 64 65 6e 74 72 79 29 3b 0a .hash.=.init_name_hash(dentry);.
26260 09 09 66 6f 72 20 28 69 3d 30 3b 20 69 3c 74 68 69 73 2d 3e 6c 65 6e 20 3b 20 69 2b 2b 29 0a 09 ..for.(i=0;.i<this->len.;.i++)..
26280 09 09 68 61 73 68 20 3d 20 70 61 72 74 69 61 6c 5f 6e 61 6d 65 5f 68 61 73 68 28 6e 63 70 5f 74 ..hash.=.partial_name_hash(ncp_t
262a0 6f 6c 6f 77 65 72 28 74 2c 20 74 68 69 73 2d 3e 6e 61 6d 65 5b 69 5d 29 2c 0a 09 09 09 09 09 09 olower(t,.this->name[i]),.......
262c0 09 09 09 68 61 73 68 29 3b 0a 09 09 74 68 69 73 2d 3e 68 61 73 68 20 3d 20 65 6e 64 5f 6e 61 6d ...hash);...this->hash.=.end_nam
262e0 65 5f 68 61 73 68 28 68 61 73 68 29 3b 0a 09 7d 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 2f e_hash(hash);..}..return.0;.}../
26300 2a 0a 20 2a 20 41 63 63 65 73 73 69 6e 67 20 74 68 65 20 70 61 72 65 6e 74 20 69 6e 6f 64 65 20 *..*.Accessing.the.parent.inode.
26320 63 61 6e 20 62 65 20 72 61 63 79 20 75 6e 64 65 72 20 52 43 55 20 70 61 74 68 77 61 6c 6b 69 6e can.be.racy.under.RCU.pathwalkin
26340 67 2e 0a 20 2a 20 55 73 65 20 41 43 43 45 53 53 5f 4f 4e 43 45 28 29 20 74 6f 20 6d 61 6b 65 20 g...*.Use.ACCESS_ONCE().to.make.
26360 73 75 72 65 20 77 65 20 75 73 65 20 5f 6f 6e 65 5f 20 70 61 72 74 69 63 75 6c 61 72 20 69 6e 6f sure.we.use._one_.particular.ino
26380 64 65 2c 0a 20 2a 20 74 68 65 20 63 61 6c 6c 65 72 73 20 77 69 6c 6c 20 68 61 6e 64 6c 65 20 72 de,..*.the.callers.will.handle.r
263a0 61 63 65 73 2e 0a 20 2a 2f 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 63 6f 6d 70 61 72 65 aces...*/.static.int.ncp_compare
263c0 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 64 65 6e _dentry(const.struct.dentry.*den
263e0 74 72 79 2c 0a 09 09 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 6c 65 6e 2c 20 63 6f 6e 73 74 20 63 try,...unsigned.int.len,.const.c
26400 68 61 72 20 2a 73 74 72 2c 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20 71 73 74 72 20 2a 6e 61 6d har.*str,.const.struct.qstr.*nam
26420 65 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 70 69 6e 6f 64 65 3b 0a 0a 09 69 66 e).{..struct.inode.*pinode;...if
26440 20 28 6c 65 6e 20 21 3d 20 6e 61 6d 65 2d 3e 6c 65 6e 29 0a 09 09 72 65 74 75 72 6e 20 31 3b 0a .(len.!=.name->len)...return.1;.
26460 0a 09 70 69 6e 6f 64 65 20 3d 20 64 5f 69 6e 6f 64 65 5f 72 63 75 28 64 65 6e 74 72 79 2d 3e 64 ..pinode.=.d_inode_rcu(dentry->d
26480 5f 70 61 72 65 6e 74 29 3b 0a 09 69 66 20 28 21 70 69 6e 6f 64 65 29 0a 09 09 72 65 74 75 72 6e _parent);..if.(!pinode)...return
264a0 20 31 3b 0a 0a 09 69 66 20 28 6e 63 70 5f 63 61 73 65 5f 73 65 6e 73 69 74 69 76 65 28 70 69 6e .1;...if.(ncp_case_sensitive(pin
264c0 6f 64 65 29 29 0a 09 09 72 65 74 75 72 6e 20 73 74 72 6e 63 6d 70 28 73 74 72 2c 20 6e 61 6d 65 ode))...return.strncmp(str,.name
264e0 2d 3e 6e 61 6d 65 2c 20 6c 65 6e 29 3b 0a 0a 09 72 65 74 75 72 6e 20 6e 63 70 5f 73 74 72 6e 69 ->name,.len);...return.ncp_strni
26500 63 6d 70 28 4e 43 50 5f 49 4f 5f 54 41 42 4c 45 28 70 69 6e 6f 64 65 2d 3e 69 5f 73 62 29 2c 20 cmp(NCP_IO_TABLE(pinode->i_sb),.
26520 73 74 72 2c 20 6e 61 6d 65 2d 3e 6e 61 6d 65 2c 20 6c 65 6e 29 3b 0a 7d 0a 0a 2f 2a 0a 20 2a 20 str,.name->name,.len);.}../*..*.
26540 54 68 69 73 20 69 73 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 72 6f 6d 20 64 70 75 74 28 29 This.is.the.callback.from.dput()
26560 20 77 68 65 6e 20 64 5f 63 6f 75 6e 74 20 69 73 20 67 6f 69 6e 67 20 74 6f 20 30 2e 0a 20 2a 20 .when.d_count.is.going.to.0...*.
26580 57 65 20 75 73 65 20 74 68 69 73 20 74 6f 20 75 6e 68 61 73 68 20 64 65 6e 74 72 69 65 73 20 77 We.use.this.to.unhash.dentries.w
265a0 69 74 68 20 62 61 64 20 69 6e 6f 64 65 73 2e 0a 20 2a 20 43 6c 6f 73 69 6e 67 20 66 69 6c 65 73 ith.bad.inodes...*.Closing.files
265c0 20 63 61 6e 20 62 65 20 73 61 66 65 6c 79 20 70 6f 73 74 70 6f 6e 65 64 20 75 6e 74 69 6c 20 69 .can.be.safely.postponed.until.i
265e0 70 75 74 28 29 20 2d 20 69 74 27 73 20 64 6f 6e 65 20 74 68 65 72 65 20 61 6e 79 77 61 79 2e 0a put().-.it's.done.there.anyway..
26600 20 2a 2f 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 64 65 6c 65 74 65 5f 64 65 6e 74 72 79 .*/.static.int.ncp_delete_dentry
26620 28 63 6f 6e 73 74 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 20 64 65 6e 74 72 79 29 0a 7b (const.struct.dentry.*.dentry).{
26640 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 65 28 ..struct.inode.*inode.=.d_inode(
26660 64 65 6e 74 72 79 29 3b 0a 0a 09 69 66 20 28 69 6e 6f 64 65 29 20 7b 0a 09 09 69 66 20 28 69 73 dentry);...if.(inode).{...if.(is
26680 5f 62 61 64 5f 69 6e 6f 64 65 28 69 6e 6f 64 65 29 29 0a 09 09 09 72 65 74 75 72 6e 20 31 3b 0a _bad_inode(inode))....return.1;.
266a0 09 7d 20 65 6c 73 65 0a 09 7b 0a 09 2f 2a 20 4e 2e 42 2e 20 55 6e 68 61 73 68 20 6e 65 67 61 74 .}.else..{../*.N.B..Unhash.negat
266c0 69 76 65 20 64 65 6e 74 72 69 65 73 3f 20 2a 2f 0a 09 7d 0a 09 72 65 74 75 72 6e 20 30 3b 0a 7d ive.dentries?.*/..}..return.0;.}
266e0 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 69 6e 74 0a 6e 63 70 5f 73 69 6e 67 6c 65 5f 76 ..static.inline.int.ncp_single_v
26700 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 29 olume(struct.ncp_server.*server)
26720 0a 7b 0a 09 72 65 74 75 72 6e 20 28 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 76 6f .{..return.(server->m.mounted_vo
26740 6c 5b 30 5d 20 21 3d 20 27 5c 30 27 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e 65 20 l[0].!=.'\0');.}..static.inline.
26760 69 6e 74 20 6e 63 70 5f 69 73 5f 73 65 72 76 65 72 5f 72 6f 6f 74 28 73 74 72 75 63 74 20 69 6e int.ncp_is_server_root(struct.in
26780 6f 64 65 20 2a 69 6e 6f 64 65 29 0a 7b 0a 09 72 65 74 75 72 6e 20 21 6e 63 70 5f 73 69 6e 67 6c ode.*inode).{..return.!ncp_singl
267a0 65 5f 76 6f 6c 75 6d 65 28 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 29 20 26 26 0a 09 e_volume(NCP_SERVER(inode)).&&..
267c0 09 69 73 5f 72 6f 6f 74 5f 69 6e 6f 64 65 28 69 6e 6f 64 65 29 3b 0a 7d 0a 0a 0a 2f 2a 0a 20 2a .is_root_inode(inode);.}.../*..*
267e0 20 54 68 69 73 20 69 73 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 77 68 65 6e 20 74 68 65 20 64 .This.is.the.callback.when.the.d
26800 63 61 63 68 65 20 68 61 73 20 61 20 6c 6f 6f 6b 75 70 20 68 69 74 2e 0a 20 2a 2f 0a 0a 0a 23 69 cache.has.a.lookup.hit...*/...#i
26820 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 53 54 52 4f 4e 47 0a 2f 2a 20 74 72 79 20 fdef.CONFIG_NCPFS_STRONG./*.try.
26840 74 6f 20 64 65 6c 65 74 65 20 61 20 72 65 61 64 6f 6e 6c 79 20 66 69 6c 65 20 28 4e 57 20 52 20 to.delete.a.readonly.file.(NW.R.
26860 62 69 74 20 73 65 74 29 20 2a 2f 0a 0a 73 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 66 6f 72 63 bit.set).*/..static.int.ncp_forc
26880 65 5f 75 6e 6c 69 6e 6b 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 2c 20 73 74 72 75 e_unlink(struct.inode.*dir,.stru
268a0 63 74 20 64 65 6e 74 72 79 2a 20 64 65 6e 74 72 79 29 0a 7b 0a 20 20 20 20 20 20 20 20 69 6e 74 ct.dentry*.dentry).{.........int
268c0 20 72 65 73 3d 30 78 39 63 2c 72 65 73 32 3b 0a 09 73 74 72 75 63 74 20 6e 77 5f 6d 6f 64 69 66 .res=0x9c,res2;..struct.nw_modif
268e0 79 5f 64 6f 73 5f 69 6e 66 6f 20 69 6e 66 6f 3b 0a 09 5f 5f 6c 65 33 32 20 6f 6c 64 5f 6e 77 61 y_dos_info.info;..__le32.old_nwa
26900 74 74 72 3b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 3b 0a 0a 09 6d 65 6d ttr;..struct.inode.*inode;...mem
26920 73 65 74 28 26 69 6e 66 6f 2c 20 30 2c 20 73 69 7a 65 6f 66 28 69 6e 66 6f 29 29 3b 0a 09 0a 20 set(&info,.0,.sizeof(info));....
26940 20 20 20 20 20 20 20 2f 2a 20 72 65 6d 6f 76 65 20 74 68 65 20 52 65 61 64 2d 4f 6e 6c 79 20 66 ......./*.remove.the.Read-Only.f
26960 6c 61 67 20 6f 6e 20 74 68 65 20 4e 57 20 73 65 72 76 65 72 20 2a 2f 0a 09 69 6e 6f 64 65 20 3d lag.on.the.NW.server.*/..inode.=
26980 20 64 5f 69 6e 6f 64 65 28 64 65 6e 74 72 79 29 3b 0a 0a 09 6f 6c 64 5f 6e 77 61 74 74 72 20 3d .d_inode(dentry);...old_nwattr.=
269a0 20 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 6e 77 61 74 74 72 3b 0a 09 69 6e 66 6f .NCP_FINFO(inode)->nwattr;..info
269c0 2e 61 74 74 72 69 62 75 74 65 73 20 3d 20 6f 6c 64 5f 6e 77 61 74 74 72 20 26 20 7e 28 61 52 4f .attributes.=.old_nwattr.&.~(aRO
269e0 4e 4c 59 7c 61 44 45 4c 45 54 45 49 4e 48 49 42 49 54 7c 61 52 45 4e 41 4d 45 49 4e 48 49 42 49 NLY|aDELETEINHIBIT|aRENAMEINHIBI
26a00 54 29 3b 0a 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 T);..res2.=.ncp_modify_file_or_s
26a20 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 52 28 69 ubdir_dos_info_path(NCP_SERVER(i
26a40 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 55 54 45 node),.inode,.NULL,.DM_ATTRIBUTE
26a60 53 2c 20 26 69 6e 66 6f 29 3b 0a 09 69 66 20 28 72 65 73 32 29 0a 09 09 67 6f 74 6f 20 6c 65 61 S,.&info);..if.(res2)...goto.lea
26a80 76 65 5f 6d 65 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2a 20 6e 6f 77 20 74 72 79 20 61 67 61 69 6e ve_me;........../*.now.try.again
26aa0 20 74 68 65 20 64 65 6c 65 74 65 20 6f 70 65 72 61 74 69 6f 6e 20 2a 2f 0a 20 20 20 20 20 20 20 .the.delete.operation.*/........
26ac0 20 72 65 73 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 32 28 4e .res.=.ncp_del_file_or_subdir2(N
26ae0 43 50 5f 53 45 52 56 45 52 28 64 69 72 29 2c 20 64 65 6e 74 72 79 29 3b 0a 0a 20 20 20 20 20 20 CP_SERVER(dir),.dentry);........
26b00 20 20 69 66 20 28 72 65 73 29 20 20 2f 2a 20 64 65 6c 65 74 65 20 66 61 69 6c 65 64 2c 20 73 65 ..if.(res)../*.delete.failed,.se
26b20 74 20 52 20 62 69 74 20 61 67 61 69 6e 20 2a 2f 0a 20 20 20 20 20 20 20 20 7b 0a 09 09 69 6e 66 t.R.bit.again.*/.........{...inf
26b40 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 3b 0a 09 09 72 65 73 o.attributes.=.old_nwattr;...res
26b60 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 72 5f 64 6f 2.=.ncp_modify_file_or_subdir_do
26b80 73 5f 69 6e 66 6f 5f 70 61 74 68 28 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 2c 20 69 s_info_path(NCP_SERVER(inode),.i
26ba0 6e 6f 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 node,.NULL,.DM_ATTRIBUTES,.&info
26bc0 29 3b 0a 09 09 69 66 20 28 72 65 73 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 );...if.(res2)..................
26be0 20 20 20 20 20 20 20 67 6f 74 6f 20 6c 65 61 76 65 5f 6d 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a .......goto.leave_me;.........}.
26c00 6c 65 61 76 65 5f 6d 65 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 28 72 65 73 29 3b 0a 7d leave_me:.........return(res);.}
26c20 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 52 4f 4e 47 20 2a .#endif./*.CONFIG_NCPFS_STRONG.*
26c40 2f 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 4f 4e 47 0a 73 74 /..#ifdef.CONFIG_NCPFS_STRONG.st
26c60 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 66 6f 72 63 65 5f 72 65 6e 61 6d 65 28 73 74 72 75 63 74 atic.int.ncp_force_rename(struct
26c80 20 69 6e 6f 64 65 20 2a 6f 6c 64 5f 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 2a 20 .inode.*old_dir,.struct.dentry*.
26ca0 6f 6c 64 5f 64 65 6e 74 72 79 2c 20 63 68 61 72 20 2a 5f 6f 6c 64 5f 6e 61 6d 65 2c 0a 20 20 20 old_dentry,.char.*_old_name,....
26cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 6e 65 77 5f ..............struct.inode.*new_
26ce0 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 2a 20 6e 65 77 5f 64 65 6e 74 72 79 2c 20 dir,.struct.dentry*.new_dentry,.
26d00 63 68 61 72 20 2a 5f 6e 65 77 5f 6e 61 6d 65 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 77 5f 6d 6f char.*_new_name).{..struct.nw_mo
26d20 64 69 66 79 5f 64 6f 73 5f 69 6e 66 6f 20 69 6e 66 6f 3b 0a 20 20 20 20 20 20 20 20 69 6e 74 20 dify_dos_info.info;.........int.
26d40 72 65 73 3d 30 78 39 30 2c 72 65 73 32 3b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 6f 6c res=0x90,res2;..struct.inode.*ol
26d60 64 5f 69 6e 6f 64 65 20 3d 20 64 5f 69 6e 6f 64 65 28 6f 6c 64 5f 64 65 6e 74 72 79 29 3b 0a 09 d_inode.=.d_inode(old_dentry);..
26d80 5f 5f 6c 65 33 32 20 6f 6c 64 5f 6e 77 61 74 74 72 20 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 6f 6c __le32.old_nwattr.=.NCP_FINFO(ol
26da0 64 5f 69 6e 6f 64 65 29 2d 3e 6e 77 61 74 74 72 3b 0a 09 5f 5f 6c 65 33 32 20 6e 65 77 5f 6e 77 d_inode)->nwattr;..__le32.new_nw
26dc0 61 74 74 72 20 3d 20 30 3b 20 2f 2a 20 73 68 75 74 20 63 6f 6d 70 69 6c 65 72 20 77 61 72 6e 69 attr.=.0;./*.shut.compiler.warni
26de0 6e 67 20 2a 2f 0a 09 69 6e 74 20 6f 6c 64 5f 6e 77 61 74 74 72 5f 63 68 61 6e 67 65 64 20 3d 20 ng.*/..int.old_nwattr_changed.=.
26e00 30 3b 0a 09 69 6e 74 20 6e 65 77 5f 6e 77 61 74 74 72 5f 63 68 61 6e 67 65 64 20 3d 20 30 3b 0a 0;..int.new_nwattr_changed.=.0;.
26e20 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 69 6e 66 6f 29 29 ..memset(&info,.0,.sizeof(info))
26e40 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 52 65 61 64 2d 4f ;.........../*.remove.the.Read-O
26e60 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 2a 2f 0a 0a 09 69 nly.flag.on.the.NW.server.*/...i
26e80 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 20 26 20 7e 28 nfo.attributes.=.old_nwattr.&.~(
26ea0 61 52 4f 4e 4c 59 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 aRONLY|aRENAMEINHIBIT|aDELETEINH
26ec0 49 42 49 54 29 3b 0a 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 IBIT);..res2.=.ncp_modify_file_o
26ee0 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
26f00 52 28 6f 6c 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 R(old_inode),.old_inode,.NULL,.D
26f20 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 21 72 65 73 32 M_ATTRIBUTES,.&info);..if.(!res2
26f40 29 0a 09 09 6f 6c 64 5f 6e 77 61 74 74 72 5f 63 68 61 6e 67 65 64 20 3d 20 31 3b 0a 09 69 66 20 )...old_nwattr_changed.=.1;..if.
26f60 28 6e 65 77 5f 64 65 6e 74 72 79 20 26 26 20 64 5f 72 65 61 6c 6c 79 5f 69 73 5f 70 6f 73 69 74 (new_dentry.&&.d_really_is_posit
26f80 69 76 65 28 6e 65 77 5f 64 65 6e 74 72 79 29 29 20 7b 0a 09 09 6e 65 77 5f 6e 77 61 74 74 72 20 ive(new_dentry)).{...new_nwattr.
26fa0 3d 20 4e 43 50 5f 46 49 4e 46 4f 28 64 5f 69 6e 6f 64 65 28 6e 65 77 5f 64 65 6e 74 72 79 29 29 =.NCP_FINFO(d_inode(new_dentry))
26fc0 2d 3e 6e 77 61 74 74 72 3b 0a 09 09 69 6e 66 6f 2e 61 74 74 72 69 62 75 74 65 73 20 3d 20 6e 65 ->nwattr;...info.attributes.=.ne
26fe0 77 5f 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 w_nwattr.&.~(aRONLY|aRENAMEINHIB
27000 49 54 7c 61 44 45 4c 45 54 45 49 4e 48 49 42 49 54 29 3b 0a 09 09 72 65 73 32 20 3d 20 6e 63 70 IT|aDELETEINHIBIT);...res2.=.ncp
27020 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 5f _modify_file_or_subdir_dos_info_
27040 70 61 74 68 28 4e 43 50 5f 53 45 52 56 45 52 28 6e 65 77 5f 64 69 72 29 2c 20 6e 65 77 5f 64 69 path(NCP_SERVER(new_dir),.new_di
27060 72 2c 20 5f 6e 65 77 5f 6e 61 6d 65 2c 20 44 4d 5f 41 54 54 52 49 42 55 54 45 53 2c 20 26 69 6e r,._new_name,.DM_ATTRIBUTES,.&in
27080 66 6f 29 3b 0a 09 09 69 66 20 28 21 72 65 73 32 29 0a 09 09 09 6e 65 77 5f 6e 77 61 74 74 72 5f fo);...if.(!res2)....new_nwattr_
270a0 63 68 61 6e 67 65 64 20 3d 20 31 3b 0a 09 7d 0a 20 20 20 20 20 20 20 20 2f 2a 20 6e 6f 77 20 74 changed.=.1;..}........./*.now.t
270c0 72 79 20 61 67 61 69 6e 20 74 68 65 20 72 65 6e 61 6d 65 20 6f 70 65 72 61 74 69 6f 6e 20 2a 2f ry.again.the.rename.operation.*/
270e0 0a 09 2f 2a 20 62 75 74 20 6f 6e 6c 79 20 69 66 20 73 6f 6d 65 74 68 69 6e 67 20 72 65 61 6c 6c ../*.but.only.if.something.reall
27100 79 20 68 61 70 70 65 6e 65 64 20 2a 2f 0a 09 69 66 20 28 6e 65 77 5f 6e 77 61 74 74 72 5f 63 68 y.happened.*/..if.(new_nwattr_ch
27120 61 6e 67 65 64 20 7c 7c 20 6f 6c 64 5f 6e 77 61 74 74 72 5f 63 68 61 6e 67 65 64 29 20 7b 0a 09 anged.||.old_nwattr_changed).{..
27140 20 20 20 20 20 20 20 20 72 65 73 20 3d 20 6e 63 70 5f 72 65 6e 5f 6f 72 5f 6d 6f 76 5f 66 69 6c ........res.=.ncp_ren_or_mov_fil
27160 65 5f 6f 72 5f 73 75 62 64 69 72 28 4e 43 50 5f 53 45 52 56 45 52 28 6f 6c 64 5f 64 69 72 29 2c e_or_subdir(NCP_SERVER(old_dir),
27180 0a 20 20 20 20 20 20 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
271a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 6c 64 5f 64 69 72 2c 20 5f 6f 6c 64 5f 6e 61 6d 65 ..............old_dir,._old_name
271c0 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ,...............................
271e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 5f 64 69 72 2c 20 5f 6e 65 77 5f 6e 61 6d ...............new_dir,._new_nam
27200 65 29 3b 0a 09 7d 20 0a 09 69 66 20 28 72 65 73 29 0a 09 09 67 6f 74 6f 20 6c 65 61 76 65 5f 6d e);..}...if.(res)...goto.leave_m
27220 65 3b 0a 09 2f 2a 20 66 69 6c 65 20 77 61 73 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20 72 65 6e e;../*.file.was.successfully.ren
27240 61 6d 65 64 2c 20 73 6f 3a 0a 09 20 20 20 64 6f 20 6e 6f 74 20 73 65 74 20 61 74 74 72 69 62 75 amed,.so:.....do.not.set.attribu
27260 74 65 73 20 6f 6e 20 6f 6c 64 20 66 69 6c 65 20 2d 20 69 74 20 6e 6f 20 6c 6f 6e 67 65 72 20 65 tes.on.old.file.-.it.no.longer.e
27280 78 69 73 74 73 0a 09 20 20 20 63 6f 70 79 20 61 74 74 72 69 62 75 74 65 73 20 66 72 6f 6d 20 6f xists.....copy.attributes.from.o
272a0 6c 64 20 66 69 6c 65 20 74 6f 20 6e 65 77 20 2a 2f 0a 09 6e 65 77 5f 6e 77 61 74 74 72 5f 63 68 ld.file.to.new.*/..new_nwattr_ch
272c0 61 6e 67 65 64 20 3d 20 6f 6c 64 5f 6e 77 61 74 74 72 5f 63 68 61 6e 67 65 64 3b 0a 09 6e 65 77 anged.=.old_nwattr_changed;..new
272e0 5f 6e 77 61 74 74 72 20 3d 20 6f 6c 64 5f 6e 77 61 74 74 72 3b 0a 09 6f 6c 64 5f 6e 77 61 74 74 _nwattr.=.old_nwattr;..old_nwatt
27300 72 5f 63 68 61 6e 67 65 64 20 3d 20 30 3b 0a 09 0a 6c 65 61 76 65 5f 6d 65 3a 3b 0a 09 69 66 20 r_changed.=.0;...leave_me:;..if.
27320 28 6f 6c 64 5f 6e 77 61 74 74 72 5f 63 68 61 6e 67 65 64 29 20 7b 0a 09 09 69 6e 66 6f 2e 61 74 (old_nwattr_changed).{...info.at
27340 74 72 69 62 75 74 65 73 20 3d 20 6f 6c 64 5f 6e 77 61 74 74 72 3b 0a 09 09 72 65 73 32 20 3d 20 tributes.=.old_nwattr;...res2.=.
27360 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 73 5f 69 6e ncp_modify_file_or_subdir_dos_in
27380 66 6f 5f 70 61 74 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 fo_path(NCP_SERVER(old_inode),.o
273a0 6c 64 5f 69 6e 6f 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 ld_inode,.NULL,.DM_ATTRIBUTES,.&
273c0 69 6e 66 6f 29 3b 0a 09 09 2f 2a 20 69 67 6e 6f 72 65 20 65 72 72 6f 72 73 20 2a 2f 0a 09 7d 0a info);.../*.ignore.errors.*/..}.
273e0 09 69 66 20 28 6e 65 77 5f 6e 77 61 74 74 72 5f 63 68 61 6e 67 65 64 29 09 7b 0a 09 09 69 6e 66 .if.(new_nwattr_changed).{...inf
27400 6f 2e 61 74 74 72 69 62 75 74 65 73 20 3d 20 6e 65 77 5f 6e 77 61 74 74 72 3b 0a 09 09 72 65 73 o.attributes.=.new_nwattr;...res
27420 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 72 5f 64 6f 2.=.ncp_modify_file_or_subdir_do
27440 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 69 72 29 2c s_info_path(NCP_SERVER(new_dir),
27460 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 49 42 55 54 .new_dir,._new_name,.DM_ATTRIBUT
27480 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 72 6f 72 73 20 2a ES,.&info);.../*.ignore.errors.*
274a0 2f 0a 09 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 28 72 65 73 29 3b 0a 7d 0a 23 65 6e 64 /..}.........return(res);.}.#end
274c0 69 66 09 2f 2a 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 53 54 52 4f 4e 47 20 2a 2f 0a 0a 0a 73 if./*.CONFIG_NCPFS_STRONG.*/...s
274e0 74 61 74 69 63 20 69 6e 74 0a 6e 63 70 5f 6c 6f 6f 6b 75 70 5f 76 61 6c 69 64 61 74 65 28 73 74 tatic.int.ncp_lookup_validate(st
27500 72 75 63 74 20 64 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 ruct.dentry.*dentry,.unsigned.in
27520 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 20 2a 73 t.flags).{..struct.ncp_server.*s
27540 65 72 76 65 72 3b 0a 09 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 70 61 72 65 6e 74 3b 0a 09 erver;..struct.dentry.*parent;..
27560 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 65 struct.inode.*dir;..struct.ncp_e
27580 6e 74 72 79 5f 69 6e 66 6f 20 66 69 6e 66 6f 3b 0a 09 69 6e 74 20 72 65 73 2c 20 76 61 6c 20 3d ntry_info.finfo;..int.res,.val.=
275a0 20 30 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 .0,.len;..__u8.__name[NCP_MAXPAT
275c0 48 4c 45 4e 20 2b 20 31 5d 3b 0a 0a 09 69 66 20 28 64 65 6e 74 72 79 20 3d 3d 20 64 65 6e 74 72 HLEN.+.1];...if.(dentry.==.dentr
275e0 79 2d 3e 64 5f 73 62 2d 3e 73 5f 72 6f 6f 74 29 0a 09 09 72 65 74 75 72 6e 20 31 3b 0a 0a 09 69 y->d_sb->s_root)...return.1;...i
27600 66 20 28 66 6c 61 67 73 20 26 20 4c 4f 4f 4b 55 50 5f 52 43 55 29 0a 09 09 72 65 74 75 72 6e 20 f.(flags.&.LOOKUP_RCU)...return.
27620 2d 45 43 48 49 4c 44 3b 0a 0a 09 70 61 72 65 6e 74 20 3d 20 64 67 65 74 5f 70 61 72 65 6e 74 28 -ECHILD;...parent.=.dget_parent(
27640 64 65 6e 74 72 79 29 3b 0a 09 64 69 72 20 3d 20 64 5f 69 6e 6f 64 65 28 70 61 72 65 6e 74 29 3b dentry);..dir.=.d_inode(parent);
27660 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 76 65 28 64 65 6e 74 ...if.(d_really_is_negative(dent
27680 72 79 29 29 0a 09 09 67 6f 74 6f 20 66 69 6e 69 73 68 65 64 3b 0a 0a 09 73 65 72 76 65 72 20 3d ry))...goto.finished;...server.=
276a0 20 4e 43 50 5f 53 45 52 56 45 52 28 64 69 72 29 3b 0a 0a 09 2f 2a 0a 09 20 2a 20 49 6e 73 70 69 .NCP_SERVER(dir);.../*...*.Inspi
276c0 72 65 64 20 62 79 20 73 6d 62 66 73 3a 0a 09 20 2a 20 54 68 65 20 64 65 66 61 75 6c 74 20 76 61 red.by.smbfs:...*.The.default.va
276e0 6c 69 64 61 74 69 6f 6e 20 69 73 20 62 61 73 65 64 20 6f 6e 20 64 65 6e 74 72 79 20 61 67 65 3a lidation.is.based.on.dentry.age:
27700 0a 09 20 2a 20 57 65 20 73 65 74 20 74 68 65 20 6d 61 78 20 61 67 65 20 61 74 20 6d 6f 75 6e 74 ...*.We.set.the.max.age.at.mount
27720 20 74 69 6d 65 2e 20 20 28 42 75 74 20 65 61 63 68 0a 09 20 2a 20 73 75 63 63 65 73 73 66 75 6c .time...(But.each...*.successful
27740 20 73 65 72 76 65 72 20 6c 6f 6f 6b 75 70 20 72 65 6e 65 77 73 20 74 68 65 20 74 69 6d 65 73 74 .server.lookup.renews.the.timest
27760 61 6d 70 2e 29 0a 09 20 2a 2f 0a 09 76 61 6c 20 3d 20 4e 43 50 5f 54 45 53 54 5f 41 47 45 28 73 amp.)...*/..val.=.NCP_TEST_AGE(s
27780 65 72 76 65 72 2c 20 64 65 6e 74 72 79 29 3b 0a 09 69 66 20 28 76 61 6c 29 0a 09 09 67 6f 74 6f erver,.dentry);..if.(val)...goto
277a0 20 66 69 6e 69 73 68 65 64 3b 0a 0a 09 6e 63 70 5f 64 62 67 28 32 2c 20 22 25 70 64 32 20 6e 6f .finished;...ncp_dbg(2,."%pd2.no
277c0 74 20 76 61 6c 69 64 2c 20 61 67 65 3d 25 6c 64 2c 20 73 65 72 76 65 72 20 6c 6f 6f 6b 75 70 5c t.valid,.age=%ld,.server.lookup\
277e0 6e 22 2c 0a 09 09 64 65 6e 74 72 79 2c 20 4e 43 50 5f 47 45 54 5f 41 47 45 28 64 65 6e 74 72 79 n",...dentry,.NCP_GET_AGE(dentry
27800 29 29 3b 0a 0a 09 6c 65 6e 20 3d 20 73 69 7a 65 6f 66 28 5f 5f 6e 61 6d 65 29 3b 0a 09 69 66 20 ));...len.=.sizeof(__name);..if.
27820 28 6e 63 70 5f 69 73 5f 73 65 72 76 65 72 5f 72 6f 6f 74 28 64 69 72 29 29 20 7b 0a 09 09 72 65 (ncp_is_server_root(dir)).{...re
27840 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 61 6d 65 2c 20 26 s.=.ncp_io2vol(server,.__name,.&
27860 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 09 09 09 20 64 len,.dentry->d_name.name,......d
27880 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6c 65 6e 2c 20 31 29 3b 0a 09 09 69 66 20 28 21 72 65 entry->d_name.len,.1);...if.(!re
278a0 73 29 20 7b 0a 09 09 09 72 65 73 20 3d 20 6e 63 70 5f 6c 6f 6f 6b 75 70 5f 76 6f 6c 75 6d 65 28 s).{....res.=.ncp_lookup_volume(
278c0 73 65 72 76 65 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 09 09 server,.__name,.&(finfo.i));....
278e0 69 66 20 28 21 72 65 73 29 0a 09 09 09 09 6e 63 70 5f 75 70 64 61 74 65 5f 6b 6e 6f 77 6e 5f 6e if.(!res).....ncp_update_known_n
27900 61 6d 65 73 70 61 63 65 28 73 65 72 76 65 72 2c 20 66 69 6e 66 6f 2e 69 2e 76 6f 6c 4e 75 6d 62 amespace(server,.finfo.i.volNumb
27920 65 72 2c 20 4e 55 4c 4c 29 3b 0a 09 09 7d 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 72 65 73 20 3d er,.NULL);...}..}.else.{...res.=
27940 20 6e 63 70 5f 69 6f 32 76 6f 6c 28 73 65 72 76 65 72 2c 20 5f 5f 6e 61 6d 65 2c 20 26 6c 65 6e .ncp_io2vol(server,.__name,.&len
27960 2c 20 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6e 61 6d 65 2c 0a 09 09 09 09 20 64 65 6e 74 ,.dentry->d_name.name,......dent
27980 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6c 65 6e 2c 20 21 6e 63 70 5f 70 72 65 73 65 72 76 65 5f 63 61 ry->d_name.len,.!ncp_preserve_ca
279a0 73 65 28 64 69 72 29 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 se(dir));...if.(!res)....res.=.n
279c0 63 70 5f 6f 62 74 61 69 6e 5f 69 6e 66 6f 28 73 65 72 76 65 72 2c 20 64 69 72 2c 20 5f 5f 6e 61 cp_obtain_info(server,.dir,.__na
279e0 6d 65 2c 20 26 28 66 69 6e 66 6f 2e 69 29 29 3b 0a 09 7d 0a 09 66 69 6e 66 6f 2e 76 6f 6c 75 6d me,.&(finfo.i));..}..finfo.volum
27a00 65 20 3d 20 66 69 6e 66 6f 2e 69 2e 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 6e 63 70 5f 64 62 67 28 e.=.finfo.i.volNumber;..ncp_dbg(
27a20 32 2c 20 22 6c 6f 6f 6b 65 64 20 66 6f 72 20 25 70 64 2f 25 73 2c 20 72 65 73 3d 25 64 5c 6e 22 2,."looked.for.%pd/%s,.res=%d\n"
27a40 2c 0a 09 09 64 65 6e 74 72 79 2d 3e 64 5f 70 61 72 65 6e 74 2c 20 5f 5f 6e 61 6d 65 2c 20 72 65 ,...dentry->d_parent,.__name,.re
27a60 73 29 3b 0a 09 2f 2a 0a 09 20 2a 20 49 66 20 77 65 20 64 69 64 6e 27 74 20 66 69 6e 64 20 69 74 s);../*...*.If.we.didn't.find.it
27a80 2c 20 6f 72 20 69 66 20 69 74 20 68 61 73 20 61 20 64 69 66 66 65 72 65 6e 74 20 64 69 72 45 6e ,.or.if.it.has.a.different.dirEn
27aa0 74 4e 75 6d 20 74 6f 0a 09 20 2a 20 77 68 61 74 20 77 65 20 72 65 6d 65 6d 62 65 72 2c 20 69 74 tNum.to...*.what.we.remember,.it
27ac0 27 73 20 6e 6f 74 20 76 61 6c 69 64 20 61 6e 79 20 6d 6f 72 65 2e 0a 09 20 2a 2f 0a 09 69 66 20 's.not.valid.any.more....*/..if.
27ae0 28 21 72 65 73 29 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 (!res).{...struct.inode.*inode.=
27b00 20 64 5f 69 6e 6f 64 65 28 64 65 6e 74 72 79 29 3b 0a 0a 09 09 69 6e 6f 64 65 5f 6c 6f 63 6b 28 .d_inode(dentry);....inode_lock(
27b20 69 6e 6f 64 65 29 3b 0a 09 09 69 66 20 28 66 69 6e 66 6f 2e 69 2e 64 69 72 45 6e 74 4e 75 6d 20 inode);...if.(finfo.i.dirEntNum.
27b40 3d 3d 20 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 20 ==.NCP_FINFO(inode)->dirEntNum).
27b60 7b 0a 09 09 09 6e 63 70 5f 6e 65 77 5f 64 65 6e 74 72 79 28 64 65 6e 74 72 79 29 3b 0a 09 09 09 {....ncp_new_dentry(dentry);....
27b80 76 61 6c 3d 31 3b 0a 09 09 7d 20 65 6c 73 65 0a 09 09 09 6e 63 70 5f 64 62 67 28 32 2c 20 22 66 val=1;...}.else....ncp_dbg(2,."f
27ba0 6f 75 6e 64 2c 20 62 75 74 20 64 69 72 45 6e 74 4e 75 6d 20 63 68 61 6e 67 65 64 5c 6e 22 29 3b ound,.but.dirEntNum.changed\n");
27bc0 0a 0a 09 09 6e 63 70 5f 75 70 64 61 74 65 5f 69 6e 6f 64 65 32 28 69 6e 6f 64 65 2c 20 26 66 69 ....ncp_update_inode2(inode,.&fi
27be0 6e 66 6f 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 nfo);...inode_unlock(inode);..}.
27c00 0a 66 69 6e 69 73 68 65 64 3a 0a 09 6e 63 70 5f 64 62 67 28 32 2c 20 22 72 65 73 75 6c 74 3d 25 .finished:..ncp_dbg(2,."result=%
27c20 64 5c 6e 22 2c 20 76 61 6c 29 3b 0a 09 64 70 75 74 28 70 61 72 65 6e 74 29 3b 0a 09 72 65 74 75 d\n",.val);..dput(parent);..retu
27c40 72 6e 20 76 61 6c 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 74 69 6d 65 5f 74 20 6e 63 70 5f 6f 62 74 rn.val;.}..static.time_t.ncp_obt
27c60 61 69 6e 5f 6d 74 69 6d 65 28 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 29 ain_mtime(struct.dentry.*dentry)
27c80 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
27ca0 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
27cc0 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 73 74 72 75 erver.=.NCP_SERVER(inode);..stru
27ce0 63 74 20 6e 77 5f 69 6e 66 6f 5f 73 74 72 75 63 74 20 69 3b 0a 0a 09 69 66 20 28 21 6e 63 70 5f ct.nw_info_struct.i;...if.(!ncp_
27d00 63 6f 6e 6e 5f 76 61 6c 69 64 28 73 65 72 76 65 72 29 20 7c 7c 20 6e 63 70 5f 69 73 5f 73 65 72 conn_valid(server).||.ncp_is_ser
27d20 76 65 72 5f 72 6f 6f 74 28 69 6e 6f 64 65 29 29 0a 09 09 72 65 74 75 72 6e 20 30 3b 0a 0a 09 69 ver_root(inode))...return.0;...i
27d40 66 20 28 6e 63 70 5f 6f 62 74 61 69 6e 5f 69 6e 66 6f 28 73 65 72 76 65 72 2c 20 69 6e 6f 64 65 f.(ncp_obtain_info(server,.inode
27d60 2c 20 4e 55 4c 4c 2c 20 26 69 29 29 0a 09 09 72 65 74 75 72 6e 20 30 3b 0a 0a 09 72 65 74 75 72 ,.NULL,.&i))...return.0;...retur
27d80 6e 20 6e 63 70 5f 64 61 74 65 5f 64 6f 73 32 75 6e 69 78 28 69 2e 6d 6f 64 69 66 79 54 69 6d 65 n.ncp_date_dos2unix(i.modifyTime
27da0 2c 20 69 2e 6d 6f 64 69 66 79 44 61 74 65 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 6c 69 6e ,.i.modifyDate);.}..static.inlin
27dc0 65 20 76 6f 69 64 0a 6e 63 70 5f 69 6e 76 61 6c 69 64 61 74 65 5f 64 69 72 63 61 63 68 65 5f 65 e.void.ncp_invalidate_dircache_e
27de0 6e 74 72 69 65 73 28 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 70 61 72 65 6e 74 29 0a 7b 0a ntries(struct.dentry.*parent).{.
27e00 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 43 50 .struct.ncp_server.*server.=.NCP
27e20 5f 53 45 52 56 45 52 28 64 5f 69 6e 6f 64 65 28 70 61 72 65 6e 74 29 29 3b 0a 09 73 74 72 75 63 _SERVER(d_inode(parent));..struc
27e40 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 3b 0a 0a 09 73 70 69 6e 5f 6c 6f 63 6b 28 26 70 t.dentry.*dentry;...spin_lock(&p
27e60 61 72 65 6e 74 2d 3e 64 5f 6c 6f 63 6b 29 3b 0a 09 6c 69 73 74 5f 66 6f 72 5f 65 61 63 68 5f 65 arent->d_lock);..list_for_each_e
27e80 6e 74 72 79 28 64 65 6e 74 72 79 2c 20 26 70 61 72 65 6e 74 2d 3e 64 5f 73 75 62 64 69 72 73 2c ntry(dentry,.&parent->d_subdirs,
27ea0 20 64 5f 63 68 69 6c 64 29 20 7b 0a 09 09 64 65 6e 74 72 79 2d 3e 64 5f 66 73 64 61 74 61 20 3d .d_child).{...dentry->d_fsdata.=
27ec0 20 4e 55 4c 4c 3b 0a 09 09 6e 63 70 5f 61 67 65 5f 64 65 6e 74 72 79 28 73 65 72 76 65 72 2c 20 .NULL;...ncp_age_dentry(server,.
27ee0 64 65 6e 74 72 79 29 3b 0a 09 7d 0a 09 73 70 69 6e 5f 75 6e 6c 6f 63 6b 28 26 70 61 72 65 6e 74 dentry);..}..spin_unlock(&parent
27f00 2d 3e 64 5f 6c 6f 63 6b 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 72 65 61 ->d_lock);.}..static.int.ncp_rea
27f20 64 64 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 ddir(struct.file.*file,.struct.d
27f40 69 72 5f 63 6f 6e 74 65 78 74 20 2a 63 74 78 29 0a 7b 0a 09 73 74 72 75 63 74 20 64 65 6e 74 72 ir_context.*ctx).{..struct.dentr
27f60 79 20 2a 64 65 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 y.*dentry.=.file->f_path.dentry;
27f80 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 65 28 ..struct.inode.*inode.=.d_inode(
27fa0 64 65 6e 74 72 79 29 3b 0a 09 73 74 72 75 63 74 20 70 61 67 65 20 2a 70 61 67 65 20 3d 20 4e 55 dentry);..struct.page.*page.=.NU
27fc0 4c 4c 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 3d LL;..struct.ncp_server.*server.=
27fe0 20 4e 43 50 5f 53 45 52 56 45 52 28 69 6e 6f 64 65 29 3b 0a 09 75 6e 69 6f 6e 20 20 6e 63 70 5f .NCP_SERVER(inode);..union..ncp_
28000 64 69 72 5f 63 61 63 68 65 20 2a 63 61 63 68 65 20 3d 20 4e 55 4c 4c 3b 0a 09 73 74 72 75 63 74 dir_cache.*cache.=.NULL;..struct
28020 20 6e 63 70 5f 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c 20 63 74 6c 3b 0a 09 69 6e 74 20 72 65 73 .ncp_cache_control.ctl;..int.res
28040 75 6c 74 2c 20 6d 74 69 6d 65 5f 76 61 6c 69 64 20 3d 20 30 3b 0a 09 74 69 6d 65 5f 74 20 6d 74 ult,.mtime_valid.=.0;..time_t.mt
28060 69 6d 65 20 3d 20 30 3b 0a 0a 09 63 74 6c 2e 70 61 67 65 20 20 3d 20 4e 55 4c 4c 3b 0a 09 63 74 ime.=.0;...ctl.page..=.NULL;..ct
28080 6c 2e 63 61 63 68 65 20 3d 20 4e 55 4c 4c 3b 0a 0a 09 6e 63 70 5f 64 62 67 28 32 2c 20 22 72 65 l.cache.=.NULL;...ncp_dbg(2,."re
280a0 61 64 69 6e 67 20 25 70 44 32 2c 20 70 6f 73 3d 25 64 5c 6e 22 2c 20 66 69 6c 65 2c 20 28 69 6e ading.%pD2,.pos=%d\n",.file,.(in
280c0 74 29 63 74 78 2d 3e 70 6f 73 29 3b 0a 0a 09 72 65 73 75 6c 74 20 3d 20 2d 45 49 4f 3b 0a 09 2f t)ctx->pos);...result.=.-EIO;../
280e0 2a 20 44 6f 20 6e 6f 74 20 67 65 6e 65 72 61 74 65 20 27 2e 27 20 61 6e 64 20 27 2e 2e 27 20 77 *.Do.not.generate.'.'.and.'..'.w
28100 68 65 6e 20 73 65 72 76 65 72 20 69 73 20 64 65 61 64 2e 20 2a 2f 0a 09 69 66 20 28 21 6e 63 70 hen.server.is.dead..*/..if.(!ncp
28120 5f 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 6f 75 74 3b _conn_valid(server))...goto.out;
28140 0a 0a 09 72 65 73 75 6c 74 20 3d 20 30 3b 0a 09 69 66 20 28 21 64 69 72 5f 65 6d 69 74 5f 64 6f ...result.=.0;..if.(!dir_emit_do
28160 74 73 28 66 69 6c 65 2c 20 63 74 78 29 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 70 61 67 ts(file,.ctx))...goto.out;...pag
28180 65 20 3d 20 67 72 61 62 5f 63 61 63 68 65 5f 70 61 67 65 28 26 69 6e 6f 64 65 2d 3e 69 5f 64 61 e.=.grab_cache_page(&inode->i_da
281a0 74 61 2c 20 30 29 3b 0a 09 69 66 20 28 21 70 61 67 65 29 0a 09 09 67 6f 74 6f 20 72 65 61 64 5f ta,.0);..if.(!page)...goto.read_
281c0 72 65 61 6c 6c 79 3b 0a 0a 09 63 74 6c 2e 63 61 63 68 65 20 3d 20 63 61 63 68 65 20 3d 20 6b 6d really;...ctl.cache.=.cache.=.km
281e0 61 70 28 70 61 67 65 29 3b 0a 09 63 74 6c 2e 68 65 61 64 20 20 3d 20 63 61 63 68 65 2d 3e 68 65 ap(page);..ctl.head..=.cache->he
28200 61 64 3b 0a 0a 09 69 66 20 28 21 50 61 67 65 55 70 74 6f 64 61 74 65 28 70 61 67 65 29 20 7c 7c ad;...if.(!PageUptodate(page).||
28220 20 21 63 74 6c 2e 68 65 61 64 2e 65 6f 66 29 0a 09 09 67 6f 74 6f 20 69 6e 69 74 5f 63 61 63 68 .!ctl.head.eof)...goto.init_cach
28240 65 3b 0a 0a 09 69 66 20 28 63 74 78 2d 3e 70 6f 73 20 3d 3d 20 32 29 20 7b 0a 09 09 69 66 20 28 e;...if.(ctx->pos.==.2).{...if.(
28260 6a 69 66 66 69 65 73 20 2d 20 63 74 6c 2e 68 65 61 64 2e 74 69 6d 65 20 3e 3d 20 4e 43 50 5f 4d jiffies.-.ctl.head.time.>=.NCP_M
28280 41 58 5f 41 47 45 28 73 65 72 76 65 72 29 29 0a 09 09 09 67 6f 74 6f 20 69 6e 69 74 5f 63 61 63 AX_AGE(server))....goto.init_cac
282a0 68 65 3b 0a 0a 09 09 6d 74 69 6d 65 20 3d 20 6e 63 70 5f 6f 62 74 61 69 6e 5f 6d 74 69 6d 65 28 he;....mtime.=.ncp_obtain_mtime(
282c0 64 65 6e 74 72 79 29 3b 0a 09 09 6d 74 69 6d 65 5f 76 61 6c 69 64 20 3d 20 31 3b 0a 09 09 69 66 dentry);...mtime_valid.=.1;...if
282e0 20 28 28 21 6d 74 69 6d 65 29 20 7c 7c 20 28 6d 74 69 6d 65 20 21 3d 20 63 74 6c 2e 68 65 61 64 .((!mtime).||.(mtime.!=.ctl.head
28300 2e 6d 74 69 6d 65 29 29 0a 09 09 09 67 6f 74 6f 20 69 6e 69 74 5f 63 61 63 68 65 3b 0a 09 7d 0a .mtime))....goto.init_cache;..}.
28320 0a 09 69 66 20 28 63 74 78 2d 3e 70 6f 73 20 3e 20 63 74 6c 2e 68 65 61 64 2e 65 6e 64 29 0a 09 ..if.(ctx->pos.>.ctl.head.end)..
28340 09 67 6f 74 6f 20 66 69 6e 69 73 68 65 64 3b 0a 0a 09 63 74 6c 2e 66 70 6f 73 20 3d 20 63 74 78 .goto.finished;...ctl.fpos.=.ctx
28360 2d 3e 70 6f 73 20 2b 20 28 4e 43 50 5f 44 49 52 43 41 43 48 45 5f 53 54 41 52 54 20 2d 20 32 29 ->pos.+.(NCP_DIRCACHE_START.-.2)
28380 3b 0a 09 63 74 6c 2e 6f 66 73 20 20 3d 20 63 74 6c 2e 66 70 6f 73 20 2f 20 4e 43 50 5f 44 49 52 ;..ctl.ofs..=.ctl.fpos./.NCP_DIR
283a0 43 41 43 48 45 5f 53 49 5a 45 3b 0a 09 63 74 6c 2e 69 64 78 20 20 3d 20 63 74 6c 2e 66 70 6f 73 CACHE_SIZE;..ctl.idx..=.ctl.fpos
283c0 20 25 20 4e 43 50 5f 44 49 52 43 41 43 48 45 5f 53 49 5a 45 3b 0a 0a 09 66 6f 72 20 28 3b 3b 29 .%.NCP_DIRCACHE_SIZE;...for.(;;)
283e0 20 7b 0a 09 09 69 66 20 28 63 74 6c 2e 6f 66 73 20 21 3d 20 30 29 20 7b 0a 09 09 09 63 74 6c 2e .{...if.(ctl.ofs.!=.0).{....ctl.
28400 70 61 67 65 20 3d 20 66 69 6e 64 5f 6c 6f 63 6b 5f 70 61 67 65 28 26 69 6e 6f 64 65 2d 3e 69 5f page.=.find_lock_page(&inode->i_
28420 64 61 74 61 2c 20 63 74 6c 2e 6f 66 73 29 3b 0a 09 09 09 69 66 20 28 21 63 74 6c 2e 70 61 67 65 data,.ctl.ofs);....if.(!ctl.page
28440 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 09 63 74 6c ).....goto.invalid_cache;....ctl
28460 2e 63 61 63 68 65 20 3d 20 6b 6d 61 70 28 63 74 6c 2e 70 61 67 65 29 3b 0a 09 09 09 69 66 20 28 .cache.=.kmap(ctl.page);....if.(
28480 21 50 61 67 65 55 70 74 6f 64 61 74 65 28 63 74 6c 2e 70 61 67 65 29 29 0a 09 09 09 09 67 6f 74 !PageUptodate(ctl.page)).....got
284a0 6f 20 69 6e 76 61 6c 69 64 5f 63 61 63 68 65 3b 0a 09 09 7d 0a 09 09 77 68 69 6c 65 20 28 63 74 o.invalid_cache;...}...while.(ct
284c0 6c 2e 69 64 78 20 3c 20 4e 43 50 5f 44 49 52 43 41 43 48 45 5f 53 49 5a 45 29 20 7b 0a 09 09 09 l.idx.<.NCP_DIRCACHE_SIZE).{....
284e0 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 3b 0a 09 09 09 62 6f 6f 6c 20 6f 76 65 struct.dentry.*dent;....bool.ove
28500 72 3b 0a 0a 09 09 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 r;.....spin_lock(&dentry->d_lock
28520 29 3b 0a 09 09 09 69 66 20 28 21 28 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 64 65 29 2d 3e 66 6c );....if.(!(NCP_FINFO(inode)->fl
28540 61 67 73 20 26 20 4e 43 50 49 5f 44 49 52 5f 43 41 43 48 45 29 29 20 7b 20 0a 09 09 09 09 73 70 ags.&.NCPI_DIR_CACHE)).{......sp
28560 69 6e 5f 75 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 09 09 in_unlock(&dentry->d_lock);.....
28580 67 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 64 65 6e 74 goto.invalid_cache;....}....dent
285a0 20 3d 20 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 3b 0a 09 .=.ctl.cache->dentry[ctl.idx];..
285c0 09 09 69 66 20 28 75 6e 6c 69 6b 65 6c 79 28 21 6c 6f 63 6b 72 65 66 5f 67 65 74 5f 6e 6f 74 5f ..if.(unlikely(!lockref_get_not_
285e0 64 65 61 64 28 26 64 65 6e 74 2d 3e 64 5f 6c 6f 63 6b 72 65 66 29 29 29 20 7b 0a 09 09 09 09 73 dead(&dent->d_lockref))).{.....s
28600 70 69 6e 5f 75 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 09 pin_unlock(&dentry->d_lock);....
28620 09 67 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 73 70 69 .goto.invalid_cache;....}....spi
28640 6e 5f 75 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 09 69 66 n_unlock(&dentry->d_lock);....if
28660 20 28 64 5f 72 65 61 6c 6c 79 5f 69 73 5f 6e 65 67 61 74 69 76 65 28 64 65 6e 74 29 29 20 7b 0a .(d_really_is_negative(dent)).{.
28680 09 09 09 09 64 70 75 74 28 64 65 6e 74 29 3b 0a 09 09 09 09 67 6f 74 6f 20 69 6e 76 61 6c 69 64 ....dput(dent);.....goto.invalid
286a0 5f 63 61 63 68 65 3b 0a 09 09 09 7d 0a 09 09 09 6f 76 65 72 20 3d 20 21 64 69 72 5f 65 6d 69 74 _cache;....}....over.=.!dir_emit
286c0 28 63 74 78 2c 20 64 65 6e 74 2d 3e 64 5f 6e 61 6d 65 2e 6e 61 6d 65 2c 0a 09 09 09 09 09 64 65 (ctx,.dent->d_name.name,......de
286e0 6e 74 2d 3e 64 5f 6e 61 6d 65 2e 6c 65 6e 2c 0a 09 09 09 09 09 64 5f 69 6e 6f 64 65 28 64 65 6e nt->d_name.len,......d_inode(den
28700 74 29 2d 3e 69 5f 69 6e 6f 2c 20 44 54 5f 55 4e 4b 4e 4f 57 4e 29 3b 0a 09 09 09 64 70 75 74 28 t)->i_ino,.DT_UNKNOWN);....dput(
28720 64 65 6e 74 29 3b 0a 09 09 09 69 66 20 28 6f 76 65 72 29 0a 09 09 09 09 67 6f 74 6f 20 66 69 6e dent);....if.(over).....goto.fin
28740 69 73 68 65 64 3b 0a 09 09 09 63 74 78 2d 3e 70 6f 73 20 2b 3d 20 31 3b 0a 09 09 09 63 74 6c 2e ished;....ctx->pos.+=.1;....ctl.
28760 69 64 78 20 2b 3d 20 31 3b 0a 09 09 09 69 66 20 28 63 74 78 2d 3e 70 6f 73 20 3e 20 63 74 6c 2e idx.+=.1;....if.(ctx->pos.>.ctl.
28780 68 65 61 64 2e 65 6e 64 29 0a 09 09 09 09 67 6f 74 6f 20 66 69 6e 69 73 68 65 64 3b 0a 09 09 7d head.end).....goto.finished;...}
287a0 0a 09 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 ...if.(ctl.page).{....kunmap(ctl
287c0 2e 70 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 .page);....SetPageUptodate(ctl.p
287e0 61 67 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 age);....unlock_page(ctl.page);.
28800 09 09 09 70 75 74 5f 70 61 67 65 28 63 74 6c 2e 70 61 67 65 29 3b 0a 09 09 09 63 74 6c 2e 70 61 ...put_page(ctl.page);....ctl.pa
28820 67 65 20 3d 20 4e 55 4c 4c 3b 0a 09 09 7d 0a 09 09 63 74 6c 2e 69 64 78 20 20 3d 20 30 3b 0a 09 ge.=.NULL;...}...ctl.idx..=.0;..
28840 09 63 74 6c 2e 6f 66 73 20 2b 3d 20 31 3b 0a 09 7d 0a 69 6e 76 61 6c 69 64 5f 63 61 63 68 65 3a .ctl.ofs.+=.1;..}.invalid_cache:
28860 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 63 74 6c 2e 70 ..if.(ctl.page).{...kunmap(ctl.p
28880 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 0a 09 age);...unlock_page(ctl.page);..
288a0 09 70 75 74 5f 70 61 67 65 28 63 74 6c 2e 70 61 67 65 29 3b 0a 09 09 63 74 6c 2e 70 61 67 65 20 .put_page(ctl.page);...ctl.page.
288c0 3d 20 4e 55 4c 4c 3b 0a 09 7d 0a 09 63 74 6c 2e 63 61 63 68 65 20 3d 20 63 61 63 68 65 3b 0a 69 =.NULL;..}..ctl.cache.=.cache;.i
288e0 6e 69 74 5f 63 61 63 68 65 3a 0a 09 6e 63 70 5f 69 6e 76 61 6c 69 64 61 74 65 5f 64 69 72 63 61 nit_cache:..ncp_invalidate_dirca
28900 63 68 65 5f 65 6e 74 72 69 65 73 28 64 65 6e 74 72 79 29 3b 0a 09 69 66 20 28 21 6d 74 69 6d 65 che_entries(dentry);..if.(!mtime
28920 5f 76 61 6c 69 64 29 20 7b 0a 09 09 6d 74 69 6d 65 20 3d 20 6e 63 70 5f 6f 62 74 61 69 6e 5f 6d _valid).{...mtime.=.ncp_obtain_m
28940 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 64 20 3d 20 31 3b time(dentry);...mtime_valid.=.1;
28960 0a 09 7d 0a 09 63 74 6c 2e 68 65 61 64 2e 6d 74 69 6d 65 20 3d 20 6d 74 69 6d 65 3b 0a 09 63 74 ..}..ctl.head.mtime.=.mtime;..ct
28980 6c 2e 68 65 61 64 2e 74 69 6d 65 20 3d 20 6a 69 66 66 69 65 73 3b 0a 09 63 74 6c 2e 68 65 61 64 l.head.time.=.jiffies;..ctl.head
289a0 2e 65 6f 66 20 3d 20 30 3b 0a 09 63 74 6c 2e 66 70 6f 73 20 3d 20 32 3b 0a 09 63 74 6c 2e 6f 66 .eof.=.0;..ctl.fpos.=.2;..ctl.of
289c0 73 20 3d 20 30 3b 0a 09 63 74 6c 2e 69 64 78 20 3d 20 4e 43 50 5f 44 49 52 43 41 43 48 45 5f 53 s.=.0;..ctl.idx.=.NCP_DIRCACHE_S
289e0 54 41 52 54 3b 0a 09 63 74 6c 2e 66 69 6c 6c 65 64 20 3d 20 30 3b 0a 09 63 74 6c 2e 76 61 6c 69 TART;..ctl.filled.=.0;..ctl.vali
28a00 64 20 20 3d 20 31 3b 0a 72 65 61 64 5f 72 65 61 6c 6c 79 3a 0a 09 73 70 69 6e 5f 6c 6f 63 6b 28 d..=.1;.read_really:..spin_lock(
28a20 26 64 65 6e 74 72 79 2d 3e 64 5f 6c 6f 63 6b 29 3b 0a 09 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f &dentry->d_lock);..NCP_FINFO(ino
28a40 64 65 29 2d 3e 66 6c 61 67 73 20 7c 3d 20 4e 43 50 49 5f 44 49 52 5f 43 41 43 48 45 3b 0a 09 73 de)->flags.|=.NCPI_DIR_CACHE;..s
28a60 70 69 6e 5f 75 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 69 66 pin_unlock(&dentry->d_lock);..if
28a80 20 28 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 20 7b 0a 09 .(ncp_is_server_root(inode)).{..
28aa0 09 6e 63 70 5f 72 65 61 64 5f 76 6f 6c 75 6d 65 5f 6c 69 73 74 28 66 69 6c 65 2c 20 63 74 78 2c .ncp_read_volume_list(file,.ctx,
28ac0 20 26 63 74 6c 29 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 6e 63 70 5f 64 6f 5f 72 65 61 64 64 .&ctl);..}.else.{...ncp_do_readd
28ae0 69 72 28 66 69 6c 65 2c 20 63 74 78 2c 20 26 63 74 6c 29 3b 0a 09 7d 0a 09 63 74 6c 2e 68 65 61 ir(file,.ctx,.&ctl);..}..ctl.hea
28b00 64 2e 65 6e 64 20 3d 20 63 74 6c 2e 66 70 6f 73 20 2d 20 31 3b 0a 09 63 74 6c 2e 68 65 61 64 2e d.end.=.ctl.fpos.-.1;..ctl.head.
28b20 65 6f 66 20 3d 20 63 74 6c 2e 76 61 6c 69 64 3b 0a 66 69 6e 69 73 68 65 64 3a 0a 09 69 66 20 28 eof.=.ctl.valid;.finished:..if.(
28b40 63 74 6c 2e 70 61 67 65 29 20 7b 0a 09 09 6b 75 6e 6d 61 70 28 63 74 6c 2e 70 61 67 65 29 3b 0a ctl.page).{...kunmap(ctl.page);.
28b60 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 65 29 3b 0a 09 09 75 ..SetPageUptodate(ctl.page);...u
28b80 6e 6c 6f 63 6b 5f 70 61 67 65 28 63 74 6c 2e 70 61 67 65 29 3b 0a 09 09 70 75 74 5f 70 61 67 65 nlock_page(ctl.page);...put_page
28ba0 28 63 74 6c 2e 70 61 67 65 29 3b 0a 09 7d 0a 09 69 66 20 28 70 61 67 65 29 20 7b 0a 09 09 63 61 (ctl.page);..}..if.(page).{...ca
28bc0 63 68 65 2d 3e 68 65 61 64 20 3d 20 63 74 6c 2e 68 65 61 64 3b 0a 09 09 6b 75 6e 6d 61 70 28 70 che->head.=.ctl.head;...kunmap(p
28be0 61 67 65 29 3b 0a 09 09 53 65 74 50 61 67 65 55 70 74 6f 64 61 74 65 28 70 61 67 65 29 3b 0a 09 age);...SetPageUptodate(page);..
28c00 09 75 6e 6c 6f 63 6b 5f 70 61 67 65 28 70 61 67 65 29 3b 0a 09 09 70 75 74 5f 70 61 67 65 28 70 .unlock_page(page);...put_page(p
28c20 61 67 65 29 3b 0a 09 7d 0a 6f 75 74 3a 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a age);..}.out:..return.result;.}.
28c40 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.
28c60 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 29 0a 7b 0a 09 69 66 20 28 21 64 65 6e 74 72 79 2d 3e dentry.*dentry).{..if.(!dentry->
28c80 64 5f 66 73 64 61 74 61 29 09 2f 2a 20 6e 6f 74 20 72 65 66 65 72 65 6e 63 65 64 20 66 72 6f 6d d_fsdata)./*.not.referenced.from
28ca0 20 70 61 67 65 20 63 61 63 68 65 20 2a 2f 0a 09 09 72 65 74 75 72 6e 3b 0a 09 4e 43 50 5f 46 49 .page.cache.*/...return;..NCP_FI
28cc0 4e 46 4f 28 64 5f 69 6e 6f 64 65 28 64 65 6e 74 72 79 2d 3e 64 5f 70 61 72 65 6e 74 29 29 2d 3e NFO(d_inode(dentry->d_parent))->
28ce0 66 6c 61 67 73 20 26 3d 20 7e 4e 43 50 49 5f 44 49 52 5f 43 41 43 48 45 3b 0a 7d 0a 0a 73 74 61 flags.&=.~NCPI_DIR_CACHE;.}..sta
28d00 74 69 63 20 69 6e 74 0a 6e 63 70 5f 66 69 6c 6c 5f 63 61 63 68 65 28 73 74 72 75 63 74 20 66 69 tic.int.ncp_fill_cache(struct.fi
28d20 6c 65 20 2a 66 69 6c 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 le.*file,.struct.dir_context.*ct
28d40 78 2c 0a 09 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 2a 63 x,...struct.ncp_cache_control.*c
28d60 74 72 6c 2c 20 73 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 2a 65 6e 74 72 trl,.struct.ncp_entry_info.*entr
28d80 79 2c 0a 09 09 69 6e 74 20 69 6e 76 61 6c 5f 63 68 69 6c 64 73 29 0a 7b 0a 09 73 74 72 75 63 74 y,...int.inval_childs).{..struct
28da0 20 64 65 6e 74 72 79 20 2a 6e 65 77 64 65 6e 74 2c 20 2a 64 65 6e 74 72 79 20 3d 20 66 69 6c 65 .dentry.*newdent,.*dentry.=.file
28dc0 2d 3e 66 5f 70 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 ->f_path.dentry;..struct.inode.*
28de0 64 69 72 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 dir.=.d_inode(dentry);..struct.n
28e00 63 70 5f 63 61 63 68 65 5f 63 6f 6e 74 72 6f 6c 20 63 74 6c 20 3d 20 2a 63 74 72 6c 3b 0a 09 73 cp_cache_control.ctl.=.*ctrl;..s
28e20 74 72 75 63 74 20 71 73 74 72 20 71 6e 61 6d 65 3b 0a 09 69 6e 74 20 76 61 6c 69 64 20 3d 20 30 truct.qstr.qname;..int.valid.=.0
28e40 3b 0a 09 69 6e 74 20 68 61 73 68 65 64 20 3d 20 30 3b 0a 09 69 6e 6f 5f 74 20 69 6e 6f 20 3d 20 ;..int.hashed.=.0;..ino_t.ino.=.
28e60 30 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 2b 0;..__u8.__name[NCP_MAXPATHLEN.+
28e80 20 31 5d 3b 0a 0a 09 71 6e 61 6d 65 2e 6c 65 6e 20 3d 20 73 69 7a 65 6f 66 28 5f 5f 6e 61 6d 65 .1];...qname.len.=.sizeof(__name
28ea0 29 3b 0a 09 69 66 20 28 6e 63 70 5f 76 6f 6c 32 69 6f 28 4e 43 50 5f 53 45 52 56 45 52 28 64 69 );..if.(ncp_vol2io(NCP_SERVER(di
28ec0 72 29 2c 20 5f 5f 6e 61 6d 65 2c 20 26 71 6e 61 6d 65 2e 6c 65 6e 2c 0a 09 09 09 65 6e 74 72 79 r),.__name,.&qname.len,....entry
28ee0 2d 3e 69 2e 65 6e 74 72 79 4e 61 6d 65 2c 20 65 6e 74 72 79 2d 3e 69 2e 6e 61 6d 65 4c 65 6e 2c ->i.entryName,.entry->i.nameLen,
28f00 0a 09 09 09 21 6e 63 70 5f 70 72 65 73 65 72 76 65 5f 65 6e 74 72 79 5f 63 61 73 65 28 64 69 72 ....!ncp_preserve_entry_case(dir
28f20 2c 20 65 6e 74 72 79 2d 3e 69 2e 4e 53 43 72 65 61 74 6f 72 29 29 29 0a 09 09 72 65 74 75 72 6e ,.entry->i.NSCreator)))...return
28f40 20 31 3b 20 2f 2a 20 49 27 6d 20 6e 6f 74 20 73 75 72 65 20 2a 2f 0a 0a 09 71 6e 61 6d 65 2e 6e .1;./*.I'm.not.sure.*/...qname.n
28f60 61 6d 65 20 3d 20 5f 5f 6e 61 6d 65 3b 0a 0a 09 6e 65 77 64 65 6e 74 20 3d 20 64 5f 68 61 73 68 ame.=.__name;...newdent.=.d_hash
28f80 5f 61 6e 64 5f 6c 6f 6f 6b 75 70 28 64 65 6e 74 72 79 2c 20 26 71 6e 61 6d 65 29 3b 0a 09 69 66 _and_lookup(dentry,.&qname);..if
28fa0 20 28 49 53 5f 45 52 52 28 6e 65 77 64 65 6e 74 29 29 0a 09 09 67 6f 74 6f 20 65 6e 64 5f 61 64 .(IS_ERR(newdent))...goto.end_ad
28fc0 76 61 6e 63 65 3b 0a 09 69 66 20 28 21 6e 65 77 64 65 6e 74 29 20 7b 0a 09 09 6e 65 77 64 65 6e vance;..if.(!newdent).{...newden
28fe0 74 20 3d 20 64 5f 61 6c 6c 6f 63 28 64 65 6e 74 72 79 2c 20 26 71 6e 61 6d 65 29 3b 0a 09 09 69 t.=.d_alloc(dentry,.&qname);...i
29000 66 20 28 21 6e 65 77 64 65 6e 74 29 0a 09 09 09 67 6f 74 6f 20 65 6e 64 5f 61 64 76 61 6e 63 65 f.(!newdent)....goto.end_advance
29020 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 68 61 73 68 65 64 20 3d 20 31 3b 0a 0a 09 09 2f 2a 20 ;..}.else.{...hashed.=.1;..../*.
29040 49 66 20 63 61 73 65 20 73 65 6e 73 69 74 69 76 69 74 79 20 63 68 61 6e 67 65 64 20 66 6f 72 20 If.case.sensitivity.changed.for.
29060 74 68 69 73 20 76 6f 6c 75 6d 65 2c 20 61 6c 6c 20 65 6e 74 72 69 65 73 20 62 65 6c 6f 77 20 74 this.volume,.all.entries.below.t
29080 68 69 73 20 6f 6e 65 0a 09 09 20 20 20 73 68 6f 75 6c 64 20 62 65 20 74 68 72 6f 77 6e 20 61 77 his.one......should.be.thrown.aw
290a0 61 79 2e 20 20 54 68 69 73 20 65 6e 74 72 79 20 69 74 73 65 6c 66 20 69 73 20 6e 6f 74 20 61 66 ay...This.entry.itself.is.not.af
290c0 66 65 63 74 65 64 2c 20 61 73 20 69 74 73 20 63 61 73 65 0a 09 09 20 20 20 73 65 6e 73 69 74 69 fected,.as.its.case......sensiti
290e0 76 69 74 79 20 69 73 20 63 6f 6e 74 72 6f 6c 6c 65 64 20 62 79 20 69 74 73 20 6f 77 6e 20 70 61 vity.is.controlled.by.its.own.pa
29100 72 65 6e 74 2e 20 2a 2f 0a 09 09 69 66 20 28 69 6e 76 61 6c 5f 63 68 69 6c 64 73 29 0a 09 09 09 rent..*/...if.(inval_childs)....
29120 73 68 72 69 6e 6b 5f 64 63 61 63 68 65 5f 70 61 72 65 6e 74 28 6e 65 77 64 65 6e 74 29 3b 0a 0a shrink_dcache_parent(newdent);..
29140 09 09 2f 2a 0a 09 09 20 2a 20 4e 65 74 57 61 72 65 27 73 20 4f 53 32 20 6e 61 6d 65 73 70 61 63 ../*....*.NetWare's.OS2.namespac
29160 65 20 69 73 20 63 61 73 65 20 70 72 65 73 65 72 76 69 6e 67 20 79 65 74 20 63 61 73 65 0a 09 09 e.is.case.preserving.yet.case...
29180 20 2a 20 69 6e 73 65 6e 73 69 74 69 76 65 2e 20 20 53 6f 20 77 65 20 75 70 64 61 74 65 20 64 65 .*.insensitive...So.we.update.de
291a0 6e 74 72 79 27 73 20 6e 61 6d 65 20 61 73 20 72 65 63 65 69 76 65 64 20 66 72 6f 6d 0a 09 09 20 ntry's.name.as.received.from....
291c0 2a 20 73 65 72 76 65 72 2e 20 50 61 72 65 6e 74 20 64 69 72 27 73 20 69 5f 6d 75 74 65 78 20 69 *.server..Parent.dir's.i_mutex.i
291e0 73 20 6c 6f 63 6b 65 64 20 62 65 63 61 75 73 65 20 77 65 27 72 65 20 69 6e 0a 09 09 20 2a 20 72 s.locked.because.we're.in....*.r
29200 65 61 64 64 69 72 2e 0a 09 09 20 2a 2f 0a 09 09 64 65 6e 74 72 79 5f 75 70 64 61 74 65 5f 6e 61 eaddir.....*/...dentry_update_na
29220 6d 65 5f 63 61 73 65 28 6e 65 77 64 65 6e 74 2c 20 26 71 6e 61 6d 65 29 3b 0a 09 7d 0a 0a 09 69 me_case(newdent,.&qname);..}...i
29240 66 20 28 64 5f 72 65 61 6c 6c 79 5f 69 73 5f 6e 65 67 61 74 69 76 65 28 6e 65 77 64 65 6e 74 29 f.(d_really_is_negative(newdent)
29260 29 20 7b 0a 09 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 3b 0a 0a 09 09 65 6e ).{...struct.inode.*inode;....en
29280 74 72 79 2d 3e 6f 70 65 6e 65 64 20 3d 20 30 3b 0a 09 09 65 6e 74 72 79 2d 3e 69 6e 6f 20 3d 20 try->opened.=.0;...entry->ino.=.
292a0 69 75 6e 69 71 75 65 28 64 69 72 2d 3e 69 5f 73 62 2c 20 32 29 3b 0a 09 09 69 6e 6f 64 65 20 3d iunique(dir->i_sb,.2);...inode.=
292c0 20 6e 63 70 5f 69 67 65 74 28 64 69 72 2d 3e 69 5f 73 62 2c 20 65 6e 74 72 79 29 3b 0a 09 09 69 .ncp_iget(dir->i_sb,.entry);...i
292e0 66 20 28 69 6e 6f 64 65 29 20 7b 0a 09 09 09 64 5f 69 6e 73 74 61 6e 74 69 61 74 65 28 6e 65 77 f.(inode).{....d_instantiate(new
29300 64 65 6e 74 2c 20 69 6e 6f 64 65 29 3b 0a 09 09 09 69 66 20 28 21 68 61 73 68 65 64 29 0a 09 09 dent,.inode);....if.(!hashed)...
29320 09 09 64 5f 72 65 68 61 73 68 28 6e 65 77 64 65 6e 74 29 3b 0a 09 09 7d 20 65 6c 73 65 20 7b 0a ..d_rehash(newdent);...}.else.{.
29340 09 09 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 ...spin_lock(&dentry->d_lock);..
29360 09 09 4e 43 50 5f 46 49 4e 46 4f 28 64 69 72 29 2d 3e 66 6c 61 67 73 20 26 3d 20 7e 4e 43 50 49 ..NCP_FINFO(dir)->flags.&=.~NCPI
29380 5f 44 49 52 5f 43 41 43 48 45 3b 0a 09 09 09 73 70 69 6e 5f 75 6e 6c 6f 63 6b 28 26 64 65 6e 74 _DIR_CACHE;....spin_unlock(&dent
293a0 72 79 2d 3e 64 5f 6c 6f 63 6b 29 3b 0a 09 09 7d 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 73 74 72 ry->d_lock);...}..}.else.{...str
293c0 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 65 28 6e 65 77 64 65 uct.inode.*inode.=.d_inode(newde
293e0 6e 74 29 3b 0a 0a 09 09 69 6e 6f 64 65 5f 6c 6f 63 6b 5f 6e 65 73 74 65 64 28 69 6e 6f 64 65 2c nt);....inode_lock_nested(inode,
29400 20 49 5f 4d 55 54 45 58 5f 43 48 49 4c 44 29 3b 0a 09 09 6e 63 70 5f 75 70 64 61 74 65 5f 69 6e .I_MUTEX_CHILD);...ncp_update_in
29420 6f 64 65 32 28 69 6e 6f 64 65 2c 20 65 6e 74 72 79 29 3b 0a 09 09 69 6e 6f 64 65 5f 75 6e 6c 6f ode2(inode,.entry);...inode_unlo
29440 63 6b 28 69 6e 6f 64 65 29 3b 0a 09 7d 0a 0a 09 69 66 20 28 63 74 6c 2e 69 64 78 20 3e 3d 20 4e ck(inode);..}...if.(ctl.idx.>=.N
29460 43 50 5f 44 49 52 43 41 43 48 45 5f 53 49 5a 45 29 20 7b 0a 09 09 69 66 20 28 63 74 6c 2e 70 61 CP_DIRCACHE_SIZE).{...if.(ctl.pa
29480 67 65 29 20 7b 0a 09 09 09 6b 75 6e 6d 61 70 28 63 74 6c 2e 70 61 67 65 29 3b 0a 09 09 09 53 65 ge).{....kunmap(ctl.page);....Se
294a0 74 50 61 67 65 55 70 74 6f 64 61 74 65 28 63 74 6c 2e 70 61 67 65 29 3b 0a 09 09 09 75 6e 6c 6f tPageUptodate(ctl.page);....unlo
294c0 63 6b 5f 70 61 67 65 28 63 74 6c 2e 70 61 67 65 29 3b 0a 09 09 09 70 75 74 5f 70 61 67 65 28 63 ck_page(ctl.page);....put_page(c
294e0 74 6c 2e 70 61 67 65 29 3b 0a 09 09 7d 0a 09 09 63 74 6c 2e 63 61 63 68 65 20 3d 20 4e 55 4c 4c tl.page);...}...ctl.cache.=.NULL
29500 3b 0a 09 09 63 74 6c 2e 69 64 78 20 20 2d 3d 20 4e 43 50 5f 44 49 52 43 41 43 48 45 5f 53 49 5a ;...ctl.idx..-=.NCP_DIRCACHE_SIZ
29520 45 3b 0a 09 09 63 74 6c 2e 6f 66 73 20 20 2b 3d 20 31 3b 0a 09 09 63 74 6c 2e 70 61 67 65 20 20 E;...ctl.ofs..+=.1;...ctl.page..
29540 3d 20 67 72 61 62 5f 63 61 63 68 65 5f 70 61 67 65 28 26 64 69 72 2d 3e 69 5f 64 61 74 61 2c 20 =.grab_cache_page(&dir->i_data,.
29560 63 74 6c 2e 6f 66 73 29 3b 0a 09 09 69 66 20 28 63 74 6c 2e 70 61 67 65 29 0a 09 09 09 63 74 6c ctl.ofs);...if.(ctl.page)....ctl
29580 2e 63 61 63 68 65 20 3d 20 6b 6d 61 70 28 63 74 6c 2e 70 61 67 65 29 3b 0a 09 7d 0a 09 69 66 20 .cache.=.kmap(ctl.page);..}..if.
295a0 28 63 74 6c 2e 63 61 63 68 65 29 20 7b 0a 09 09 69 66 20 28 64 5f 72 65 61 6c 6c 79 5f 69 73 5f (ctl.cache).{...if.(d_really_is_
295c0 70 6f 73 69 74 69 76 65 28 6e 65 77 64 65 6e 74 29 29 20 7b 0a 09 09 09 6e 65 77 64 65 6e 74 2d positive(newdent)).{....newdent-
295e0 3e 64 5f 66 73 64 61 74 61 20 3d 20 6e 65 77 64 65 6e 74 3b 0a 09 09 09 63 74 6c 2e 63 61 63 68 >d_fsdata.=.newdent;....ctl.cach
29600 65 2d 3e 64 65 6e 74 72 79 5b 63 74 6c 2e 69 64 78 5d 20 3d 20 6e 65 77 64 65 6e 74 3b 0a 09 09 e->dentry[ctl.idx].=.newdent;...
29620 09 69 6e 6f 20 3d 20 64 5f 69 6e 6f 64 65 28 6e 65 77 64 65 6e 74 29 2d 3e 69 5f 69 6e 6f 3b 0a .ino.=.d_inode(newdent)->i_ino;.
29640 09 09 09 6e 63 70 5f 6e 65 77 5f 64 65 6e 74 72 79 28 6e 65 77 64 65 6e 74 29 3b 0a 09 09 7d 0a ...ncp_new_dentry(newdent);...}.
29660 20 09 09 76 61 6c 69 64 20 3d 20 31 3b 0a 09 7d 0a 09 64 70 75 74 28 6e 65 77 64 65 6e 74 29 3b ...valid.=.1;..}..dput(newdent);
29680 0a 65 6e 64 5f 61 64 76 61 6e 63 65 3a 0a 09 69 66 20 28 21 76 61 6c 69 64 29 0a 09 09 63 74 6c .end_advance:..if.(!valid)...ctl
296a0 2e 76 61 6c 69 64 20 3d 20 30 3b 0a 09 69 66 20 28 21 63 74 6c 2e 66 69 6c 6c 65 64 20 26 26 20 .valid.=.0;..if.(!ctl.filled.&&.
296c0 28 63 74 6c 2e 66 70 6f 73 20 3d 3d 20 63 74 78 2d 3e 70 6f 73 29 29 20 7b 0a 09 09 69 66 20 28 (ctl.fpos.==.ctx->pos)).{...if.(
296e0 21 69 6e 6f 29 0a 09 09 09 69 6e 6f 20 3d 20 69 75 6e 69 71 75 65 28 64 69 72 2d 3e 69 5f 73 62 !ino)....ino.=.iunique(dir->i_sb
29700 2c 20 32 29 3b 0a 09 09 63 74 6c 2e 66 69 6c 6c 65 64 20 3d 20 21 64 69 72 5f 65 6d 69 74 28 63 ,.2);...ctl.filled.=.!dir_emit(c
29720 74 78 2c 20 71 6e 61 6d 65 2e 6e 61 6d 65 2c 20 71 6e 61 6d 65 2e 6c 65 6e 2c 0a 09 09 09 09 20 tx,.qname.name,.qname.len,......
29740 20 20 20 20 69 6e 6f 2c 20 44 54 5f 55 4e 4b 4e 4f 57 4e 29 3b 0a 09 09 69 66 20 28 21 63 74 6c ....ino,.DT_UNKNOWN);...if.(!ctl
29760 2e 66 69 6c 6c 65 64 29 0a 09 09 09 63 74 78 2d 3e 70 6f 73 20 2b 3d 20 31 3b 0a 09 7d 0a 09 63 .filled)....ctx->pos.+=.1;..}..c
29780 74 6c 2e 66 70 6f 73 20 2b 3d 20 31 3b 0a 09 63 74 6c 2e 69 64 78 20 20 2b 3d 20 31 3b 0a 09 2a tl.fpos.+=.1;..ctl.idx..+=.1;..*
297a0 63 74 72 6c 20 3d 20 63 74 6c 3b 0a 09 72 65 74 75 72 6e 20 28 63 74 6c 2e 76 61 6c 69 64 20 7c ctrl.=.ctl;..return.(ctl.valid.|
297c0 7c 20 21 63 74 6c 2e 66 69 6c 6c 65 64 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 0a 6e |.!ctl.filled);.}..static.void.n
297e0 63 70 5f 72 65 61 64 5f 76 6f 6c 75 6d 65 5f 6c 69 73 74 28 73 74 72 75 63 74 20 66 69 6c 65 20 cp_read_volume_list(struct.file.
29800 2a 66 69 6c 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 2c 0a *file,.struct.dir_context.*ctx,.
29820 09 09 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 2a 63 74 6c ...struct.ncp_cache_control.*ctl
29840 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 66 69 6c 65 5f ).{..struct.inode.*inode.=.file_
29860 69 6e 6f 64 65 28 66 69 6c 65 29 3b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 20 inode(file);..struct.ncp_server.
29880 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 73 74 *server.=.NCP_SERVER(inode);..st
298a0 72 75 63 74 20 6e 63 70 5f 76 6f 6c 75 6d 65 5f 69 6e 66 6f 20 69 6e 66 6f 3b 0a 09 73 74 72 75 ruct.ncp_volume_info.info;..stru
298c0 63 74 20 6e 63 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 65 6e 74 72 79 3b 0a 09 69 6e 74 20 69 3b ct.ncp_entry_info.entry;..int.i;
298e0 0a 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 70 6f 73 3d 25 6c 64 5c 6e 22 2c 20 28 75 6e 73 69 ...ncp_dbg(1,."pos=%ld\n",.(unsi
29900 67 6e 65 64 20 6c 6f 6e 67 29 63 74 78 2d 3e 70 6f 73 29 3b 0a 0a 09 66 6f 72 20 28 69 20 3d 20 gned.long)ctx->pos);...for.(i.=.
29920 30 3b 20 69 20 3c 20 4e 43 50 5f 4e 55 4d 42 45 52 5f 4f 46 5f 56 4f 4c 55 4d 45 53 3b 20 69 2b 0;.i.<.NCP_NUMBER_OF_VOLUMES;.i+
29940 2b 29 20 7b 0a 09 09 69 6e 74 20 69 6e 76 61 6c 5f 64 65 6e 74 72 79 3b 0a 0a 09 09 69 66 20 28 +).{...int.inval_dentry;....if.(
29960 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 65 72 28 ncp_get_volume_info_with_number(
29980 73 65 72 76 65 72 2c 20 69 2c 20 26 69 6e 66 6f 29 20 21 3d 20 30 29 0a 09 09 09 72 65 74 75 72 server,.i,.&info).!=.0)....retur
299a0 6e 3b 0a 09 09 69 66 20 28 21 73 74 72 6c 65 6e 28 69 6e 66 6f 2e 76 6f 6c 75 6d 65 5f 6e 61 6d n;...if.(!strlen(info.volume_nam
299c0 65 29 29 0a 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 e))....continue;....ncp_dbg(1,."
299e0 66 6f 75 6e 64 20 76 6f 6c 3a 20 25 73 5c 6e 22 2c 20 69 6e 66 6f 2e 76 6f 6c 75 6d 65 5f 6e 61 found.vol:.%s\n",.info.volume_na
29a00 6d 65 29 3b 0a 0a 09 09 69 66 20 28 6e 63 70 5f 6c 6f 6f 6b 75 70 5f 76 6f 6c 75 6d 65 28 73 65 me);....if.(ncp_lookup_volume(se
29a20 72 76 65 72 2c 20 69 6e 66 6f 2e 76 6f 6c 75 6d 65 5f 6e 61 6d 65 2c 0a 09 09 09 09 09 26 65 6e rver,.info.volume_name,......&en
29a40 74 72 79 2e 69 29 29 20 7b 0a 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 63 6f 75 6c 64 20 6e try.i)).{....ncp_dbg(1,."could.n
29a60 6f 74 20 6c 6f 6f 6b 75 70 20 76 6f 6c 20 25 73 5c 6e 22 2c 0a 09 09 09 09 69 6e 66 6f 2e 76 6f ot.lookup.vol.%s\n",.....info.vo
29a80 6c 75 6d 65 5f 6e 61 6d 65 29 3b 0a 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 7d 0a 09 09 69 lume_name);....continue;...}...i
29aa0 6e 76 61 6c 5f 64 65 6e 74 72 79 20 3d 20 6e 63 70 5f 75 70 64 61 74 65 5f 6b 6e 6f 77 6e 5f 6e nval_dentry.=.ncp_update_known_n
29ac0 61 6d 65 73 70 61 63 65 28 73 65 72 76 65 72 2c 20 65 6e 74 72 79 2e 69 2e 76 6f 6c 4e 75 6d 62 amespace(server,.entry.i.volNumb
29ae0 65 72 2c 20 4e 55 4c 4c 29 3b 0a 09 09 65 6e 74 72 79 2e 76 6f 6c 75 6d 65 20 3d 20 65 6e 74 72 er,.NULL);...entry.volume.=.entr
29b00 79 2e 69 2e 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 09 69 66 20 28 21 6e 63 70 5f 66 69 6c 6c 5f 63 y.i.volNumber;...if.(!ncp_fill_c
29b20 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 72 79 2c 20 69 6e 76 ache(file,.ctx,.ctl,.&entry,.inv
29b40 61 6c 5f 64 65 6e 74 72 79 29 29 0a 09 09 09 72 65 74 75 72 6e 3b 0a 09 7d 0a 7d 0a 0a 73 74 61 al_dentry))....return;..}.}..sta
29b60 74 69 63 20 76 6f 69 64 0a 6e 63 70 5f 64 6f 5f 72 65 61 64 64 69 72 28 73 74 72 75 63 74 20 66 tic.void.ncp_do_readdir(struct.f
29b80 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 74 65 78 74 20 2a 63 ile.*file,.struct.dir_context.*c
29ba0 74 78 2c 0a 09 09 09 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f 63 61 63 68 65 5f 63 6f 6e 74 72 tx,.......struct.ncp_cache_contr
29bc0 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 64 69 72 20 3d 20 ol.*ctl).{..struct.inode.*dir.=.
29be0 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 6e 63 70 5f 73 65 file_inode(file);..struct.ncp_se
29c00 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 64 69 72 29 3b 0a rver.*server.=.NCP_SERVER(dir);.
29c20 09 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 20 73 65 71 3b 0a .struct.nw_search_sequence.seq;.
29c40 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 72 79 3b 0a 09 69 .struct.ncp_entry_info.entry;..i
29c60 6e 74 20 65 72 72 3b 0a 09 76 6f 69 64 2a 20 62 75 66 3b 0a 09 69 6e 74 20 6d 6f 72 65 3b 0a 09 nt.err;..void*.buf;..int.more;..
29c80 73 69 7a 65 5f 74 20 62 75 66 73 69 7a 65 3b 0a 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 25 70 size_t.bufsize;...ncp_dbg(1,."%p
29ca0 44 32 2c 20 66 70 6f 73 3d 25 6c 64 5c 6e 22 2c 20 66 69 6c 65 2c 20 28 75 6e 73 69 67 6e 65 64 D2,.fpos=%ld\n",.file,.(unsigned
29cc0 20 6c 6f 6e 67 29 63 74 78 2d 3e 70 6f 73 29 3b 0a 09 6e 63 70 5f 76 64 62 67 28 22 69 6e 69 74 .long)ctx->pos);..ncp_vdbg("init
29ce0 20 25 70 44 2c 20 76 6f 6c 6e 75 6d 3d 25 64 2c 20 64 69 72 65 6e 74 3d 25 75 5c 6e 22 2c 0a 09 .%pD,.volnum=%d,.dirent=%u\n",..
29d00 09 20 66 69 6c 65 2c 20 4e 43 50 5f 46 49 4e 46 4f 28 64 69 72 29 2d 3e 76 6f 6c 4e 75 6d 62 65 ..file,.NCP_FINFO(dir)->volNumbe
29d20 72 2c 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 29 3b 0a 0a r,.NCP_FINFO(dir)->dirEntNum);..
29d40 09 65 72 72 20 3d 20 6e 63 70 5f 69 6e 69 74 69 61 6c 69 7a 65 5f 73 65 61 72 63 68 28 73 65 72 .err.=.ncp_initialize_search(ser
29d60 76 65 72 2c 20 64 69 72 2c 20 26 73 65 71 29 3b 0a 09 69 66 20 28 65 72 72 29 20 7b 0a 09 09 6e ver,.dir,.&seq);..if.(err).{...n
29d80 63 70 5f 64 62 67 28 31 2c 20 22 69 6e 69 74 20 66 61 69 6c 65 64 2c 20 65 72 72 3d 25 64 5c 6e cp_dbg(1,."init.failed,.err=%d\n
29da0 22 2c 20 65 72 72 29 3b 0a 09 09 72 65 74 75 72 6e 3b 0a 09 7d 0a 09 2f 2a 20 57 65 20 4d 55 53 ",.err);...return;..}../*.We.MUS
29dc0 54 20 4e 4f 54 20 75 73 65 20 73 65 72 76 65 72 2d 3e 62 75 66 66 65 72 5f 73 69 7a 65 20 68 61 T.NOT.use.server->buffer_size.ha
29de0 6e 64 73 68 61 6b 65 64 20 77 69 74 68 20 73 65 72 76 65 72 20 69 66 20 77 65 20 61 72 65 0a 09 ndshaked.with.server.if.we.are..
29e00 20 20 20 75 73 69 6e 67 20 55 44 50 2c 20 61 73 20 66 6f 72 20 55 44 50 20 73 65 72 76 65 72 20 ...using.UDP,.as.for.UDP.server.
29e20 75 73 65 73 20 6d 61 78 2e 20 62 75 66 66 65 72 20 73 69 7a 65 20 64 65 74 65 72 6d 69 6e 65 64 uses.max..buffer.size.determined
29e40 20 62 79 0a 09 20 20 20 4d 54 55 2c 20 61 6e 64 20 66 6f 72 20 54 43 50 20 73 65 72 76 65 72 20 .by.....MTU,.and.for.TCP.server.
29e60 75 73 65 73 20 68 61 72 64 77 69 72 65 64 20 76 61 6c 75 65 20 36 35 4b 42 20 28 3d 3d 20 36 36 uses.hardwired.value.65KB.(==.66
29e80 35 36 30 20 62 79 74 65 73 29 2e 20 0a 09 20 20 20 53 6f 20 77 65 20 75 73 65 20 31 32 38 4b 42 560.bytes).......So.we.use.128KB
29ea0 2c 20 6a 75 73 74 20 74 6f 20 62 65 20 73 75 72 65 2c 20 61 73 20 74 68 65 72 65 20 69 73 20 6e ,.just.to.be.sure,.as.there.is.n
29ec0 6f 20 77 61 79 20 68 6f 77 20 74 6f 20 6b 6e 6f 77 0a 09 20 20 20 74 68 69 73 20 76 61 6c 75 65 o.way.how.to.know.....this.value
29ee0 20 69 6e 20 61 64 76 61 6e 63 65 2e 20 2a 2f 0a 09 62 75 66 73 69 7a 65 20 3d 20 31 33 31 30 37 .in.advance..*/..bufsize.=.13107
29f00 32 3b 0a 09 62 75 66 20 3d 20 76 6d 61 6c 6c 6f 63 28 62 75 66 73 69 7a 65 29 3b 0a 09 69 66 20 2;..buf.=.vmalloc(bufsize);..if.
29f20 28 21 62 75 66 29 0a 09 09 72 65 74 75 72 6e 3b 0a 09 64 6f 20 7b 0a 09 09 69 6e 74 20 63 6e 74 (!buf)...return;..do.{...int.cnt
29f40 3b 0a 09 09 63 68 61 72 2a 20 72 70 6c 3b 0a 09 09 73 69 7a 65 5f 74 20 72 70 6c 73 3b 0a 0a 09 ;...char*.rpl;...size_t.rpls;...
29f60 09 65 72 72 20 3d 20 6e 63 70 5f 73 65 61 72 63 68 5f 66 6f 72 5f 66 69 6c 65 73 65 74 28 73 65 .err.=.ncp_search_for_fileset(se
29f80 72 76 65 72 2c 20 26 73 65 71 2c 20 26 6d 6f 72 65 2c 20 26 63 6e 74 2c 20 62 75 66 2c 20 62 75 rver,.&seq,.&more,.&cnt,.buf,.bu
29fa0 66 73 69 7a 65 2c 20 26 72 70 6c 2c 20 26 72 70 6c 73 29 3b 0a 09 09 69 66 20 28 65 72 72 29 09 fsize,.&rpl,.&rpls);...if.(err).
29fc0 09 2f 2a 20 45 72 72 6f 72 20 2a 2f 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 69 66 20 28 21 63 6e ./*.Error.*/....break;...if.(!cn
29fe0 74 29 09 09 2f 2a 20 70 72 65 76 65 6e 74 20 65 6e 64 6c 65 73 73 20 6c 6f 6f 70 20 2a 2f 0a 09 t)../*.prevent.endless.loop.*/..
2a000 09 09 62 72 65 61 6b 3b 0a 09 09 77 68 69 6c 65 20 28 63 6e 74 2d 2d 29 20 7b 0a 09 09 09 73 69 ..break;...while.(cnt--).{....si
2a020 7a 65 5f 74 20 6f 6e 65 72 70 6c 3b 0a 09 09 09 0a 09 09 09 69 66 20 28 72 70 6c 73 20 3c 20 6f ze_t.onerpl;........if.(rpls.<.o
2a040 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 2c 20 65 ffsetof(struct.nw_info_struct,.e
2a060 6e 74 72 79 4e 61 6d 65 29 29 0a 09 09 09 09 62 72 65 61 6b 3b 09 2f 2a 20 73 68 6f 72 74 20 70 ntryName)).....break;./*.short.p
2a080 61 63 6b 65 74 20 2a 2f 0a 09 09 09 6e 63 70 5f 65 78 74 72 61 63 74 5f 66 69 6c 65 5f 69 6e 66 acket.*/....ncp_extract_file_inf
2a0a0 6f 28 72 70 6c 2c 20 26 65 6e 74 72 79 2e 69 29 3b 0a 09 09 09 6f 6e 65 72 70 6c 20 3d 20 6f 66 o(rpl,.&entry.i);....onerpl.=.of
2a0c0 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 2c 20 65 6e fsetof(struct.nw_info_struct,.en
2a0e0 74 72 79 4e 61 6d 65 29 20 2b 20 65 6e 74 72 79 2e 69 2e 6e 61 6d 65 4c 65 6e 3b 0a 09 09 09 69 tryName).+.entry.i.nameLen;....i
2a100 66 20 28 72 70 6c 73 20 3c 20 6f 6e 65 72 70 6c 29 0a 09 09 09 09 62 72 65 61 6b 3b 09 2f 2a 20 f.(rpls.<.onerpl).....break;./*.
2a120 73 68 6f 72 74 20 70 61 63 6b 65 74 20 2a 2f 0a 09 09 09 28 76 6f 69 64 29 6e 63 70 5f 6f 62 74 short.packet.*/....(void)ncp_obt
2a140 61 69 6e 5f 6e 66 73 5f 69 6e 66 6f 28 73 65 72 76 65 72 2c 20 26 65 6e 74 72 79 2e 69 29 3b 0a ain_nfs_info(server,.&entry.i);.
2a160 09 09 09 72 70 6c 20 2b 3d 20 6f 6e 65 72 70 6c 3b 0a 09 09 09 72 70 6c 73 20 2d 3d 20 6f 6e 65 ...rpl.+=.onerpl;....rpls.-=.one
2a180 72 70 6c 3b 0a 09 09 09 65 6e 74 72 79 2e 76 6f 6c 75 6d 65 20 3d 20 65 6e 74 72 79 2e 69 2e 76 rpl;....entry.volume.=.entry.i.v
2a1a0 6f 6c 4e 75 6d 62 65 72 3b 0a 09 09 09 69 66 20 28 21 6e 63 70 5f 66 69 6c 6c 5f 63 61 63 68 65 olNumber;....if.(!ncp_fill_cache
2a1c0 28 66 69 6c 65 2c 20 63 74 78 2c 20 63 74 6c 2c 20 26 65 6e 74 72 79 2c 20 30 29 29 0a 09 09 09 (file,.ctx,.ctl,.&entry,.0))....
2a1e0 09 62 72 65 61 6b 3b 0a 09 09 7d 0a 09 7d 20 77 68 69 6c 65 20 28 6d 6f 72 65 29 3b 0a 09 76 66 .break;...}..}.while.(more);..vf
2a200 72 65 65 28 62 75 66 29 3b 0a 09 72 65 74 75 72 6e 3b 0a 7d 0a 0a 69 6e 74 20 6e 63 70 5f 63 6f ree(buf);..return;.}..int.ncp_co
2a220 6e 6e 5f 6c 6f 67 67 65 64 5f 69 6e 28 73 74 72 75 63 74 20 73 75 70 65 72 5f 62 6c 6f 63 6b 20 nn_logged_in(struct.super_block.
2a240 2a 73 62 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 65 72 2a 20 73 65 72 76 65 *sb).{..struct.ncp_server*.serve
2a260 72 20 3d 20 4e 43 50 5f 53 42 50 28 73 62 29 3b 0a 09 69 6e 74 20 72 65 73 75 6c 74 3b 0a 0a 09 r.=.NCP_SBP(sb);..int.result;...
2a280 69 66 20 28 6e 63 70 5f 73 69 6e 67 6c 65 5f 76 6f 6c 75 6d 65 28 73 65 72 76 65 72 29 29 20 7b if.(ncp_single_volume(server)).{
2a2a0 0a 09 09 69 6e 74 20 6c 65 6e 3b 0a 09 09 73 74 72 75 63 74 20 64 65 6e 74 72 79 2a 20 64 65 6e ...int.len;...struct.dentry*.den
2a2c0 74 3b 0a 09 09 5f 5f 75 33 32 20 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 09 5f 5f 6c 65 33 32 20 64 t;...__u32.volNumber;...__le32.d
2a2e0 69 72 45 6e 74 4e 75 6d 3b 0a 09 09 5f 5f 6c 65 33 32 20 44 6f 73 44 69 72 4e 75 6d 3b 0a 09 09 irEntNum;...__le32.DosDirNum;...
2a300 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 2b 20 31 5d 3b __u8.__name[NCP_MAXPATHLEN.+.1];
2a320 0a 0a 09 09 6c 65 6e 20 3d 20 73 69 7a 65 6f 66 28 5f 5f 6e 61 6d 65 29 3b 0a 09 09 72 65 73 75 ....len.=.sizeof(__name);...resu
2a340 6c 74 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 6d 65 2c 20 lt.=.ncp_io2vol(server,.__name,.
2a360 26 6c 65 6e 2c 20 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 76 6f 6c 2c 0a 09 09 09 &len,.server->m.mounted_vol,....
2a380 09 20 20 20 20 73 74 72 6c 65 6e 28 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 76 6f .....strlen(server->m.mounted_vo
2a3a0 6c 29 2c 20 31 29 3b 0a 09 09 69 66 20 28 72 65 73 75 6c 74 29 0a 09 09 09 67 6f 74 6f 20 6f 75 l),.1);...if.(result)....goto.ou
2a3c0 74 3b 0a 09 09 72 65 73 75 6c 74 20 3d 20 2d 45 4e 4f 45 4e 54 3b 0a 09 09 69 66 20 28 6e 63 70 t;...result.=.-ENOENT;...if.(ncp
2a3e0 5f 67 65 74 5f 76 6f 6c 75 6d 65 5f 72 6f 6f 74 28 73 65 72 76 65 72 2c 20 5f 5f 6e 61 6d 65 2c _get_volume_root(server,.__name,
2a400 20 26 76 6f 6c 4e 75 6d 62 65 72 2c 20 26 64 69 72 45 6e 74 4e 75 6d 2c 20 26 44 6f 73 44 69 72 .&volNumber,.&dirEntNum,.&DosDir
2a420 4e 75 6d 29 29 20 7b 0a 09 09 09 6e 63 70 5f 76 64 62 67 28 22 25 73 20 6e 6f 74 20 66 6f 75 6e Num)).{....ncp_vdbg("%s.not.foun
2a440 64 5c 6e 22 2c 20 73 65 72 76 65 72 2d 3e 6d 2e 6d 6f 75 6e 74 65 64 5f 76 6f 6c 29 3b 0a 09 09 d\n",.server->m.mounted_vol);...
2a460 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 09 7d 0a 09 09 64 65 6e 74 20 3d 20 73 62 2d 3e 73 5f 72 6f .goto.out;...}...dent.=.sb->s_ro
2a480 6f 74 3b 0a 09 09 69 66 20 28 64 65 6e 74 29 20 7b 0a 09 09 09 73 74 72 75 63 74 20 69 6e 6f 64 ot;...if.(dent).{....struct.inod
2a4a0 65 2a 20 69 6e 6f 20 3d 20 64 5f 69 6e 6f 64 65 28 64 65 6e 74 29 3b 0a 09 09 09 69 66 20 28 69 e*.ino.=.d_inode(dent);....if.(i
2a4c0 6e 6f 29 20 7b 0a 09 09 09 09 6e 63 70 5f 75 70 64 61 74 65 5f 6b 6e 6f 77 6e 5f 6e 61 6d 65 73 no).{.....ncp_update_known_names
2a4e0 70 61 63 65 28 73 65 72 76 65 72 2c 20 76 6f 6c 4e 75 6d 62 65 72 2c 20 4e 55 4c 4c 29 3b 0a 09 pace(server,.volNumber,.NULL);..
2a500 09 09 09 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 29 2d 3e 76 6f 6c 4e 75 6d 62 65 72 20 3d 20 76 ...NCP_FINFO(ino)->volNumber.=.v
2a520 6f 6c 4e 75 6d 62 65 72 3b 0a 09 09 09 09 4e 43 50 5f 46 49 4e 46 4f 28 69 6e 6f 29 2d 3e 64 69 olNumber;.....NCP_FINFO(ino)->di
2a540 72 45 6e 74 4e 75 6d 20 3d 20 64 69 72 45 6e 74 4e 75 6d 3b 0a 09 09 09 09 4e 43 50 5f 46 49 4e rEntNum.=.dirEntNum;.....NCP_FIN
2a560 46 4f 28 69 6e 6f 29 2d 3e 44 6f 73 44 69 72 4e 75 6d 20 3d 20 44 6f 73 44 69 72 4e 75 6d 3b 0a FO(ino)->DosDirNum.=.DosDirNum;.
2a580 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 20 7b 0a 09 09 09 09 ....result.=.0;....}.else.{.....
2a5a0 6e 63 70 5f 64 62 67 28 31 2c 20 22 64 5f 69 6e 6f 64 65 28 73 62 2d 3e 73 5f 72 6f 6f 74 29 20 ncp_dbg(1,."d_inode(sb->s_root).
2a5c0 3d 3d 20 4e 55 4c 4c 21 5c 6e 22 29 3b 0a 09 09 09 7d 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 ==.NULL!\n");....}...}.else.{...
2a5e0 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 73 62 2d 3e 73 5f 72 6f 6f 74 20 3d 3d 20 4e 55 4c 4c 21 .ncp_dbg(1,."sb->s_root.==.NULL!
2a600 5c 6e 22 29 3b 0a 09 09 7d 0a 09 7d 20 65 6c 73 65 0a 09 09 72 65 73 75 6c 74 20 3d 20 30 3b 0a \n");...}..}.else...result.=.0;.
2a620 0a 6f 75 74 3a 0a 09 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 .out:..return.result;.}..static.
2a640 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 6e 63 70 5f 6c 6f 6f 6b 75 70 28 73 74 72 75 63 74 struct.dentry.*ncp_lookup(struct
2a660 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 74 .inode.*dir,.struct.dentry.*dent
2a680 72 79 2c 20 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 ry,.unsigned.int.flags).{..struc
2a6a0 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 45 t.ncp_server.*server.=.NCP_SERVE
2a6c0 52 28 64 69 72 29 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 4e R(dir);..struct.inode.*inode.=.N
2a6e0 55 4c 4c 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 66 69 6e 66 ULL;..struct.ncp_entry_info.finf
2a700 6f 3b 0a 09 69 6e 74 20 65 72 72 6f 72 2c 20 72 65 73 2c 20 6c 65 6e 3b 0a 09 5f 5f 75 38 20 5f o;..int.error,.res,.len;..__u8._
2a720 5f 6e 61 6d 65 5b 4e 43 50 5f 4d 41 58 50 41 54 48 4c 45 4e 20 2b 20 31 5d 3b 0a 0a 09 65 72 72 _name[NCP_MAXPATHLEN.+.1];...err
2a740 6f 72 20 3d 20 2d 45 49 4f 3b 0a 09 69 66 20 28 21 6e 63 70 5f 63 6f 6e 6e 5f 76 61 6c 69 64 28 or.=.-EIO;..if.(!ncp_conn_valid(
2a760 73 65 72 76 65 72 29 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 server))...goto.finished;...ncp_
2a780 76 64 62 67 28 22 73 65 72 76 65 72 20 6c 6f 6f 6b 75 70 20 66 6f 72 20 25 70 64 32 5c 6e 22 2c vdbg("server.lookup.for.%pd2\n",
2a7a0 20 64 65 6e 74 72 79 29 3b 0a 0a 09 6c 65 6e 20 3d 20 73 69 7a 65 6f 66 28 5f 5f 6e 61 6d 65 29 .dentry);...len.=.sizeof(__name)
2a7c0 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 69 72 29 29 20 ;..if.(ncp_is_server_root(dir)).
2a7e0 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
2a800 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,.
2a820 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 3b 0a 09 09 69 .....dentry->d_name.len,.1);...i
2a840 66 20 28 21 72 65 73 29 0a 09 09 09 72 65 73 20 3d 20 6e 63 70 5f 6c 6f 6f 6b 75 70 5f 76 6f 6c f.(!res)....res.=.ncp_lookup_vol
2a860 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 66 6f 2e 69 29 29 3b ume(server,.__name,.&(finfo.i));
2a880 0a 09 09 69 66 20 28 21 72 65 73 29 0a 09 09 09 6e 63 70 5f 75 70 64 61 74 65 5f 6b 6e 6f 77 6e ...if.(!res)....ncp_update_known
2a8a0 5f 6e 61 6d 65 73 70 61 63 65 28 73 65 72 76 65 72 2c 20 66 69 6e 66 6f 2e 69 2e 76 6f 6c 4e 75 _namespace(server,.finfo.i.volNu
2a8c0 6d 62 65 72 2c 20 4e 55 4c 4c 29 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 72 65 73 20 3d 20 6e mber,.NULL);..}.else.{...res.=.n
2a8e0 63 70 5f 69 6f 32 76 6f 6c 28 73 65 72 76 65 72 2c 20 5f 5f 6e 61 6d 65 2c 20 26 6c 65 6e 2c 20 cp_io2vol(server,.__name,.&len,.
2a900 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6e 61 6d 65 2c 0a 09 09 09 09 20 64 65 6e 74 72 79 dentry->d_name.name,......dentry
2a920 2d 3e 64 5f 6e 61 6d 65 2e 6c 65 6e 2c 20 21 6e 63 70 5f 70 72 65 73 65 72 76 65 5f 63 61 73 65 ->d_name.len,.!ncp_preserve_case
2a940 28 64 69 72 29 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 (dir));...if.(!res)....res.=.ncp
2a960 5f 6f 62 74 61 69 6e 5f 69 6e 66 6f 28 73 65 72 76 65 72 2c 20 64 69 72 2c 20 5f 5f 6e 61 6d 65 _obtain_info(server,.dir,.__name
2a980 2c 20 26 28 66 69 6e 66 6f 2e 69 29 29 3b 0a 09 7d 0a 09 6e 63 70 5f 76 64 62 67 28 22 6c 6f 6f ,.&(finfo.i));..}..ncp_vdbg("loo
2a9a0 6b 65 64 20 66 6f 72 20 25 70 64 32 2c 20 72 65 73 3d 25 64 5c 6e 22 2c 20 64 65 6e 74 72 79 2c ked.for.%pd2,.res=%d\n",.dentry,
2a9c0 20 72 65 73 29 3b 0a 09 2f 2a 0a 09 20 2a 20 49 66 20 77 65 20 64 69 64 6e 27 74 20 66 69 6e 64 .res);../*...*.If.we.didn't.find
2a9e0 20 61 6e 20 65 6e 74 72 79 2c 20 6d 61 6b 65 20 61 20 6e 65 67 61 74 69 76 65 20 64 65 6e 74 72 .an.entry,.make.a.negative.dentr
2aa00 79 2e 0a 09 20 2a 2f 0a 09 69 66 20 28 72 65 73 29 0a 09 09 67 6f 74 6f 20 61 64 64 5f 65 6e 74 y....*/..if.(res)...goto.add_ent
2aa20 72 79 3b 0a 0a 09 2f 2a 0a 09 20 2a 20 43 72 65 61 74 65 20 61 6e 20 69 6e 6f 64 65 20 66 6f 72 ry;.../*...*.Create.an.inode.for
2aa40 20 74 68 65 20 65 6e 74 72 79 2e 0a 09 20 2a 2f 0a 09 66 69 6e 66 6f 2e 6f 70 65 6e 65 64 20 3d .the.entry....*/..finfo.opened.=
2aa60 20 30 3b 0a 09 66 69 6e 66 6f 2e 69 6e 6f 20 3d 20 69 75 6e 69 71 75 65 28 64 69 72 2d 3e 69 5f .0;..finfo.ino.=.iunique(dir->i_
2aa80 73 62 2c 20 32 29 3b 0a 09 66 69 6e 66 6f 2e 76 6f 6c 75 6d 65 20 3d 20 66 69 6e 66 6f 2e 69 2e sb,.2);..finfo.volume.=.finfo.i.
2aaa0 76 6f 6c 4e 75 6d 62 65 72 3b 0a 09 65 72 72 6f 72 20 3d 20 2d 45 41 43 43 45 53 3b 0a 09 69 6e volNumber;..error.=.-EACCES;..in
2aac0 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 26 66 69 6e 66 6f ode.=.ncp_iget(dir->i_sb,.&finfo
2aae0 29 3b 0a 0a 09 69 66 20 28 69 6e 6f 64 65 29 20 7b 0a 09 09 6e 63 70 5f 6e 65 77 5f 64 65 6e 74 );...if.(inode).{...ncp_new_dent
2ab00 72 79 28 64 65 6e 74 72 79 29 3b 0a 61 64 64 5f 65 6e 74 72 79 3a 0a 09 09 64 5f 61 64 64 28 64 ry(dentry);.add_entry:...d_add(d
2ab20 65 6e 74 72 79 2c 20 69 6e 6f 64 65 29 3b 0a 09 09 65 72 72 6f 72 20 3d 20 30 3b 0a 09 7d 0a 0a entry,.inode);...error.=.0;..}..
2ab40 66 69 6e 69 73 68 65 64 3a 0a 09 6e 63 70 5f 76 64 62 67 28 22 72 65 73 75 6c 74 3d 25 64 5c 6e finished:..ncp_vdbg("result=%d\n
2ab60 22 2c 20 65 72 72 6f 72 29 3b 0a 09 72 65 74 75 72 6e 20 45 52 52 5f 50 54 52 28 65 72 72 6f 72 ",.error);..return.ERR_PTR(error
2ab80 29 3b 0a 7d 0a 0a 2f 2a 0a 20 2a 20 54 68 69 73 20 63 6f 64 65 20 69 73 20 63 6f 6d 6d 6f 6e 20 );.}../*..*.This.code.is.common.
2aba0 74 6f 20 63 72 65 61 74 65 2c 20 6d 6b 64 69 72 2c 20 61 6e 64 20 6d 6b 6e 6f 64 2e 0a 20 2a 2f to.create,.mkdir,.and.mknod...*/
2abc0 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 69 6e 73 74 61 6e 74 69 61 74 65 28 73 74 72 75 .static.int.ncp_instantiate(stru
2abe0 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 65 ct.inode.*dir,.struct.dentry.*de
2ac00 6e 74 72 79 2c 0a 09 09 09 73 74 72 75 63 74 20 6e 63 70 5f 65 6e 74 72 79 5f 69 6e 66 6f 20 2a ntry,....struct.ncp_entry_info.*
2ac20 66 69 6e 66 6f 29 0a 7b 0a 09 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 69 6e 6f 64 65 3b 0a 09 finfo).{..struct.inode.*inode;..
2ac40 69 6e 74 20 65 72 72 6f 72 20 3d 20 2d 45 49 4e 56 41 4c 3b 0a 0a 09 66 69 6e 66 6f 2d 3e 69 6e int.error.=.-EINVAL;...finfo->in
2ac60 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 3b 0a 09 69 6e 6f 64 o.=.iunique(dir->i_sb,.2);..inod
2ac80 65 20 3d 20 6e 63 70 5f 69 67 65 74 28 64 69 72 2d 3e 69 5f 73 62 2c 20 66 69 6e 66 6f 29 3b 0a e.=.ncp_iget(dir->i_sb,.finfo);.
2aca0 09 69 66 20 28 21 69 6e 6f 64 65 29 0a 09 09 67 6f 74 6f 20 6f 75 74 5f 63 6c 6f 73 65 3b 0a 09 .if.(!inode)...goto.out_close;..
2acc0 64 5f 69 6e 73 74 61 6e 74 69 61 74 65 28 64 65 6e 74 72 79 2c 69 6e 6f 64 65 29 3b 0a 09 65 72 d_instantiate(dentry,inode);..er
2ace0 72 6f 72 20 3d 20 30 3b 0a 6f 75 74 3a 0a 09 72 65 74 75 72 6e 20 65 72 72 6f 72 3b 0a 0a 6f 75 ror.=.0;.out:..return.error;..ou
2ad00 74 5f 63 6c 6f 73 65 3a 0a 09 6e 63 70 5f 76 64 62 67 28 22 25 70 64 32 20 66 61 69 6c 65 64 2c t_close:..ncp_vdbg("%pd2.failed,
2ad20 20 63 6c 6f 73 69 6e 67 20 66 69 6c 65 5c 6e 22 2c 20 64 65 6e 74 72 79 29 3b 0a 09 6e 63 70 5f .closing.file\n",.dentry);..ncp_
2ad40 63 6c 6f 73 65 5f 66 69 6c 65 28 4e 43 50 5f 53 45 52 56 45 52 28 64 69 72 29 2c 20 66 69 6e 66 close_file(NCP_SERVER(dir),.finf
2ad60 6f 2d 3e 66 69 6c 65 5f 68 61 6e 64 6c 65 29 3b 0a 09 67 6f 74 6f 20 6f 75 74 3b 0a 7d 0a 0a 69 o->file_handle);..goto.out;.}..i
2ad80 6e 74 20 6e 63 70 5f 63 72 65 61 74 65 5f 6e 65 77 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a nt.ncp_create_new(struct.inode.*
2ada0 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
2adc0 65 5f 74 20 6d 6f 64 65 2c 0a 09 09 20 20 20 64 65 76 5f 74 20 72 64 65 76 2c 20 5f 5f 6c 65 33 e_t.mode,......dev_t.rdev,.__le3
2ade0 32 20 61 74 74 72 69 62 75 74 65 73 29 0a 7b 0a 09 73 74 72 75 63 74 20 6e 63 70 5f 73 65 72 76 2.attributes).{..struct.ncp_serv
2ae00 65 72 20 2a 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 09 73 er.*server.=.NCP_SERVER(dir);..s
2ae20 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
2ae40 20 65 72 72 6f 72 2c 20 72 65 73 75 6c 74 2c 20 6c 65 6e 3b 0a 09 69 6e 74 20 6f 70 6d 6f 64 65 .error,.result,.len;..int.opmode
2ae60 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 2b 20 ;..__u8.__name[NCP_MAXPATHLEN.+.
2ae80 31 5d 3b 0a 09 0a 09 6e 63 70 5f 76 64 62 67 28 22 63 72 65 61 74 69 6e 67 20 25 70 64 32 2c 20 1];....ncp_vdbg("creating.%pd2,.
2aea0 6d 6f 64 65 3d 25 68 78 5c 6e 22 2c 20 64 65 6e 74 72 79 2c 20 6d 6f 64 65 29 3b 0a 0a 09 6e 63 mode=%hx\n",.dentry,.mode);...nc
2aec0 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 3b 0a 09 6c p_age_dentry(server,.dentry);..l
2aee0 65 6e 20 3d 20 73 69 7a 65 6f 66 28 5f 5f 6e 61 6d 65 29 3b 0a 09 65 72 72 6f 72 20 3d 20 6e 63 en.=.sizeof(__name);..error.=.nc
2af00 70 5f 69 6f 32 76 6f 6c 28 73 65 72 76 65 72 2c 20 5f 5f 6e 61 6d 65 2c 20 26 6c 65 6e 2c 20 64 p_io2vol(server,.__name,.&len,.d
2af20 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6e 61 6d 65 2c 0a 09 09 09 20 20 20 64 65 6e 74 72 79 entry->d_name.name,.......dentry
2af40 2d 3e 64 5f 6e 61 6d 65 2e 6c 65 6e 2c 20 21 6e 63 70 5f 70 72 65 73 65 72 76 65 5f 63 61 73 65 ->d_name.len,.!ncp_preserve_case
2af60 28 64 69 72 29 29 3b 0a 09 69 66 20 28 65 72 72 6f 72 29 0a 09 09 67 6f 74 6f 20 6f 75 74 3b 0a (dir));..if.(error)...goto.out;.
2af80 0a 09 65 72 72 6f 72 20 3d 20 2d 45 41 43 43 45 53 3b 0a 09 0a 09 69 66 20 28 53 5f 49 53 52 45 ..error.=.-EACCES;....if.(S_ISRE
2afa0 47 28 6d 6f 64 65 29 20 26 26 20 0a 09 20 20 20 20 28 73 65 72 76 65 72 2d 3e 6d 2e 66 6c 61 67 G(mode).&&.......(server->m.flag
2afc0 73 20 26 20 4e 43 50 5f 4d 4f 55 4e 54 5f 45 58 54 52 41 53 29 20 26 26 20 0a 09 20 20 20 20 28 s.&.NCP_MOUNT_EXTRAS).&&.......(
2afe0 6d 6f 64 65 20 26 20 53 5f 49 58 55 47 4f 29 29 0a 09 09 61 74 74 72 69 62 75 74 65 73 20 7c 3d mode.&.S_IXUGO))...attributes.|=
2b000 20 61 53 59 53 54 45 4d 20 7c 20 61 53 48 41 52 45 44 3b 0a 09 0a 09 72 65 73 75 6c 74 20 3d 20 .aSYSTEM.|.aSHARED;....result.=.
2b020 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
2b040 65 72 76 65 72 2c 20 64 69 72 2c 20 5f 5f 6e 61 6d 65 2c 0a 09 09 09 09 4f 43 5f 4d 4f 44 45 5f erver,.dir,.__name,.....OC_MODE_
2b060 43 52 45 41 54 45 20 7c 20 4f 43 5f 4d 4f 44 45 5f 4f 50 45 4e 20 7c 20 4f 43 5f 4d 4f 44 45 5f CREATE.|.OC_MODE_OPEN.|.OC_MODE_
2b080 52 45 50 4c 41 43 45 2c 0a 09 09 09 09 61 74 74 72 69 62 75 74 65 73 2c 20 41 52 5f 52 45 41 44 REPLACE,.....attributes,.AR_READ
2b0a0 20 7c 20 41 52 5f 57 52 49 54 45 2c 20 26 66 69 6e 66 6f 29 3b 0a 09 6f 70 6d 6f 64 65 20 3d 20 .|.AR_WRITE,.&finfo);..opmode.=.
2b0c0 4f 5f 52 44 57 52 3b 0a 09 69 66 20 28 72 65 73 75 6c 74 29 20 7b 0a 09 09 72 65 73 75 6c 74 20 O_RDWR;..if.(result).{...result.
2b0e0 3d 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 =.ncp_open_create_file_or_subdir
2b100 28 73 65 72 76 65 72 2c 20 64 69 72 2c 20 5f 5f 6e 61 6d 65 2c 0a 09 09 09 09 4f 43 5f 4d 4f 44 (server,.dir,.__name,.....OC_MOD
2b120 45 5f 43 52 45 41 54 45 20 7c 20 4f 43 5f 4d 4f 44 45 5f 4f 50 45 4e 20 7c 20 4f 43 5f 4d 4f 44 E_CREATE.|.OC_MODE_OPEN.|.OC_MOD
2b140 45 5f 52 45 50 4c 41 43 45 2c 0a 09 09 09 09 61 74 74 72 69 62 75 74 65 73 2c 20 41 52 5f 57 52 E_REPLACE,.....attributes,.AR_WR
2b160 49 54 45 2c 20 26 66 69 6e 66 6f 29 3b 0a 09 09 69 66 20 28 72 65 73 75 6c 74 29 20 7b 0a 09 09 ITE,.&finfo);...if.(result).{...
2b180 09 69 66 20 28 72 65 73 75 6c 74 20 3d 3d 20 30 78 38 37 29 0a 09 09 09 09 65 72 72 6f 72 20 3d .if.(result.==.0x87).....error.=
2b1a0 20 2d 45 4e 41 4d 45 54 4f 4f 4c 4f 4e 47 3b 0a 09 09 09 65 6c 73 65 20 69 66 20 28 72 65 73 75 .-ENAMETOOLONG;....else.if.(resu
2b1c0 6c 74 20 3c 20 30 29 0a 09 09 09 09 65 72 72 6f 72 20 3d 20 72 65 73 75 6c 74 3b 0a 09 09 09 6e lt.<.0).....error.=.result;....n
2b1e0 63 70 5f 64 62 67 28 31 2c 20 22 25 70 64 32 20 66 61 69 6c 65 64 5c 6e 22 2c 20 64 65 6e 74 72 cp_dbg(1,."%pd2.failed\n",.dentr
2b200 79 29 3b 0a 09 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 09 7d 0a 09 09 6f 70 6d 6f 64 65 20 3d 20 y);....goto.out;...}...opmode.=.
2b220 4f 5f 57 52 4f 4e 4c 59 3b 0a 09 7d 0a 09 66 69 6e 66 6f 2e 61 63 63 65 73 73 20 3d 20 6f 70 6d O_WRONLY;..}..finfo.access.=.opm
2b240 6f 64 65 3b 0a 09 69 66 20 28 6e 63 70 5f 69 73 5f 6e 66 73 5f 65 78 74 72 61 73 28 73 65 72 76 ode;..if.(ncp_is_nfs_extras(serv
2b260 65 72 2c 20 66 69 6e 66 6f 2e 76 6f 6c 75 6d 65 29 29 20 7b 0a 09 09 66 69 6e 66 6f 2e 69 2e 6e er,.finfo.volume)).{...finfo.i.n
2b280 66 73 2e 6d 6f 64 65 20 3d 20 6d 6f 64 65 3b 0a 09 09 66 69 6e 66 6f 2e 69 2e 6e 66 73 2e 72 64 fs.mode.=.mode;...finfo.i.nfs.rd
2b2a0 65 76 20 3d 20 6e 65 77 5f 65 6e 63 6f 64 65 5f 64 65 76 28 72 64 65 76 29 3b 0a 09 09 69 66 20 ev.=.new_encode_dev(rdev);...if.
2b2c0 28 6e 63 70 5f 6d 6f 64 69 66 79 5f 6e 66 73 5f 69 6e 66 6f 28 73 65 72 76 65 72 2c 20 66 69 6e (ncp_modify_nfs_info(server,.fin
2b2e0 66 6f 2e 76 6f 6c 75 6d 65 2c 0a 09 09 09 09 09 66 69 6e 66 6f 2e 69 2e 64 69 72 45 6e 74 4e 75 fo.volume,......finfo.i.dirEntNu
2b300 6d 2c 0a 09 09 09 09 09 6d 6f 64 65 2c 20 6e 65 77 5f 65 6e 63 6f 64 65 5f 64 65 76 28 72 64 65 m,......mode,.new_encode_dev(rde
2b320 76 29 29 20 21 3d 20 30 29 0a 09 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 7d 0a 0a 09 65 72 72 6f v)).!=.0)....goto.out;..}...erro
2b340 72 20 3d 20 6e 63 70 5f 69 6e 73 74 61 6e 74 69 61 74 65 28 64 69 72 2c 20 64 65 6e 74 72 79 2c r.=.ncp_instantiate(dir,.dentry,
2b360 20 26 66 69 6e 66 6f 29 3b 0a 6f 75 74 3a 0a 09 72 65 74 75 72 6e 20 65 72 72 6f 72 3b 0a 7d 0a .&finfo);.out:..return.error;.}.
2b380 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 63 72 65 61 74 65 28 73 74 72 75 63 74 20 69 6e .static.int.ncp_create(struct.in
2b3a0 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 2c ode.*dir,.struct.dentry.*dentry,
2b3c0 20 75 6d 6f 64 65 5f 74 20 6d 6f 64 65 2c 0a 09 09 62 6f 6f 6c 20 65 78 63 6c 29 0a 7b 0a 09 72 .umode_t.mode,...bool.excl).{..r
2b3e0 65 74 75 72 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 eturn.ncp_create_new(dir,.dentry
2b400 2c 20 6d 6f 64 65 2c 20 30 2c 20 30 29 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 ,.mode,.0,.0);.}..static.int.ncp
2b420 5f 6d 6b 64 69 72 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 _mkdir(struct.inode.*dir,.struct
2b440 20 64 65 6e 74 72 79 20 2a 64 65 6e 74 72 79 2c 20 75 6d 6f 64 65 5f 74 20 6d 6f 64 65 29 0a 7b .dentry.*dentry,.umode_t.mode).{
2b460 0a 09 73 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 ..struct.ncp_entry_info.finfo;..
2b480 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 43 50 5f struct.ncp_server.*server.=.NCP_
2b4a0 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 6c 65 6e 3b 0a 09 5f SERVER(dir);..int.error,.len;.._
2b4c0 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 2b 20 31 5d 3b 0a _u8.__name[NCP_MAXPATHLEN.+.1];.
2b4e0 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 6d 61 6b 69 6e 67 20 25 70 64 32 5c 6e 22 2c 20 64 65 ..ncp_dbg(1,."making.%pd2\n",.de
2b500 6e 74 72 79 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 ntry);...ncp_age_dentry(server,.
2b520 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);.
2b540 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
2b560 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,..
2b580 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
2b5a0 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)..
2b5c0 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 6f 70 65 6e 5f 63 72 .goto.out;...error.=.ncp_open_cr
2b5e0 65 61 74 65 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 73 65 72 76 65 72 2c 20 64 69 72 2c eate_file_or_subdir(server,.dir,
2b600 20 5f 5f 6e 61 6d 65 2c 0a 09 09 09 09 09 20 20 20 4f 43 5f 4d 4f 44 45 5f 43 52 45 41 54 45 2c .__name,.........OC_MODE_CREATE,
2b620 20 61 44 49 52 2c 0a 09 09 09 09 09 20 20 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 30 78 66 66 66 .aDIR,.........cpu_to_le16(0xfff
2b640 66 29 2c 0a 09 09 09 09 09 20 20 20 26 66 69 6e 66 6f 29 3b 0a 09 69 66 20 28 65 72 72 6f 72 20 f),.........&finfo);..if.(error.
2b660 3d 3d 20 30 29 20 7b 0a 09 09 69 66 20 28 6e 63 70 5f 69 73 5f 6e 66 73 5f 65 78 74 72 61 73 28 ==.0).{...if.(ncp_is_nfs_extras(
2b680 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 09 09 09 6d 6f 64 65 server,.finfo.volume)).{....mode
2b6a0 20 7c 3d 20 53 5f 49 46 44 49 52 3b 0a 09 09 09 66 69 6e 66 6f 2e 69 2e 6e 66 73 2e 6d 6f 64 65 .|=.S_IFDIR;....finfo.i.nfs.mode
2b6c0 20 3d 20 6d 6f 64 65 3b 0a 09 09 09 69 66 20 28 6e 63 70 5f 6d 6f 64 69 66 79 5f 6e 66 73 5f 69 .=.mode;....if.(ncp_modify_nfs_i
2b6e0 6e 66 6f 28 73 65 72 76 65 72 2c 0a 09 09 09 09 09 09 66 69 6e 66 6f 2e 76 6f 6c 75 6d 65 2c 0a nfo(server,.......finfo.volume,.
2b700 09 09 09 09 09 09 66 69 6e 66 6f 2e 69 2e 64 69 72 45 6e 74 4e 75 6d 2c 0a 09 09 09 09 09 09 6d ......finfo.i.dirEntNum,.......m
2b720 6f 64 65 2c 20 30 29 20 21 3d 20 30 29 0a 09 09 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 09 09 7d 0a ode,.0).!=.0).....goto.out;...}.
2b740 09 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 69 72 2c 20 64 ..error.=.ncp_instantiate(dir,.d
2b760 65 6e 74 72 79 2c 20 26 66 69 6e 66 6f 29 3b 0a 09 7d 20 65 6c 73 65 20 69 66 20 28 65 72 72 6f entry,.&finfo);..}.else.if.(erro
2b780 72 20 3e 20 30 29 20 7b 0a 09 09 65 72 72 6f 72 20 3d 20 2d 45 41 43 43 45 53 3b 0a 09 7d 0a 6f r.>.0).{...error.=.-EACCES;..}.o
2b7a0 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 69 6e 74 ut:..return.error;.}..static.int
2b7c0 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 64 69 72 2c 20 73 74 .ncp_rmdir(struct.inode.*dir,.st
2b7e0 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 6e ruct.dentry.*dentry).{..struct.n
2b800 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 64 cp_server.*server.=.NCP_SERVER(d
2b820 69 72 29 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 09 5f ir);..int.error,.result,.len;.._
2b840 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 2b 20 31 5d 3b 0a _u8.__name[NCP_MAXPATHLEN.+.1];.
2b860 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 72 65 6d 6f 76 69 6e 67 20 25 70 64 32 5c 6e 22 2c 20 ..ncp_dbg(1,."removing.%pd2\n",.
2b880 64 65 6e 74 72 79 29 3b 0a 0a 09 6c 65 6e 20 3d 20 73 69 7a 65 6f 66 28 5f 5f 6e 61 6d 65 29 3b dentry);...len.=.sizeof(__name);
2b8a0 0a 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 ..error.=.ncp_io2vol(server,.__n
2b8c0 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,.
2b8e0 09 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 ......dentry->d_name.len,.!ncp_p
2b900 72 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 reserve_case(dir));..if.(error).
2b920 09 09 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 72 65 73 75 6c 74 20 3d 20 6e 63 70 5f 64 65 6c 5f 66 ..goto.out;...result.=.ncp_del_f
2b940 69 6c 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 ile_or_subdir(server,.dir,.__nam
2b960 65 29 3b 0a 09 73 77 69 74 63 68 20 28 72 65 73 75 6c 74 29 20 7b 0a 09 09 63 61 73 65 20 30 78 e);..switch.(result).{...case.0x
2b980 30 30 3a 0a 09 09 09 65 72 72 6f 72 20 3d 20 30 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 00:....error.=.0;....break;...ca
2b9a0 73 65 20 30 78 38 35 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 se.0x85:./*.unauthorized.to.dele
2b9c0 74 65 20 66 69 6c 65 20 2a 2f 0a 09 09 63 61 73 65 20 30 78 38 41 3a 09 2f 2a 20 75 6e 61 75 74 te.file.*/...case.0x8A:./*.unaut
2b9e0 68 6f 72 69 7a 65 64 20 74 6f 20 64 65 6c 65 74 65 20 66 69 6c 65 20 2a 2f 0a 09 09 09 65 72 72 horized.to.delete.file.*/....err
2ba00 6f 72 20 3d 20 2d 45 41 43 43 45 53 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 or.=.-EACCES;....break;...case.0
2ba20 78 38 46 3a 0a 09 09 63 61 73 65 20 30 78 39 30 3a 09 2f 2a 20 72 65 61 64 20 6f 6e 6c 79 20 2a x8F:...case.0x90:./*.read.only.*
2ba40 2f 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d 45 50 45 52 4d 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 /....error.=.-EPERM;....break;..
2ba60 09 63 61 73 65 20 30 78 39 46 3a 09 2f 2a 20 69 6e 20 75 73 65 20 62 79 20 61 6e 6f 74 68 65 72 .case.0x9F:./*.in.use.by.another
2ba80 20 63 6c 69 65 6e 74 20 2a 2f 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d 45 42 55 53 59 3b 0a 09 09 .client.*/....error.=.-EBUSY;...
2baa0 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 78 41 30 3a 09 2f 2a 20 64 69 72 65 63 74 6f 72 .break;...case.0xA0:./*.director
2bac0 79 20 6e 6f 74 20 65 6d 70 74 79 20 2a 2f 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d 45 4e 4f 54 45 y.not.empty.*/....error.=.-ENOTE
2bae0 4d 50 54 59 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 78 46 46 3a 09 2f 2a 20 MPTY;....break;...case.0xFF:./*.
2bb00 73 6f 6d 65 6f 6e 65 20 64 65 6c 65 74 65 64 20 66 69 6c 65 20 2a 2f 0a 09 09 09 65 72 72 6f 72 someone.deleted.file.*/....error
2bb20 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 66 61 75 6c 74 3a .=.-ENOENT;....break;...default:
2bb40 0a 09 09 09 65 72 72 6f 72 20 3d 20 72 65 73 75 6c 74 20 3c 20 30 20 3f 20 72 65 73 75 6c 74 20 ....error.=.result.<.0.?.result.
2bb60 3a 20 2d 45 41 43 43 45 53 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 09 7d 0a 6f :.-EACCES;....break;.........}.o
2bb80 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 69 6e 74 ut:..return.error;.}..static.int
2bba0 20 6e 63 70 5f 75 6e 6c 69 6e 6b 28 73 74 72 75 63 74 20 69 6e 6f 64 65 20 2a 64 69 72 2c 20 73 .ncp_unlink(struct.inode.*dir,.s
2bbc0 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 73 74 72 75 63 74 20 truct.dentry.*dentry).{..struct.
2bbe0 69 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 inode.*inode.=.d_inode(dentry);.
2bc00 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 3b 0a 09 69 6e 74 .struct.ncp_server.*server;..int
2bc20 20 65 72 72 6f 72 3b 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 .error;...server.=.NCP_SERVER(di
2bc40 72 29 3b 0a 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 75 6e 6c 69 6e 6b 69 6e 67 20 25 70 64 32 5c r);..ncp_dbg(1,."unlinking.%pd2\
2bc60 6e 22 2c 20 64 65 6e 74 72 79 29 3b 0a 09 0a 09 2f 2a 0a 09 20 2a 20 43 68 65 63 6b 20 77 68 65 n",.dentry);..../*...*.Check.whe
2bc80 74 68 65 72 20 74 6f 20 63 6c 6f 73 65 20 74 68 65 20 66 69 6c 65 20 2e 2e 2e 0a 09 20 2a 2f 0a ther.to.close.the.file.......*/.
2bca0 09 69 66 20 28 69 6e 6f 64 65 29 20 7b 0a 09 09 6e 63 70 5f 76 64 62 67 28 22 63 6c 6f 73 69 6e .if.(inode).{...ncp_vdbg("closin
2bcc0 67 20 66 69 6c 65 5c 6e 22 29 3b 0a 09 09 6e 63 70 5f 6d 61 6b 65 5f 63 6c 6f 73 65 64 28 69 6e g.file\n");...ncp_make_closed(in
2bce0 6f 64 65 29 3b 0a 09 7d 0a 0a 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 64 65 6c 5f 66 69 6c 65 5f ode);..}...error.=.ncp_del_file_
2bd00 6f 72 5f 73 75 62 64 69 72 32 28 73 65 72 76 65 72 2c 20 64 65 6e 74 72 79 29 3b 0a 23 69 66 64 or_subdir2(server,.dentry);.#ifd
2bd20 65 66 20 43 4f 4e 46 49 47 5f 4e 43 50 46 53 5f 53 54 52 4f 4e 47 0a 09 2f 2a 20 39 43 20 69 73 ef.CONFIG_NCPFS_STRONG../*.9C.is
2bd40 20 49 6e 76 61 6c 69 64 20 70 61 74 68 2e 2e 20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 38 46 2c .Invalid.path...It.should.be.8F,
2bd60 20 39 30 20 2d 20 72 65 61 64 20 6f 6e 6c 79 2c 20 62 75 74 0a 09 20 20 20 69 74 20 69 73 20 6e .90.-.read.only,.but.....it.is.n
2bd80 6f 74 20 3a 2d 28 20 2a 2f 0a 09 69 66 20 28 28 65 72 72 6f 72 20 3d 3d 20 30 78 39 43 20 7c 7c ot.:-(.*/..if.((error.==.0x9C.||
2bda0 20 65 72 72 6f 72 20 3d 3d 20 30 78 39 30 29 20 26 26 20 73 65 72 76 65 72 2d 3e 6d 2e 66 6c 61 .error.==.0x90).&&.server->m.fla
2bdc0 67 73 20 26 20 4e 43 50 5f 4d 4f 55 4e 54 5f 53 54 52 4f 4e 47 29 20 7b 20 2f 2a 20 52 2f 4f 20 gs.&.NCP_MOUNT_STRONG).{./*.R/O.
2bde0 2a 2f 0a 09 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 66 6f 72 63 65 5f 75 6e 6c 69 6e 6b 28 64 69 */...error.=.ncp_force_unlink(di
2be00 72 2c 20 64 65 6e 74 72 79 29 3b 0a 09 7d 0a 23 65 6e 64 69 66 0a 09 73 77 69 74 63 68 20 28 65 r,.dentry);..}.#endif..switch.(e
2be20 72 72 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 rror).{...case.0x00:....ncp_dbg(
2be40 31 2c 20 22 72 65 6d 6f 76 65 64 20 25 70 64 32 5c 6e 22 2c 20 64 65 6e 74 72 79 29 3b 0a 09 09 1,."removed.%pd2\n",.dentry);...
2be60 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 78 38 35 3a 0a 09 09 63 61 73 65 20 30 78 38 41 .break;...case.0x85:...case.0x8A
2be80 3a 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 6b 3b 0a :....error.=.-EACCES;....break;.
2bea0 09 09 63 61 73 65 20 30 78 38 44 3a 09 2f 2a 20 73 6f 6d 65 20 66 69 6c 65 73 20 69 6e 20 75 73 ..case.0x8D:./*.some.files.in.us
2bec0 65 20 2a 2f 0a 09 09 63 61 73 65 20 30 78 38 45 3a 09 2f 2a 20 61 6c 6c 20 66 69 6c 65 73 20 69 e.*/...case.0x8E:./*.all.files.i
2bee0 6e 20 75 73 65 20 2a 2f 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d 45 42 55 53 59 3b 0a 09 09 09 62 n.use.*/....error.=.-EBUSY;....b
2bf00 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 78 38 46 3a 09 2f 2a 20 73 6f 6d 65 20 72 65 61 64 20 reak;...case.0x8F:./*.some.read.
2bf20 6f 6e 6c 79 20 2a 2f 0a 09 09 63 61 73 65 20 30 78 39 30 3a 09 2f 2a 20 61 6c 6c 20 72 65 61 64 only.*/...case.0x90:./*.all.read
2bf40 20 6f 6e 6c 79 20 2a 2f 0a 09 09 63 61 73 65 20 30 78 39 43 3a 09 2f 2a 20 21 21 21 20 72 65 74 .only.*/...case.0x9C:./*.!!!.ret
2bf60 75 72 6e 65 64 20 77 68 65 6e 20 69 6e 2d 75 73 65 20 6f 72 20 72 65 61 64 2d 6f 6e 6c 79 20 62 urned.when.in-use.or.read-only.b
2bf80 79 20 4e 57 34 20 2a 2f 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d 45 50 45 52 4d 3b 0a 09 09 09 62 y.NW4.*/....error.=.-EPERM;....b
2bfa0 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 20 2d 45 reak;...case.0xFF:....error.=.-E
2bfc0 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 09 09 65 NOENT;....break;...default:....e
2bfe0 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 41 43 43 rror.=.error.<.0.?.error.:.-EACC
2c000 45 53 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 7d 0a 09 72 65 74 75 72 6e 20 65 72 72 6f 72 3b 0a ES;....break;..}..return.error;.
2c020 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6e 63 70 5f 72 65 6e 61 6d 65 28 73 74 72 75 63 74 20 }..static.int.ncp_rename(struct.
2c040 69 6e 6f 64 65 20 2a 6f 6c 64 5f 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 6f inode.*old_dir,.struct.dentry.*o
2c060 6c 64 5f 64 65 6e 74 72 79 2c 0a 09 09 20 20 20 20 20 20 73 74 72 75 63 74 20 69 6e 6f 64 65 20 ld_dentry,.........struct.inode.
2c080 2a 6e 65 77 5f 64 69 72 2c 20 73 74 72 75 63 74 20 64 65 6e 74 72 79 20 2a 6e 65 77 5f 64 65 6e *new_dir,.struct.dentry.*new_den
2c0a0 74 72 79 2c 0a 09 09 20 20 20 20 20 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 66 6c 61 67 73 29 try,.........unsigned.int.flags)
2c0c0 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 20 .{..struct.ncp_server.*server.=.
2c0e0 4e 43 50 5f 53 45 52 56 45 52 28 6f 6c 64 5f 64 69 72 29 3b 0a 09 69 6e 74 20 65 72 72 6f 72 3b NCP_SERVER(old_dir);..int.error;
2c100 0a 09 69 6e 74 20 6f 6c 64 5f 6c 65 6e 2c 20 6e 65 77 5f 6c 65 6e 3b 0a 09 5f 5f 75 38 20 5f 5f ..int.old_len,.new_len;..__u8.__
2c120 6f 6c 64 5f 6e 61 6d 65 5b 4e 43 50 5f 4d 41 58 50 41 54 48 4c 45 4e 20 2b 20 31 5d 2c 20 5f 5f old_name[NCP_MAXPATHLEN.+.1],.__
2c140 6e 65 77 5f 6e 61 6d 65 5b 4e 43 50 5f 4d 41 58 50 41 54 48 4c 45 4e 20 2b 20 31 5d 3b 0a 0a 09 new_name[NCP_MAXPATHLEN.+.1];...
2c160 69 66 20 28 66 6c 61 67 73 29 0a 09 09 72 65 74 75 72 6e 20 2d 45 49 4e 56 41 4c 3b 0a 0a 09 6e if.(flags)...return.-EINVAL;...n
2c180 63 70 5f 64 62 67 28 31 2c 20 22 25 70 64 32 20 74 6f 20 25 70 64 32 5c 6e 22 2c 20 6f 6c 64 5f cp_dbg(1,."%pd2.to.%pd2\n",.old_
2c1a0 64 65 6e 74 72 79 2c 20 6e 65 77 5f 64 65 6e 74 72 79 29 3b 0a 0a 09 6e 63 70 5f 61 67 65 5f 64 dentry,.new_dentry);...ncp_age_d
2c1c0 65 6e 74 72 79 28 73 65 72 76 65 72 2c 20 6f 6c 64 5f 64 65 6e 74 72 79 29 3b 0a 09 6e 63 70 5f entry(server,.old_dentry);..ncp_
2c1e0 61 67 65 5f 64 65 6e 74 72 79 28 73 65 72 76 65 72 2c 20 6e 65 77 5f 64 65 6e 74 72 79 29 3b 0a age_dentry(server,.new_dentry);.
2c200 0a 09 6f 6c 64 5f 6c 65 6e 20 3d 20 73 69 7a 65 6f 66 28 5f 5f 6f 6c 64 5f 6e 61 6d 65 29 3b 0a ..old_len.=.sizeof(__old_name);.
2c220 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 6f 6c .error.=.ncp_io2vol(server,.__ol
2c240 64 5f 6e 61 6d 65 2c 20 26 6f 6c 64 5f 6c 65 6e 2c 0a 09 09 09 20 20 20 6f 6c 64 5f 64 65 6e 74 d_name,.&old_len,.......old_dent
2c260 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6e 61 6d 65 2c 20 6f 6c 64 5f 64 65 6e 74 72 79 2d 3e 64 5f 6e ry->d_name.name,.old_dentry->d_n
2c280 61 6d 65 2e 6c 65 6e 2c 0a 09 09 09 20 20 20 21 6e 63 70 5f 70 72 65 73 65 72 76 65 5f 63 61 73 ame.len,.......!ncp_preserve_cas
2c2a0 65 28 6f 6c 64 5f 64 69 72 29 29 3b 0a 09 69 66 20 28 65 72 72 6f 72 29 0a 09 09 67 6f 74 6f 20 e(old_dir));..if.(error)...goto.
2c2c0 6f 75 74 3b 0a 0a 09 6e 65 77 5f 6c 65 6e 20 3d 20 73 69 7a 65 6f 66 28 5f 5f 6e 65 77 5f 6e 61 out;...new_len.=.sizeof(__new_na
2c2e0 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 65 72 76 65 72 2c me);..error.=.ncp_io2vol(server,
2c300 20 5f 5f 6e 65 77 5f 6e 61 6d 65 2c 20 26 6e 65 77 5f 6c 65 6e 2c 0a 09 09 09 20 20 20 6e 65 77 .__new_name,.&new_len,.......new
2c320 5f 64 65 6e 74 72 79 2d 3e 64 5f 6e 61 6d 65 2e 6e 61 6d 65 2c 20 6e 65 77 5f 64 65 6e 74 72 79 _dentry->d_name.name,.new_dentry
2c340 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 72 65 73 65 72 76 ->d_name.len,.......!ncp_preserv
2c360 65 5f 63 61 73 65 28 6e 65 77 5f 64 69 72 29 29 3b 0a 09 69 66 20 28 65 72 72 6f 72 29 0a 09 09 e_case(new_dir));..if.(error)...
2c380 67 6f 74 6f 20 6f 75 74 3b 0a 0a 09 65 72 72 6f 72 20 3d 20 6e 63 70 5f 72 65 6e 5f 6f 72 5f 6d goto.out;...error.=.ncp_ren_or_m
2c3a0 6f 76 5f 66 69 6c 65 5f 6f 72 5f 73 75 62 64 69 72 28 73 65 72 76 65 72 2c 20 6f 6c 64 5f 64 69 ov_file_or_subdir(server,.old_di
2c3c0 72 2c 20 5f 5f 6f 6c 64 5f 6e 61 6d 65 2c 0a 09 09 09 09 09 09 20 20 20 20 20 20 6e 65 77 5f 64 r,.__old_name,.............new_d
2c3e0 69 72 2c 20 5f 5f 6e 65 77 5f 6e 61 6d 65 29 3b 0a 23 69 66 64 65 66 20 43 4f 4e 46 49 47 5f 4e ir,.__new_name);.#ifdef.CONFIG_N
2c400 43 50 46 53 5f 53 54 52 4f 4e 47 0a 09 69 66 20 28 28 65 72 72 6f 72 20 3d 3d 20 30 78 39 30 20 CPFS_STRONG..if.((error.==.0x90.
2c420 7c 7c 20 65 72 72 6f 72 20 3d 3d 20 30 78 38 42 20 7c 7c 20 65 72 72 6f 72 20 3d 3d 20 2d 45 41 ||.error.==.0x8B.||.error.==.-EA
2c440 43 43 45 53 29 20 26 26 0a 09 09 09 73 65 72 76 65 72 2d 3e 6d 2e 66 6c 61 67 73 20 26 20 4e 43 CCES).&&....server->m.flags.&.NC
2c460 50 5f 4d 4f 55 4e 54 5f 53 54 52 4f 4e 47 29 20 7b 09 2f 2a 20 52 4f 20 2a 2f 0a 09 09 65 72 72 P_MOUNT_STRONG).{./*.RO.*/...err
2c480 6f 72 20 3d 20 6e 63 70 5f 66 6f 72 63 65 5f 72 65 6e 61 6d 65 28 6f 6c 64 5f 64 69 72 2c 20 6f or.=.ncp_force_rename(old_dir,.o
2c4a0 6c 64 5f 64 65 6e 74 72 79 2c 20 5f 5f 6f 6c 64 5f 6e 61 6d 65 2c 0a 09 09 09 09 09 20 6e 65 77 ld_dentry,.__old_name,.......new
2c4c0 5f 64 69 72 2c 20 6e 65 77 5f 64 65 6e 74 72 79 2c 20 5f 5f 6e 65 77 5f 6e 61 6d 65 29 3b 0a 09 _dir,.new_dentry,.__new_name);..
2c4e0 7d 0a 23 65 6e 64 69 66 0a 09 73 77 69 74 63 68 20 28 65 72 72 6f 72 29 20 7b 0a 09 09 63 61 73 }.#endif..switch.(error).{...cas
2c500 65 20 30 78 30 30 3a 0a 09 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 72 65 6e 61 6d 65 64 20 25 e.0x00:....ncp_dbg(1,."renamed.%
2c520 70 64 20 2d 3e 20 25 70 64 5c 6e 22 2c 0a 09 09 09 09 6f 6c 64 5f 64 65 6e 74 72 79 2c 20 6e 65 pd.->.%pd\n",.....old_dentry,.ne
2c540 77 5f 64 65 6e 74 72 79 29 3b 0a 09 09 09 6e 63 70 5f 64 5f 70 72 75 6e 65 28 6f 6c 64 5f 64 65 w_dentry);....ncp_d_prune(old_de
2c560 6e 74 72 79 29 3b 0a 09 09 09 6e 63 70 5f 64 5f 70 72 75 6e 65 28 6e 65 77 5f 64 65 6e 74 72 79 ntry);....ncp_d_prune(new_dentry
2c580 29 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 63 61 73 65 20 30 78 39 45 3a 0a 09 09 09 65 72 72 );....break;...case.0x9E:....err
2c5a0 6f 72 20 3d 20 2d 45 4e 41 4d 45 54 4f 4f 4c 4f 4e 47 3b 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 or.=.-ENAMETOOLONG;....break;...
2c5c0 63 61 73 65 20 30 78 46 46 3a 0a 09 09 09 65 72 72 6f 72 20 3d 20 2d 45 4e 4f 45 4e 54 3b 0a 09 case.0xFF:....error.=.-ENOENT;..
2c5e0 09 09 62 72 65 61 6b 3b 0a 09 09 64 65 66 61 75 6c 74 3a 0a 09 09 09 65 72 72 6f 72 20 3d 20 65 ..break;...default:....error.=.e
2c600 72 72 6f 72 20 3c 20 30 20 3f 20 65 72 72 6f 72 20 3a 20 2d 45 41 43 43 45 53 3b 0a 09 09 09 62 rror.<.0.?.error.:.-EACCES;....b
2c620 72 65 61 6b 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 0a reak;..}.out:..return.error;.}..
2c640 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
2c660 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,.
2c680 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)
2c6a0 0a 7b 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 45 .{..if.(ncp_is_nfs_extras(NCP_SE
2c6c0 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 75 RVER(dir),.NCP_FINFO(dir)->volNu
2c6e0 6d 62 65 72 29 29 20 7b 0a 09 09 6e 63 70 5f 64 62 67 28 31 2c 20 22 6d 6f 64 65 20 3d 20 30 25 mber)).{...ncp_dbg(1,."mode.=.0%
2c700 68 6f 5c 6e 22 2c 20 6d 6f 64 65 29 3b 0a 09 09 72 65 74 75 72 6e 20 6e 63 70 5f 63 72 65 61 74 ho\n",.mode);...return.ncp_creat
2c720 65 5f 6e 65 77 28 64 69 72 2c 20 64 65 6e 74 72 79 2c 20 6d 6f 64 65 2c 20 72 64 65 76 2c 20 30 e_new(dir,.dentry,.mode,.rdev,.0
2c740 29 3b 0a 09 7d 0a 09 72 65 74 75 72 6e 20 2d 45 50 45 52 4d 3b 20 2f 2a 20 53 74 72 61 6e 67 65 );..}..return.-EPERM;./*.Strange
2c760 2c 20 62 75 74 20 74 72 75 65 20 2a 2f 0a 7d 0a 0a 2f 2a 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e ,.but.true.*/.}../*.The.followin
2c780 67 20 72 6f 75 74 69 6e 65 73 20 61 72 65 20 74 61 6b 65 6e 20 64 69 72 65 63 74 6c 79 20 66 72 g.routines.are.taken.directly.fr
2c7a0 6f 6d 20 6d 73 64 6f 73 2d 66 73 20 2a 2f 0a 0a 2f 2a 20 4c 69 6e 65 61 72 20 64 61 79 20 6e 75 om.msdos-fs.*/../*.Linear.day.nu
2c7c0 6d 62 65 72 73 20 6f 66 20 74 68 65 20 72 65 73 70 65 63 74 69 76 65 20 31 73 74 73 20 69 6e 20 mbers.of.the.respective.1sts.in.
2c7e0 6e 6f 6e 2d 6c 65 61 70 20 79 65 61 72 73 2e 20 2a 2f 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 64 non-leap.years..*/..static.int.d
2c800 61 79 5f 6e 5b 5d 20 3d 0a 7b 30 2c 20 33 31 2c 20 35 39 2c 20 39 30 2c 20 31 32 30 2c 20 31 35 ay_n[].=.{0,.31,.59,.90,.120,.15
2c820 31 2c 20 31 38 31 2c 20 32 31 32 2c 20 32 34 33 2c 20 32 37 33 2c 20 33 30 34 2c 20 33 33 34 2c 1,.181,.212,.243,.273,.304,.334,
2c840 20 30 2c 20 30 2c 20 30 2c 20 30 7d 3b 0a 2f 2a 20 4a 61 6e 20 46 65 62 20 4d 61 72 20 41 70 72 .0,.0,.0,.0};./*.Jan.Feb.Mar.Apr
2c860 20 4d 61 79 20 4a 75 6e 20 4a 75 6c 20 41 75 67 20 53 65 70 20 4f 63 74 20 4e 6f 76 20 44 65 63 .May.Jun.Jul.Aug.Sep.Oct.Nov.Dec
2c880 20 2a 2f 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 75 74 63 32 6c 6f 63 61 6c 28 69 6e 74 20 74 69 .*/..static.int.utc2local(int.ti
2c8a0 6d 65 29 0a 7b 0a 09 72 65 74 75 72 6e 20 74 69 6d 65 20 2d 20 73 79 73 5f 74 7a 2e 74 7a 5f 6d me).{..return.time.-.sys_tz.tz_m
2c8c0 69 6e 75 74 65 73 77 65 73 74 20 2a 20 36 30 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6c inuteswest.*.60;.}..static.int.l
2c8e0 6f 63 61 6c 32 75 74 63 28 69 6e 74 20 74 69 6d 65 29 0a 7b 0a 09 72 65 74 75 72 6e 20 74 69 6d ocal2utc(int.time).{..return.tim
2c900 65 20 2b 20 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 e.+.sys_tz.tz_minuteswest.*.60;.
2c920 7d 0a 0a 2f 2a 20 43 6f 6e 76 65 72 74 20 61 20 4d 53 2d 44 4f 53 20 74 69 6d 65 2f 64 61 74 65 }../*.Convert.a.MS-DOS.time/date
2c940 20 70 61 69 72 20 74 6f 20 61 20 55 4e 49 58 20 64 61 74 65 20 28 73 65 63 6f 6e 64 73 20 73 69 .pair.to.a.UNIX.date.(seconds.si
2c960 6e 63 65 20 31 20 31 20 37 30 29 2e 20 2a 2f 0a 69 6e 74 0a 6e 63 70 5f 64 61 74 65 5f 64 6f 73 nce.1.1.70)..*/.int.ncp_date_dos
2c980 32 75 6e 69 78 28 5f 5f 6c 65 31 36 20 74 2c 20 5f 5f 6c 65 31 36 20 64 29 0a 7b 0a 09 75 6e 73 2unix(__le16.t,.__le16.d).{..uns
2c9a0 69 67 6e 65 64 20 73 68 6f 72 74 20 74 69 6d 65 20 3d 20 6c 65 31 36 5f 74 6f 5f 63 70 75 28 74 igned.short.time.=.le16_to_cpu(t
2c9c0 29 2c 20 64 61 74 65 20 3d 20 6c 65 31 36 5f 74 6f 5f 63 70 75 28 64 29 3b 0a 09 69 6e 74 20 6d ),.date.=.le16_to_cpu(d);..int.m
2c9e0 6f 6e 74 68 2c 20 79 65 61 72 2c 20 73 65 63 73 3b 0a 0a 09 2f 2a 20 66 69 72 73 74 20 73 75 62 onth,.year,.secs;.../*.first.sub
2ca00 74 72 61 63 74 20 61 6e 64 20 6d 61 73 6b 20 61 66 74 65 72 20 74 68 61 74 2e 2e 2e 20 4f 74 68 tract.and.mask.after.that....Oth
2ca20 65 72 77 69 73 65 2c 20 69 66 0a 09 20 20 20 64 61 74 65 20 3d 3d 20 30 2c 20 62 61 64 20 74 68 erwise,.if.....date.==.0,.bad.th
2ca40 69 6e 67 73 20 68 61 70 70 65 6e 20 2a 2f 0a 09 6d 6f 6e 74 68 20 3d 20 28 28 64 61 74 65 20 3e ings.happen.*/..month.=.((date.>
2ca60 3e 20 35 29 20 2d 20 31 29 20 26 20 31 35 3b 0a 09 79 65 61 72 20 3d 20 64 61 74 65 20 3e 3e 20 >.5).-.1).&.15;..year.=.date.>>.
2ca80 39 3b 0a 09 73 65 63 73 20 3d 20 28 74 69 6d 65 20 26 20 33 31 29 20 2a 20 32 20 2b 20 36 30 20 9;..secs.=.(time.&.31).*.2.+.60.
2caa0 2a 20 28 28 74 69 6d 65 20 3e 3e 20 35 29 20 26 20 36 33 29 20 2b 20 28 74 69 6d 65 20 3e 3e 20 *.((time.>>.5).&.63).+.(time.>>.
2cac0 31 31 29 20 2a 20 33 36 30 30 20 2b 0a 09 09 38 36 34 30 30 20 2a 20 28 28 64 61 74 65 20 26 20 11).*.3600.+...86400.*.((date.&.
2cae0 33 31 29 20 2d 20 31 20 2b 20 64 61 79 5f 6e 5b 6d 6f 6e 74 68 5d 20 2b 20 28 79 65 61 72 20 2f 31).-.1.+.day_n[month].+.(year./
2cb00 20 34 29 20 2b 20 0a 09 09 79 65 61 72 20 2a 20 33 36 35 20 2d 20 28 28 79 65 61 72 20 26 20 33 .4).+....year.*.365.-.((year.&.3
2cb20 29 20 3d 3d 20 30 20 26 26 20 6d 6f 6e 74 68 20 3c 20 32 20 3f 20 31 20 3a 20 30 29 20 2b 20 33 ).==.0.&&.month.<.2.?.1.:.0).+.3
2cb40 36 35 33 29 3b 0a 09 2f 2a 20 64 61 79 73 20 73 69 6e 63 65 20 31 2e 31 2e 37 30 20 70 6c 75 73 653);../*.days.since.1.1.70.plus
2cb60 20 38 30 27 73 20 6c 65 61 70 20 64 61 79 20 2a 2f 0a 09 72 65 74 75 72 6e 20 6c 6f 63 61 6c 32 .80's.leap.day.*/..return.local2
2cb80 75 74 63 28 73 65 63 73 29 3b 0a 7d 0a 0a 0a 2f 2a 20 43 6f 6e 76 65 72 74 20 6c 69 6e 65 61 72 utc(secs);.}.../*.Convert.linear
2cba0 20 55 4e 49 58 20 64 61 74 65 20 74 6f 20 61 20 4d 53 2d 44 4f 53 20 74 69 6d 65 2f 64 61 74 65 .UNIX.date.to.a.MS-DOS.time/date
2cbc0 20 70 61 69 72 2e 20 2a 2f 0a 76 6f 69 64 0a 6e 63 70 5f 64 61 74 65 5f 75 6e 69 78 32 64 6f 73 .pair..*/.void.ncp_date_unix2dos
2cbe0 28 69 6e 74 20 75 6e 69 78 5f 64 61 74 65 2c 20 5f 5f 6c 65 31 36 20 2a 74 69 6d 65 2c 20 5f 5f (int.unix_date,.__le16.*time,.__
2cc00 6c 65 31 36 20 2a 64 61 74 65 29 0a 7b 0a 09 69 6e 74 20 64 61 79 2c 20 79 65 61 72 2c 20 6e 6c le16.*date).{..int.day,.year,.nl
2cc20 5f 64 61 79 2c 20 6d 6f 6e 74 68 3b 0a 0a 09 75 6e 69 78 5f 64 61 74 65 20 3d 20 75 74 63 32 6c _day,.month;...unix_date.=.utc2l
2cc40 6f 63 61 6c 28 75 6e 69 78 5f 64 61 74 65 29 3b 0a 09 2a 74 69 6d 65 20 3d 20 63 70 75 5f 74 6f ocal(unix_date);..*time.=.cpu_to
2cc60 5f 6c 65 31 36 28 0a 09 09 28 75 6e 69 78 5f 64 61 74 65 20 25 20 36 30 29 20 2f 20 32 20 2b 20 _le16(...(unix_date.%.60)./.2.+.
2cc80 28 28 28 75 6e 69 78 5f 64 61 74 65 20 2f 20 36 30 29 20 25 20 36 30 29 20 3c 3c 20 35 29 20 2b (((unix_date./.60).%.60).<<.5).+
2cca0 0a 09 09 28 28 28 75 6e 69 78 5f 64 61 74 65 20 2f 20 33 36 30 30 29 20 25 20 32 34 29 20 3c 3c ...(((unix_date./.3600).%.24).<<
2ccc0 20 31 31 29 29 3b 0a 09 64 61 79 20 3d 20 75 6e 69 78 5f 64 61 74 65 20 2f 20 38 36 34 30 30 20 .11));..day.=.unix_date./.86400.
2cce0 2d 20 33 36 35 32 3b 0a 09 79 65 61 72 20 3d 20 64 61 79 20 2f 20 33 36 35 3b 0a 09 69 66 20 28 -.3652;..year.=.day./.365;..if.(
2cd00 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 20 3e 20 64 61 (year.+.3)./.4.+.365.*.year.>.da
2cd20 79 29 0a 09 09 79 65 61 72 2d 2d 3b 0a 09 64 61 79 20 2d 3d 20 28 79 65 61 72 20 2b 20 33 29 20 y)...year--;..day.-=.(year.+.3).
2cd40 2f 20 34 20 2b 20 33 36 35 20 2a 20 79 65 61 72 3b 0a 09 69 66 20 28 64 61 79 20 3d 3d 20 35 39 /.4.+.365.*.year;..if.(day.==.59
2cd60 20 26 26 20 21 28 79 65 61 72 20 26 20 33 29 29 20 7b 0a 09 09 6e 6c 5f 64 61 79 20 3d 20 64 61 .&&.!(year.&.3)).{...nl_day.=.da
2cd80 79 3b 0a 09 09 6d 6f 6e 74 68 20 3d 20 32 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 6e 6c 5f 64 y;...month.=.2;..}.else.{...nl_d
2cda0 61 79 20 3d 20 28 79 65 61 72 20 26 20 33 29 20 7c 7c 20 64 61 79 20 3c 3d 20 35 39 20 3f 20 64 ay.=.(year.&.3).||.day.<=.59.?.d
2cdc0 61 79 20 3a 20 64 61 79 20 2d 20 31 3b 0a 09 09 66 6f 72 20 28 6d 6f 6e 74 68 20 3d 20 31 3b 20 ay.:.day.-.1;...for.(month.=.1;.
2cde0 6d 6f 6e 74 68 20 3c 20 31 32 3b 20 6d 6f 6e 74 68 2b 2b 29 0a 09 09 09 69 66 20 28 64 61 79 5f month.<.12;.month++)....if.(day_
2ce00 6e 5b 6d 6f 6e 74 68 5d 20 3e 20 6e 6c 5f 64 61 79 29 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 7d n[month].>.nl_day).....break;..}
2ce20 0a 09 2a 64 61 74 65 20 3d 20 63 70 75 5f 74 6f 5f 6c 65 31 36 28 6e 6c 5f 64 61 79 20 2d 20 64 ..*date.=.cpu_to_le16(nl_day.-.d
2ce40 61 79 5f 6e 5b 6d 6f 6e 74 68 20 2d 20 31 5d 20 2b 20 31 20 2b 20 28 6d 6f 6e 74 68 20 3c 3c 20 ay_n[month.-.1].+.1.+.(month.<<.
2ce60 35 29 20 2b 20 28 79 65 61 72 20 3c 3c 20 39 29 29 3b 0a 7d 0a 00 00 00 00 00 00 00 00 00 00 00 5).+.(year.<<.9));.}............
2ce80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cf00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cf20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cf40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cf60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cf80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cfa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cfc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cfe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d000 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....................
2d020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d060 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
2d080 30 30 31 33 34 30 37 00 31 33 31 32 32 34 32 34 31 30 30 00 30 31 31 37 34 32 00 20 30 00 00 00 0013407.13122424100.011742..0...
2d0a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d0e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d100 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
2d120 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
2d140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d200 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.(
2d220 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
2d240 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
2d260 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
2d280 20 66 6f 72 20 32 2e 31 20 64 63 61 63 68 65 0a 20 2a 0a 20 2a 2f 0a 0a 0a 23 64 65 66 69 6e 65 .for.2.1.dcache..*..*/...#define
2d2a0 20 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 .pr_fmt(fmt).KBUILD_MODNAME.":."
2d2c0 20 66 6d 74 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 6c 69 6e 75 78 2f 75 61 63 63 65 73 73 2e 68 3e .fmt..#include.<linux/uaccess.h>
2d2e0 0a 0a 23 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 ..#include.<linux/time.h>.#inclu
2d300 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 75 64 65 20 3c 6c 69 de.<linux/kernel.h>.#include.<li
2d320 6e 75 78 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 nux/errno.h>.#include.<linux/fcn
2d340 74 6c 2e 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 tl.h>.#include.<linux/stat.h>.#i
2d360 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
2d380 6e 75 78 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 nux/vmalloc.h>.#include.<linux/s
2d3a0 63 68 65 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 ched.h>..#include."ncp_fs.h"..st
2d3c0 61 74 69 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 atic.int.ncp_fsync(struct.file.*
2d3e0 66 69 6c 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 file,.loff_t.start,.loff_t.end,.
2d400 69 6e 74 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 int.datasync).{..return.filemap_
2d420 77 72 69 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 write_and_wait_range(file->f_map
2d440 70 69 6e 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 ping,.start,.end);.}../*..*.Open
2d460 20 61 20 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 .a.file.with.the.specified.read/
2d480 77 72 69 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 write.mode...*/.int.ncp_make_ope
2d4a0 6e 28 73 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 n(struct.inode.*inode,.int.right
2d4c0 29 0a 7b 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 ).{..int.error;..int.access;...e
2d4e0 72 72 6f 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 rror.=.-EINVAL;..if.(!inode).{..
2d500 09 70 72 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 .pr_err("%s:.got.NULL.inode\n",.
2d520 5f 5f 66 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 __func__);...goto.out;..}...ncp_
2d540 64 62 67 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 dbg(1,."opened=%d,.volume.#.%u,.
2d560 64 69 72 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 dir.entry.#.%u\n",...atomic_read
2d580 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 2c 20 0a 09 09 (&NCP_FINFO(inode)->opened),....
2d5a0 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 20 0a 09 09 NCP_FINFO(inode)->volNumber,....
2d5c0 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 09 65 NCP_FINFO(inode)->dirEntNum);..e
2d5e0 72 72 6f 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 rror.=.-EACCES;..mutex_lock(&NCP
2d600 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 09 69 66 20 _FINFO(inode)->open_mutex);..if.
2d620 28 21 61 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 (!atomic_read(&NCP_FINFO(inode)-
2d640 3e 6f 70 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 >opened)).{...struct.ncp_entry_i
2d660 6e 66 6f 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 nfo.finfo;...int.result;..../*.t
2d680 72 69 65 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 ries.max..rights.*/...finfo.acce
2d6a0 73 73 20 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 ss.=.O_RDWR;...result.=.ncp_open
2d6c0 5f 63 72 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 _create_file_or_subdir(NCP_SERVE
2d6e0 52 28 69 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 R(inode),......inode,.NULL,.OC_M
2d700 4f 44 45 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 ODE_OPEN,......0,.AR_READ.|.AR_W
2d720 52 49 54 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 RITE,.&finfo);...if.(!result)...
2d740 09 67 6f 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 .goto.update;.../*.RDWR.did.not.
2d760 73 75 63 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 succeeded,.try.readonly.or.write
2d780 6f 6e 6c 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 only.as.requested.*/...switch.(r
2d7a0 69 67 68 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 ight).{....case.O_RDONLY:.....fi
2d7c0 6e 66 6f 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 nfo.access.=.O_RDONLY;.....resul
2d7e0 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 6f 72 5f 73 75 62 64 t.=.ncp_open_create_file_or_subd
2d800 69 72 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 69 6e 6f 64 65 ir(NCP_SERVER(inode),......inode
2d820 2c 20 4e 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 ,.NULL,.OC_MODE_OPEN,......0,.AR
2d840 5f 52 45 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 _READ,.&finfo);.....break;....ca
2d860 73 65 20 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 se.O_WRONLY:.....finfo.access.=.
2d880 4f 5f 57 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 O_WRONLY;.....result.=.ncp_open_
2d8a0 63 72 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 create_file_or_subdir(NCP_SERVER
2d8c0 28 69 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 (inode),......inode,.NULL,.OC_MO
2d8e0 44 45 5f 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 DE_OPEN,......0,.AR_WRITE,.&finf
2d900 6f 29 3b 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 o);.....break;...}...if.(result)
2d920 20 7b 0a 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 .{....ncp_vdbg("failed,.result=%
2d940 64 5c 6e 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 d\n",.result);....goto.out_unloc
2d960 6b 3b 0a 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 k;...}.../*....*.Update.the.inod
2d980 65 20 69 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 e.information.....*/..update:...
2d9a0 6e 63 70 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 ncp_update_inode(inode,.&finfo);
2d9c0 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 29 2d ...atomic_set(&NCP_FINFO(inode)-
2d9e0 3e 6f 70 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 >opened,.1);..}...access.=.NCP_F
2da00 49 4e 46 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 INFO(inode)->access;..ncp_vdbg("
2da20 66 69 6c 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 file.open,.access=%x\n",.access)
2da40 3b 0a 09 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 ;..if.(access.==.right.||.access
2da60 20 3d 3d 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 .==.O_RDWR).{...atomic_inc(&NCP_
2da80 46 49 4e 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 FINFO(inode)->opened);...error.=
2daa0 20 30 3b 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 .0;..}..out_unlock:..mutex_unloc
2dac0 6b 28 26 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 k(&NCP_FINFO(inode)->open_mutex)
2dae0 3b 0a 6f 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 ;.out:..return.error;.}..static.
2db00 73 73 69 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 ssize_t.ncp_file_read_iter(struc
2db20 74 20 6b 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 t.kiocb.*iocb,.struct.iov_iter.*
2db40 74 6f 29 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 to).{..struct.file.*file.=.iocb-
2db60 3e 6b 69 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 >ki_filp;..struct.inode.*inode.=
2db80 20 66 69 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 .file_inode(file);..size_t.alrea
2dba0 64 79 5f 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 dy_read.=.0;..off_t.pos.=.iocb->
2dbc0 6b 69 5f 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 ki_pos;..size_t.bufsize;..int.er
2dbe0 72 6f 72 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 ror;..void.*freepage;..size_t.fr
2dc00 65 65 6c 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 eelen;...ncp_dbg(1,."enter.%pD2\
2dc20 6e 22 2c 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 n",.file);...if.(!iov_iter_count
2dc40 28 74 6f 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 (to))...return.0;..if.(pos.>.ino
2dc60 64 65 2d 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 de->i_sb->s_maxbytes)...return.0
2dc80 3b 0a 09 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 ;..iov_iter_truncate(to,.inode->
2dca0 69 5f 73 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 i_sb->s_maxbytes.-.pos);...error
2dcc0 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 52 44 4f 4e 4c 59 .=.ncp_make_open(inode,.O_RDONLY
2dce0 29 3b 0a 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 );..if.(error).{...ncp_dbg(1,."o
2dd00 70 65 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 6f 72 29 3b pen.failed,.error=%d\n",.error);
2dd20 0a 09 09 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 ...return.error;..}...bufsize.=.
2dd40 4e 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 NCP_SERVER(inode)->buffer_size;.
2dd60 0a 09 65 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 ..error.=.-EIO;..freelen.=.ncp_r
2dd80 65 61 64 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 ead_bounce_size(bufsize);..freep
2dda0 61 67 65 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 age.=.vmalloc(freelen);..if.(!fr
2ddc0 65 65 70 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 eepage)...goto.outrel;..error.=.
2dde0 30 3b 0a 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 0;../*.First.read.in.as.much.as.
2de00 70 6f 73 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 possible.for.each.bufsize..*/..w
2de20 68 69 6c 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 hile.(iov_iter_count(to)).{...in
2de40 74 20 72 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 t.read_this_time;...size_t.to_re
2de60 61 64 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 62 75 66 73 ad.=.min_t(size_t,..........bufs
2de80 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 20 ize.-.(pos.%.bufsize),..........
2dea0 69 6f 76 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 iov_iter_count(to));....error.=.
2dec0 6e 63 70 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 ncp_read_bounce(NCP_SERVER(inode
2dee0 29 2c 0a 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 ),......NCP_FINFO(inode)->file_h
2df00 61 6e 64 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 andle,.....pos,.to_read,.to,.&re
2df20 61 64 5f 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 ad_this_time,......freepage,.fre
2df40 65 6c 65 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 elen);...if.(error).{....error.=
2df60 20 2d 45 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 .-EIO;./*.NW.errno.->.Linux.errn
2df80 6f 20 2a 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 o.*/....break;...}...pos.+=.read
2dfa0 5f 74 68 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 _this_time;...already_read.+=.re
2dfc0 61 64 5f 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 ad_this_time;....if.(read_this_t
2dfe0 69 6d 65 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 ime.!=.to_read)....break;..}..vf
2e000 72 65 65 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 ree(freepage);...iocb->ki_pos.=.
2e020 70 6f 73 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 pos;...file_accessed(file);...nc
2e040 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
2e060 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);.
2e080 09 0a 09 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 ...return.already_read.?.already
2e0a0 5f 72 65 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 _read.:.error;.}..static.ssize_t
2e0c0 0a 6e 63 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 .ncp_file_write_iter(struct.kioc
2e0e0 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 66 72 6f 6d 29 0a b.*iocb,.struct.iov_iter.*from).
2e100 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 5f {..struct.file.*file.=.iocb->ki_
2e120 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 6c filp;..struct.inode.*inode.=.fil
2e140 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 77 e_inode(file);..size_t.already_w
2e160 72 69 74 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 ritten.=.0;..size_t.bufsize;..in
2e180 74 20 65 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 t.errno;..void.*bouncebuffer;..o
2e1a0 66 66 5f 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 ff_t.pos;...ncp_dbg(1,."enter.%p
2e1c0 44 32 5c 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 D2\n",.file);..errno.=.generic_w
2e1e0 72 69 74 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 rite_checks(iocb,.from);..if.(er
2e200 72 6e 6f 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 rno.<=.0)...return.errno;...errn
2e220 6f 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 4c o.=.ncp_make_open(inode,.O_WRONL
2e240 59 29 3b 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 Y);..if.(errno).{...ncp_dbg(1,."
2e260 6f 70 65 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 open.failed,.error=%d\n",.errno)
2e280 3b 0a 09 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 ;...return.errno;..}..bufsize.=.
2e2a0 4e 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 NCP_SERVER(inode)->buffer_size;.
2e2c0 0a 09 65 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 ..errno.=.file_update_time(file)
2e2e0 3b 0a 09 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 ;..if.(errno)...goto.outrel;...b
2e300 6f 75 6e 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 ouncebuffer.=.vmalloc(bufsize);.
2e320 09 69 66 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 .if.(!bouncebuffer).{...errno.=.
2e340 2d 45 49 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 -EIO;./*.-ENOMEM.*/...goto.outre
2e360 6c 3b 0a 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 l;..}..pos.=.iocb->ki_pos;..whil
2e380 65 20 28 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 e.(iov_iter_count(from)).{...int
2e3a0 20 77 72 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 .written_this_time;...size_t.to_
2e3c0 77 72 69 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 write.=.min_t(size_t,...........
2e3e0 62 75 66 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 bufsize.-.(pos.%.bufsize),......
2e400 20 20 20 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 .....iov_iter_count(from));....i
2e420 66 20 28 21 63 6f 70 79 5f 66 72 6f 6d 5f 69 74 65 72 5f 66 75 6c 6c 28 62 6f 75 6e 63 65 62 75 f.(!copy_from_iter_full(bouncebu
2e440 66 66 65 72 2c 20 74 6f 5f 77 72 69 74 65 2c 20 66 72 6f 6d 29 29 20 7b 0a 09 09 09 65 72 72 6e ffer,.to_write,.from)).{....errn
2e460 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 69 66 20 o.=.-EFAULT;....break;...}...if.
2e480 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 69 6e 6f (ncp_write_kernel(NCP_SERVER(ino
2e4a0 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 3e 66 69 de),........NCP_FINFO(inode)->fi
2e4c0 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 65 2c 20 le_handle,.......pos,.to_write,.
2e4e0 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 69 6d 65 bouncebuffer,.&written_this_time
2e500 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 09 62 72 ).!=.0).{....errno.=.-EIO;....br
2e520 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 73 5f 74 eak;...}...pos.+=.written_this_t
2e540 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 74 74 65 ime;...already_written.+=.writte
2e560 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 68 69 73 n_this_time;....if.(written_this
2e580 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 09 7d 0a _time.!=.to_write)....break;..}.
2e5a0 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 3e 6b 69 .vfree(bouncebuffer);...iocb->ki
2e5c0 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 65 5f 72 _pos.=.pos;...if.(pos.>.i_size_r
2e5e0 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 6f 64 65 ead(inode)).{...inode_lock(inode
2e600 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 6f 64 65 );...if.(pos.>.i_size_read(inode
2e620 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 29 3b 0a ))....i_size_write(inode,.pos);.
2e640 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 70 5f 64 ..inode_unlock(inode);..}..ncp_d
2e660 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
2e680 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);....
2e6a0 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 61 64 79 return.already_written.?.already
2e6c0 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 6e 74 20 _written.:.errno;.}..static.int.
2e6e0 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 64 65 2c ncp_release(struct.inode.*inode,
2e700 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 70 5f 6d .struct.file.*file).{..if.(ncp_m
2e720 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 67 28 31 ake_closed(inode)).{...ncp_dbg(1
2e740 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 65 74 75 ,."failed.to.close\n");..}..retu
2e760 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 65 72 61 rn.0;.}..const.struct.file_opera
2e780 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 0a 09 2e tions.ncp_file_operations.=.{...
2e7a0 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 2c 0a 09 llseek..=.generic_file_llseek,..
2e7c0 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 65 72 2c .read_iter.=.ncp_file_read_iter,
2e7e0 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 65 5f 69 ...write_iter.=.ncp_file_write_i
2e800 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 6f 63 74 ter,...unlocked_ioctl.=.ncp_ioct
2e820 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 70 61 74 l,.#ifdef.CONFIG_COMPAT...compat
2e840 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 6e 64 69 _ioctl.=.ncp_compat_ioctl,.#endi
2e860 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 73 65 09 f...mmap..=.ncp_mmap,...release.
2e880 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 5f 66 73 =.ncp_release,...fsync..=.ncp_fs
2e8a0 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 70 65 72 ync,.};..const.struct.inode_oper
2e8c0 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 6f 6e 73 ations.ncp_file_inode_operations
2e8e0 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 68 61 6e .=.{...setattr.=.ncp_notify_chan
2e900 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 00 00 00 ge,.};..........................
2e920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e9c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e9e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ea00 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..................
2ea20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ea40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ea60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
2ea80 30 30 30 33 35 34 31 00 31 33 31 32 32 34 32 34 31 31 32 00 30 31 32 33 32 36 00 20 30 00 00 00 0003541.13122424112.012326..0...
2eaa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2eac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2eae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2eb00 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
2eb20 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
2eb40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2eb60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2eb80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2eba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ebc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ebe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ec00 2f 2a 0a 20 2a 20 67 65 74 6f 70 74 2e 63 0a 20 2a 2f 0a 0a 0a 23 64 65 66 69 6e 65 20 70 72 5f /*..*.getopt.c..*/...#define.pr_
2ec20 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 6d 74 fmt(fmt).KBUILD_MODNAME.":.".fmt
2ec40 0a 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 ..#include.<linux/kernel.h>.#inc
2ec60 6c 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 lude.<linux/string.h>..#include.
2ec80 3c 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 <asm/errno.h>..#include."getopt.
2eca0 68 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 h"../**..*.ncp_getopt.-.option.p
2ecc0 61 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 arser..*.@caller:.name.of.the.ca
2ece0 6c 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 ller,.for.error.messages..*.@opt
2ed00 69 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 ions:.the.options.string..*.@opt
2ed20 73 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 s:.an.array.of.&struct.option.en
2ed40 74 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 tries.controlling.parser.operati
2ed60 6f 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 ons..*.@optopt:.output;.will.con
2ed80 74 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 tain.the.current.option..*.@opta
2eda0 72 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 rg:.output;.will.contain.the.val
2edc0 75 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 ue.(if.one.exists)..*.@value:.ou
2ede0 74 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 tput;.may.be.NULL;.will.be.overw
2ee00 72 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 ritten.with.the.integer.value..*
2ee20 09 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 ..of.the.current.argument...*..*
2ee40 09 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 .Helper.to.parse.options.on.the.
2ee60 66 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 format.used.by.mount.("a=b,c=d,e
2ee80 2c 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 ,f")...*.Returns.opts->val.if.a.
2eea0 6d 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 matching.entry.in.the.'opts'.arr
2eec0 61 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 ay.is.found,..*.0.when.no.more.t
2eee0 6f 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 okens.are.found,.-1.if.an.error.
2ef00 69 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 is.encountered...*/.int.ncp_geto
2ef20 70 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 pt(const.char.*caller,.char.**op
2ef40 74 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 tions,.const.struct.ncp_option.*
2ef60 6f 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 opts,.........char.**optopt,.cha
2ef80 72 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 r.**optarg,.unsigned.long.*value
2efa0 29 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 ).{..char.*token;..char.*val;...
2efc0 64 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 do.{...if.((token.=.strsep(optio
2efe0 6e 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 ns,.",")).==.NULL)....return.0;.
2f000 09 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 .}.while.(*token.==.'\0');..if.(
2f020 6f 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 optopt)...*optopt.=.token;...if.
2f040 28 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 ((val.=.strchr.(token,.'=')).!=.
2f060 4e 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 NULL).{...*val++.=.0;..}..*optar
2f080 67 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 g.=.val;..for.(;.opts->name;.opt
2f0a0 73 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 s++).{...if.(!strcmp(opts->name,
2f0c0 20 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 .token)).{....if.(!val).{.....if
2f0e0 20 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 .(opts->has_arg.&.OPT_NOPARAM).{
2f100 0a 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 ......return.opts->val;.....}...
2f120 09 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 ..pr_info("%s:.the.%s.option.req
2f140 75 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 uires.an.argument\n",......calle
2f160 72 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 r,.token);.....return.-EINVAL;..
2f180 09 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 ..}....if.(opts->has_arg.&.OPT_I
2f1a0 4e 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 NT).{.....int.rc.=.kstrtoul(val,
2f1c0 20 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 .0,.value);......if.(rc).{......
2f1e0 70 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 pr_info("%s:.invalid.numeric.val
2f200 75 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 ue.in.%s=%s\n",.......caller,.to
2f220 6b 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 ken,.val);......return.rc;.....}
2f240 0a 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 .....return.opts->val;....}....i
2f260 66 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 f.(opts->has_arg.&.OPT_STRING).{
2f280 0a 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 .....return.opts->val;....}....p
2f2a0 72 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 r_info("%s:.unexpected.argument.
2f2c0 25 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 %s.to.the.%s.option\n",.....call
2f2e0 65 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 er,.val,.token);....return.-EINV
2f300 41 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 AL;...}..}..pr_info("%s:.Unrecog
2f320 6e 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 nized.mount.option.%s\n",.caller
2f340 2c 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 ,.token);..return.-EOPNOTSUPP;.}
2f360 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 ................................
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 ................................