示例#1
0
        /// <summary>
        /// Creates a node by its ID
        /// </summary>
        /// <param name="pt">The option</param>
        /// <returns>The node</returns>
        private static unsafe Node byID(InfoOPT opt)
        {
            Node node = new Node();

            node.Read = readImpl;
            node.Size = 4;

            IDCookie cookie = new IDCookie((int)opt);

            node.Cookie = cookie;

            return(node);
        }
示例#2
0
        /// <summary>
        /// Read method for filesystem
        /// </summary>
        /// <param name="node">The node</param>
        /// <param name="offset">The offset</param>
        /// <param name="size">The size</param>
        /// <param name="buffer">The buffer</param>
        /// <returns>The amount of bytes read</returns>
        private static unsafe uint readImpl(Node node, uint offset, uint size, byte[] buffer)
        {
            byte *sourceBuffer = null;

            IDCookie cookie = (IDCookie)node.Cookie;
            InfoOPT  opt    = (InfoOPT)cookie.ID;

            switch (opt)
            {
            case InfoOPT.IP:
                sourceBuffer = Network.Settings->IP;
                break;

            case InfoOPT.SUBNET:
                sourceBuffer = Network.Settings->Subnet;
                break;

            case InfoOPT.GATEWAY:
                sourceBuffer = Network.Settings->Gateway;
                break;

            case InfoOPT.NS1:
                sourceBuffer = Network.Settings->DNS1;
                break;

            case InfoOPT.NS2:
                sourceBuffer = Network.Settings->DNS2;
                break;
            }

            int read = Math.Min((int)size, 4);

            Memory.Memcpy(Util.ObjectToVoidPtr(buffer), sourceBuffer, read);

            return((uint)read);
        }