ofs | hex dump | ascii |
---|
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(¤t->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(¤t->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 | ................................ |