/// <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); }
/// <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); }