Inheritance: Snarf.Udp.UdpPacket
Ejemplo n.º 1
0
        protected override void OnPacketReceived(byte[] bytes, IPEndPoint receivedFrom)
        {
            var datagram = new DatagramPacket(bytes, bytes.Length, receivedFrom);
            var packet = new NfsPacket(datagram);
            var e = new UdpPacketReceivedEventArgs(packet, receivedFrom);

            //Console.WriteLine("\nPacket Received : EndPoint: " + _listener.Client.Client.LocalEndPoint.ToString());

            uint xId = packet.XID = packet.GetUInt();
            uint type = packet.GetUInt();

            if (type == (int)RpcSignalType.Call) {
                Call(ref packet, xId);
            }
            else if (type == (int)RpcSignalType.Reply) {
                Reply(ref packet, xId);
            }

            //RaisePacketReceived(e);

            if (packet.ProgramID == this.ProgramID) {
                //Console.WriteLine("Found program: " + packet.ProgramID);
                Process(packet, receivedFrom);
            }
        }
Ejemplo n.º 2
0
        protected override void Process(NfsPacket packet, IPEndPoint receivedFrom)
        {
            //Console.WriteLine("PortmapHandler.Process : recievedFrom: " + receivedFrom.ToString());
            //Console.WriteLine("PortmapHandler.Process: Procedure -> " + packet.ProcedureID + ":" + ((PortmapProcedure)packet.ProcedureID).ToString());

            switch (packet.ProcedureID)
            {
            case (int)PortmapProcedure.NULL:
                Null(packet, receivedFrom);
                break;

            case (int)PortmapProcedure.GETPORT:
                GetPort(packet, receivedFrom);
                break;

            case (int)PortmapProcedure.SET:
                break;

            case (int)PortmapProcedure.UNSET:
                break;

            case (int)PortmapProcedure.DUMP:
                break;

            case (int)PortmapProcedure.CALLIT:
                break;

            default:
                break;
            }
        }
Ejemplo n.º 3
0
		protected void SendNull(NfsPacket sourcePacket, IPEndPoint receivedFrom) {

			NfsPacket packet = new NfsPacket(128);

			packet.AddReplyHeader(sourcePacket.XID);

			Send(packet, receivedFrom);
		}
Ejemplo n.º 4
0
        private void Mount(NfsPacket sourcePacket, IPEndPoint receivedFrom)
        {
            NfsReply replyCode = NfsReply.OK;
            NfsPacket packet = new NfsPacket(128);

            packet.AddReplyHeader(sourcePacket.XID);

            // skip past the authentication records
            sourcePacket.ReadAuthentication();
            sourcePacket.ReadAuthentication();

            // next should be a dirpath, which is a string.  Replace unix style path with local style path
            String path = sourcePacket.GetString();

            if (path == null) {
                replyCode = NfsReply.ERR_STALE;
            }
            else {
                String original = path.Clone() as String;

                path = NfsPath.ToWin(path);

                //Console.WriteLine("MountHandler.Mount : requested: " + original + ", actual: " + path);

                //if (!Directory.Exists(path)) {
                //	replyCode = NfsReply.ERR_EXIST;
                //}
            }

            // Try to validate this mount, if there is an error make an error packet, otherwise send back the handle.

            if (replyCode != NfsReply.OK) {
                packet.SetUInt((uint)replyCode);

            }
            else if (false){ //exports.Matches(packet.Source(), path) == false) {
                // No permission for this mount in the exports file
                //result.AddLong(NFS.NFSERR_PERM);
                //Console.Error.WriteLine("!!! Mount request for " + path + "from " + packet.Source() + " denied.\n");
            }
            else {
                // put together a file handle
                uint handle = HandleManager.Current.GetHandle(path);
                var fileHandle = new FileSystem.FileHandle();

                fileHandle.Set(handle, (uint)handle, 0);

                packet.SetUInt((uint)replyCode);

                fileHandle.Emit(ref packet);
            }

            if (replyCode == NfsReply.OK) {
                MountManager.Current.Add(sourcePacket.RemoteHost, path);
            }

            Send(packet, receivedFrom);
        }
Ejemplo n.º 5
0
        private void Set(NfsPacket sourcePacket, IPEndPoint receivedFrom)
        {
            // skip past the authentication records
            sourcePacket.ReadAuthentication();
            sourcePacket.ReadAuthentication();

            // Collect the arguments to the procedure
            uint programId = sourcePacket.GetUInt();
            uint version   = sourcePacket.GetUInt();
            uint protocol  = sourcePacket.GetUInt();
            uint port      = sourcePacket.GetUInt();

            NfsPacket packet = new NfsPacket(128);

            packet.AddReplyHeader(sourcePacket.XID);
            packet.SetUInt(PORTMAP_TRUE);

            //	portmapMapping toadd = new portmapMapping(prog, vers, prot);
            //	toadd.SetPort(port);

            //	XDRPacket result = new XDRPacket(128);
            //	result.AddReplyHeader(xid);

            //	// look for the chain of versions for this program
            //	long? pl = new long?(prog);
            //	portmapMapping chain = (portmapMapping)mappings[pl];
            //	if (chain == null) {
            //		mappings.Add(pl, toadd);
            //		result.AddLong(Portmap.PM_TRUE);
            //	}
            //	else {
            //		// See if this version is already registered in the chain
            //		while (chain != null) {
            //			if (chain.Version() == vers && chain.Protocol() == prot) {
            //				result.AddLong(Portmap.PM_FALSE);
            //				break;
            //			}
            //			else if (chain.Next() == null) {
            //				chain.SetNext(toadd);
            //				result.AddLong(Portmap.PM_TRUE);
            //				break;
            //			}
            //			chain = chain.Next();
            //		}
            //	}

            Send(packet, receivedFrom);
        }
Ejemplo n.º 6
0
        private void Null(NfsPacket sourcePacket, IPEndPoint receivedFrom)
        {
            // Put together an XDR reply packet
            NfsPacket packet = new NfsPacket(128);

            packet.SetUInt(sourcePacket.XID);
            packet.SetUInt((uint)RpcSignalType.Reply);
            packet.SetUInt((uint)RpcMessageResult.Accepted);

            // Put on a NULL authentication
            packet.AddNullAuthentication();

            packet.SetUInt((uint)RpcProcedure.Success);

            Send(packet, receivedFrom);
        }
Ejemplo n.º 7
0
		protected virtual void Call(ref NfsPacket packet, uint xId) {
			uint rpcVersion = packet.RpcVersion = packet.GetUInt();
			uint programId = packet.ProgramID = packet.GetUInt();
			uint version = packet.NfsVersion = packet.GetUInt();
			uint procedure = packet.ProcedureID = packet.GetUInt();

			IPHostEntry entry = Dns.GetHostEntry(packet.Source);
			String[] parts = entry.HostName.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);

			if (parts.Length >= 0) {
				packet.RemoteHost = parts[0];
			}

			//if (programId == this.ProgramID) {
			//	Console.WriteLine("\nCall: rpcVersion = " + rpcVersion + " programId = " + programId + " version = " + version + " procedure = " + procedure);
			//}
		}
Ejemplo n.º 8
0
        private void GetPort(NfsPacket sourcePacket, IPEndPoint receivedFrom)
        {
            // skip past the authentication records
            sourcePacket.ReadAuthentication();
            sourcePacket.ReadAuthentication();

            // Collect the arguments to the procedure
            uint programId = sourcePacket.GetUInt();
            uint version   = sourcePacket.GetUInt();
            uint protocol  = sourcePacket.GetUInt();

            // Put together an XDR reply packet
            NfsPacket packet = new NfsPacket(128);

            packet.SetUInt(sourcePacket.XID);
            packet.SetUInt((uint)RpcSignalType.Reply);
            packet.SetUInt((uint)RpcMessageResult.Accepted);

            packet.AddNullAuthentication();

            if (!NfsHandlerManager.IsProgramRegistered((int)programId))
            {
                packet.SetUInt((uint)RpcProcedure.ProgramUnavailable);
            }
            else
            {
                // TODO: add version checking. we're only doing v2 right now.
                // version mismatch gets the ProgMismatch value.
                //			result.AddLong(RPCConsts.RPCProgMismatch);
                //			result.AddLong(versmin);
                //			result.AddLong(versmax);
                int port = NfsHandlerManager.GetPort((int)programId);

                if (port == 0)
                {
                    packet.SetUInt((uint)RpcProcedure.ProgramMismatch);
                }
                else
                {
                    packet.SetUInt((uint)RpcProcedure.Success);
                    packet.SetUInt((uint)port);
                }
            }

            Send(packet, receivedFrom);
        }
Ejemplo n.º 9
0
        protected virtual void Call(ref NfsPacket packet, uint xId)
        {
            uint rpcVersion = packet.RpcVersion = packet.GetUInt();
            uint programId = packet.ProgramID = packet.GetUInt();
            uint version = packet.NfsVersion = packet.GetUInt();
            uint procedure = packet.ProcedureID = packet.GetUInt();

            IPHostEntry entry = Dns.GetHostEntry(packet.Source);
            String[] parts = entry.HostName.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);

            if (parts.Length >= 0) {
                packet.RemoteHost = parts[0];
            }

            //if (programId == this.ProgramID) {
            //	Console.WriteLine("\nCall: rpcVersion = " + rpcVersion + " programId = " + programId + " version = " + version + " procedure = " + procedure);
            //}
        }
Ejemplo n.º 10
0
        private void GetPort(NfsPacket sourcePacket, IPEndPoint receivedFrom)
        {
            // skip past the authentication records
            sourcePacket.ReadAuthentication();
            sourcePacket.ReadAuthentication();

            // Collect the arguments to the procedure
            uint programId = sourcePacket.GetUInt();
            uint version = sourcePacket.GetUInt();
            uint protocol = sourcePacket.GetUInt();

            // Put together an XDR reply packet
            NfsPacket packet = new NfsPacket(128);

            packet.SetUInt(sourcePacket.XID);
            packet.SetUInt((uint)RpcSignalType.Reply);
            packet.SetUInt((uint)RpcMessageResult.Accepted);

            packet.AddNullAuthentication();

            if (!NfsHandlerManager.IsProgramRegistered((int)programId)) {
                packet.SetUInt((uint)RpcProcedure.ProgramUnavailable);
            }
            else {
                // TODO: add version checking. we're only doing v2 right now.
                // version mismatch gets the ProgMismatch value.
                //			result.AddLong(RPCConsts.RPCProgMismatch);
                //			result.AddLong(versmin);
                //			result.AddLong(versmax);
                int port = NfsHandlerManager.GetPort((int)programId);

                if (port == 0) {
                    packet.SetUInt((uint)RpcProcedure.ProgramMismatch);
                }
                else {
                    packet.SetUInt((uint)RpcProcedure.Success);
                    packet.SetUInt((uint)port);
                }
            }

            Send(packet, receivedFrom);
        }
Ejemplo n.º 11
0
        protected override void Process(NfsPacket packet, IPEndPoint receivedFrom)
        {
            //Console.WriteLine("MountHandler.Process : recievedFrom: " + receivedFrom.ToString());
            //Console.WriteLine("MountHandler.Process: Procedure -> " + packet.ProcedureID + ":" + ((MountProcedure)packet.ProcedureID).ToString());

            switch (packet.ProcedureID) {
                case (int)MountProcedure.NULL:
                    base.SendNull(packet, receivedFrom);
                    break;
                case (int)MountProcedure.MNT:
                    Mount(packet, receivedFrom);
                    break;
                case (int)MountProcedure.UMNT:
                    Unmount(packet, receivedFrom);
                    break;
                default:
                    break;

            }
        }
Ejemplo n.º 12
0
        private void Unmount(NfsPacket sourcePacket, IPEndPoint receivedFrom)
        {
            // skip past the authentication records
            sourcePacket.ReadAuthentication();
            sourcePacket.ReadAuthentication();

            String    path   = sourcePacket.GetString();
            NfsPacket packet = new NfsPacket(128);

            path = NfsPath.ToWin(path);

            HandleManager.Current.GetHandle(path);

            packet.AddReplyHeader(sourcePacket.XID);
            packet.SetUInt((uint)NfsReply.OK);

            //Console.WriteLine("MountHandler.Unmount : requested: " + path);

            MountManager.Current.Remove(sourcePacket.RemoteHost);

            Send(packet, receivedFrom);
        }
Ejemplo n.º 13
0
        protected override void Process(NfsPacket packet, IPEndPoint receivedFrom)
        {
            //Console.WriteLine("MountHandler.Process : recievedFrom: " + receivedFrom.ToString());
            //Console.WriteLine("MountHandler.Process: Procedure -> " + packet.ProcedureID + ":" + ((MountProcedure)packet.ProcedureID).ToString());

            switch (packet.ProcedureID)
            {
            case (int)MountProcedure.NULL:
                base.SendNull(packet, receivedFrom);
                break;

            case (int)MountProcedure.MNT:
                Mount(packet, receivedFrom);
                break;

            case (int)MountProcedure.UMNT:
                Unmount(packet, receivedFrom);
                break;

            default:
                break;
            }
        }
Ejemplo n.º 14
0
        protected override void Process(NfsPacket packet, IPEndPoint receivedFrom)
        {
            //Console.WriteLine("PortmapHandler.Process : recievedFrom: " + receivedFrom.ToString());
            //Console.WriteLine("PortmapHandler.Process: Procedure -> " + packet.ProcedureID + ":" + ((PortmapProcedure)packet.ProcedureID).ToString());

            switch (packet.ProcedureID) {
                case (int)PortmapProcedure.NULL:
                    Null(packet, receivedFrom);
                    break;
                case (int)PortmapProcedure.GETPORT:
                    GetPort(packet, receivedFrom);
                    break;
                case (int)PortmapProcedure.SET:
                    break;
                case (int)PortmapProcedure.UNSET:
                    break;
                case (int)PortmapProcedure.DUMP:
                    break;
                case (int)PortmapProcedure.CALLIT:
                    break;
                default:
                    break;
            }
        }
Ejemplo n.º 15
0
		protected override void OnPacketReceived(byte[] bytes, IPEndPoint receivedFrom) {
			var datagram = new DatagramPacket(bytes, bytes.Length, receivedFrom);
			var packet = new NfsPacket(datagram);
			var e = new UdpPacketReceivedEventArgs(packet, receivedFrom);

			//Console.WriteLine("\nPacket Received : EndPoint: " + _listener.Client.Client.LocalEndPoint.ToString());

			uint xId = packet.XID = packet.GetUInt();
			uint type = packet.GetUInt();

			if (type == (int)RpcSignalType.Call) {
				Call(ref packet, xId);
			}
			else if (type == (int)RpcSignalType.Reply) {
				Reply(ref packet, xId);
			}

			//RaisePacketReceived(e);

			if (packet.ProgramID == this.ProgramID) {
				//Console.WriteLine("Found program: " + packet.ProgramID);
				Process(packet, receivedFrom);
			}
		}
Ejemplo n.º 16
0
        private void Set(NfsPacket sourcePacket, IPEndPoint receivedFrom)
        {
            // skip past the authentication records
            sourcePacket.ReadAuthentication();
            sourcePacket.ReadAuthentication();

            // Collect the arguments to the procedure
            uint programId = sourcePacket.GetUInt();
            uint version = sourcePacket.GetUInt();
            uint protocol = sourcePacket.GetUInt();
            uint port = sourcePacket.GetUInt();

            NfsPacket packet = new NfsPacket(128);

            packet.AddReplyHeader(sourcePacket.XID);
            packet.SetUInt(PORTMAP_TRUE);

            //	portmapMapping toadd = new portmapMapping(prog, vers, prot);
            //	toadd.SetPort(port);

            //	XDRPacket result = new XDRPacket(128);
            //	result.AddReplyHeader(xid);

            //	// look for the chain of versions for this program
            //	long? pl = new long?(prog);
            //	portmapMapping chain = (portmapMapping)mappings[pl];
            //	if (chain == null) {
            //		mappings.Add(pl, toadd);
            //		result.AddLong(Portmap.PM_TRUE);
            //	}
            //	else {
            //		// See if this version is already registered in the chain
            //		while (chain != null) {
            //			if (chain.Version() == vers && chain.Protocol() == prot) {
            //				result.AddLong(Portmap.PM_FALSE);
            //				break;
            //			}
            //			else if (chain.Next() == null) {
            //				chain.SetNext(toadd);
            //				result.AddLong(Portmap.PM_TRUE);
            //				break;
            //			}
            //			chain = chain.Next();
            //		}
            //	}

            Send(packet, receivedFrom);
        }
Ejemplo n.º 17
0
 public NfsTime(NfsPacket packet)
 {
     Read(packet);
 }
Ejemplo n.º 18
0
 internal virtual bool Emit(ref NfsPacket packet)
 {
     packet.SetUInt(_seconds);
     packet.SetUInt(_milliseconds);
     return(true);
 }
Ejemplo n.º 19
0
 internal virtual bool Read(NfsPacket packet)
 {
     _seconds      = packet.GetUInt();
     _milliseconds = packet.GetUInt();
     return(true);
 }
Ejemplo n.º 20
0
 public NfsTime(NfsPacket packet)
 {
     Read(packet);
 }
Ejemplo n.º 21
0
		protected virtual void Reply(ref NfsPacket packet, uint xId) {
			//Console.WriteLine("Reply: I don't handle these");
		}
Ejemplo n.º 22
0
        private void Null(NfsPacket sourcePacket, IPEndPoint receivedFrom)
        {
            // Put together an XDR reply packet
            NfsPacket packet = new NfsPacket(128);

            packet.SetUInt(sourcePacket.XID);
            packet.SetUInt((uint)RpcSignalType.Reply);
            packet.SetUInt((uint)RpcMessageResult.Accepted);

            // Put on a NULL authentication
            packet.AddNullAuthentication();

            packet.SetUInt((uint)RpcProcedure.Success);

            Send(packet, receivedFrom);
        }
Ejemplo n.º 23
0
		protected virtual void Process(NfsPacket packet, IPEndPoint receivedFrom) {
			//Console.WriteLine("NfsHandler.Process : recievedFrom: " + receivedFrom.ToString());
		}
Ejemplo n.º 24
0
        protected override void Process(NfsPacket packet, IPEndPoint receivedFrom)
        {
            //Console.WriteLine("NfsHandler.Process : recievedFrom: " + receivedFrom.ToString());
            //Console.WriteLine("NfsHandler.Process: Procedure -> " + packet.ProcedureID + ":" + ((NfsProcedure)packet.ProcedureID).ToString());

            // get rid of authentication recorde in packet, we don't use them
            packet.ReadAuthentication();
            packet.ReadAuthentication();

            if (packet.ProcedureID == (int)NfsProcedure.NULL)
            {
                base.SendNull(packet, receivedFrom);
                return;
            }

            NfsPacket result;
            uint      xid = packet.XID;

            try {
                switch (packet.ProcedureID)
                {
                case (int)NfsProcedure.GETATTR:
                    result = _directory.GetAttr(packet);
                    break;

                case (int)NfsProcedure.SETATTR:
                    result = _directory.SetAttr(xid, packet);
                    break;

                case (int)NfsProcedure.LOOKUP:
                    result = _directory.Lookup(packet);
                    break;

                case (int)NfsProcedure.READ:
                    result = _io.Read(packet);
                    break;

                case (int)NfsProcedure.WRITE:
                    result = _io.Write(xid, packet);
                    break;

                case (int)NfsProcedure.CREATE:
                    result = _directory.Create(xid, packet);
                    break;

                case (int)NfsProcedure.REMOVE:
                    result = _directory.Remove(xid, packet);
                    break;

                case (int)NfsProcedure.RENAME:
                    result = _directory.Rename(xid, packet);
                    break;

                case (int)NfsProcedure.MKDIR:
                    result = _directory.Mkdir(xid, packet);
                    break;

                case (int)NfsProcedure.RMDIR:
                    result = _directory.Rmdir(xid, packet);
                    break;

                case (int)NfsProcedure.READDIR:
                    result = _directory.ReadDirectory(packet);
                    break;

                case (int)NfsProcedure.STATFS:
                    result = _directory.StatFS(packet);
                    break;

                default:
                    Console.Error.WriteLine("Unsupported NFS procedure called (" + packet.ProcedureID + ") from " + receivedFrom.ToString() + "\n");
                    throw new NFSException(packet.XID, (uint)NfsReply.ERR_IO);
                }
            }
            catch (NFSException e) {
                // make a reply packet that includes the error
                result = new NfsPacket(64);
                result.AddReplyHeader(packet.XID);
                result.SetUInt(e.ErrorNumber);
            }

            Send(result, receivedFrom);
        }
Ejemplo n.º 25
0
 internal virtual bool Read(NfsPacket packet)
 {
     _seconds = packet.GetUInt();
     _milliseconds = packet.GetUInt();
     return true;
 }
Ejemplo n.º 26
0
        protected override void Process(NfsPacket packet, IPEndPoint receivedFrom)
        {
            //Console.WriteLine("NfsHandler.Process : recievedFrom: " + receivedFrom.ToString());
            //Console.WriteLine("NfsHandler.Process: Procedure -> " + packet.ProcedureID + ":" + ((NfsProcedure)packet.ProcedureID).ToString());

            // get rid of authentication recorde in packet, we don't use them
            packet.ReadAuthentication();
            packet.ReadAuthentication();

            if (packet.ProcedureID == (int)NfsProcedure.NULL) {
                base.SendNull(packet, receivedFrom);
                return;
            }

            NfsPacket result;
            uint xid = packet.XID;

            try {
                switch (packet.ProcedureID) {
                    case (int)NfsProcedure.GETATTR:
                        result = _directory.GetAttr(packet);
                        break;
                    case (int)NfsProcedure.SETATTR:
                        result = _directory.SetAttr(xid, packet);
                        break;
                    case (int)NfsProcedure.LOOKUP:
                        result = _directory.Lookup(packet);
                        break;
                    case (int)NfsProcedure.READ:
                        result = _io.Read(packet);
                        break;
                    case (int)NfsProcedure.WRITE:
                        result = _io.Write(xid, packet);
                        break;
                    case (int)NfsProcedure.CREATE:
                        result = _directory.Create(xid, packet);
                        break;
                    case (int)NfsProcedure.REMOVE:
                        result = _directory.Remove(xid, packet);
                        break;
                    case (int)NfsProcedure.RENAME:
                        result = _directory.Rename(xid, packet);
                        break;
                    case (int)NfsProcedure.MKDIR:
                        result = _directory.Mkdir(xid, packet);
                        break;
                    case (int)NfsProcedure.RMDIR:
                        result = _directory.Rmdir(xid, packet);
                        break;
                    case (int)NfsProcedure.READDIR:
                        result = _directory.ReadDirectory(packet);
                        break;
                    case (int)NfsProcedure.STATFS:
                        result = _directory.StatFS(packet);
                        break;
                    default:
                        Console.Error.WriteLine("Unsupported NFS procedure called (" + packet.ProcedureID + ") from " + receivedFrom.ToString() + "\n");
                        throw new NFSException(packet.XID, (uint)NfsReply.ERR_IO);
                }
            }
            catch (NFSException e) {
                // make a reply packet that includes the error
                result = new NfsPacket(64);
                result.AddReplyHeader(packet.XID);
                result.SetUInt(e.ErrorNumber);
            }

            Send(result, receivedFrom);
        }
Ejemplo n.º 27
0
 protected virtual void Reply(ref NfsPacket packet, uint xId)
 {
     //Console.WriteLine("Reply: I don't handle these");
 }
Ejemplo n.º 28
0
        private void Mount(NfsPacket sourcePacket, IPEndPoint receivedFrom)
        {
            NfsReply  replyCode = NfsReply.OK;
            NfsPacket packet    = new NfsPacket(128);

            packet.AddReplyHeader(sourcePacket.XID);

            // skip past the authentication records
            sourcePacket.ReadAuthentication();
            sourcePacket.ReadAuthentication();

            // next should be a dirpath, which is a string.  Replace unix style path with local style path
            String path = sourcePacket.GetString();

            if (path == null)
            {
                replyCode = NfsReply.ERR_STALE;
            }
            else
            {
                String original = path.Clone() as String;

                path = NfsPath.ToWin(path);

                //Console.WriteLine("MountHandler.Mount : requested: " + original + ", actual: " + path);

                //if (!Directory.Exists(path)) {
                //	replyCode = NfsReply.ERR_EXIST;
                //}
            }

            // Try to validate this mount, if there is an error make an error packet, otherwise send back the handle.

            if (replyCode != NfsReply.OK)
            {
                packet.SetUInt((uint)replyCode);
            }
            else if (false)              //exports.Matches(packet.Source(), path) == false) {
            // No permission for this mount in the exports file
            //result.AddLong(NFS.NFSERR_PERM);
            //Console.Error.WriteLine("!!! Mount request for " + path + "from " + packet.Source() + " denied.\n");
            {
            }
            else
            {
                // put together a file handle
                uint handle     = HandleManager.Current.GetHandle(path);
                var  fileHandle = new FileSystem.FileHandle();

                fileHandle.Set(handle, (uint)handle, 0);

                packet.SetUInt((uint)replyCode);

                fileHandle.Emit(ref packet);
            }

            if (replyCode == NfsReply.OK)
            {
                MountManager.Current.Add(sourcePacket.RemoteHost, path);
            }

            Send(packet, receivedFrom);
        }
Ejemplo n.º 29
0
 protected virtual void Process(NfsPacket packet, IPEndPoint receivedFrom)
 {
     //Console.WriteLine("NfsHandler.Process : recievedFrom: " + receivedFrom.ToString());
 }
Ejemplo n.º 30
0
 internal virtual bool Emit(ref NfsPacket packet)
 {
     packet.SetUInt(_seconds);
     packet.SetUInt(_milliseconds);
     return true;
 }
Ejemplo n.º 31
0
        protected void SendNull(NfsPacket sourcePacket, IPEndPoint receivedFrom)
        {
            NfsPacket packet = new NfsPacket(128);

            packet.AddReplyHeader(sourcePacket.XID);

            Send(packet, receivedFrom);
        }
Ejemplo n.º 32
0
        private void Unmount(NfsPacket sourcePacket, IPEndPoint receivedFrom)
        {
            // skip past the authentication records
            sourcePacket.ReadAuthentication();
            sourcePacket.ReadAuthentication();

            String path = sourcePacket.GetString();
            NfsPacket packet = new NfsPacket(128);

            path = NfsPath.ToWin(path);

            HandleManager.Current.GetHandle(path);

            packet.AddReplyHeader(sourcePacket.XID);
            packet.SetUInt((uint)NfsReply.OK);

            //Console.WriteLine("MountHandler.Unmount : requested: " + path);

            MountManager.Current.Remove(sourcePacket.RemoteHost);

            Send(packet, receivedFrom);
        }