2 using System.Runtime.InteropServices;
4 namespace System.Net.NetworkInformation {
5 namespace MacOsStructs {
6 internal struct ifaddrs
8 public IntPtr ifa_next;
9 public string ifa_name;
10 public uint ifa_flags;
11 public IntPtr ifa_addr;
12 public IntPtr ifa_netmask;
13 public IntPtr ifa_dstaddr;
14 public IntPtr ifa_data;
17 internal struct sockaddr
20 public byte sa_family;
23 internal struct sockaddr_in
26 public byte sin_family;
27 public ushort sin_port;
31 internal struct in6_addr
33 [MarshalAs (UnmanagedType.ByValArray, SizeConst=16)]
34 public byte[] u6_addr8;
37 internal struct sockaddr_in6
40 public byte sin6_family;
41 public ushort sin6_port;
42 public uint sin6_flowinfo;
43 public in6_addr sin6_addr;
44 public uint sin6_scope_id;
47 internal struct sockaddr_dl
50 public byte sdl_family;
51 public ushort sdl_index;
56 public byte[] sdl_data;
58 internal void Read (IntPtr ptr)
60 sdl_len = Marshal.ReadByte (ptr, 0);
61 sdl_family = Marshal.ReadByte (ptr, 1);
62 sdl_index = (ushort) Marshal.ReadInt16 (ptr, 2);
63 sdl_type = Marshal.ReadByte (ptr, 4);
64 sdl_nlen = Marshal.ReadByte (ptr, 5);
65 sdl_alen = Marshal.ReadByte (ptr, 6);
66 sdl_slen = Marshal.ReadByte (ptr, 7);
67 sdl_data = new byte [Math.Max (12, sdl_len - 8)];
68 Marshal.Copy (new IntPtr (ptr.ToInt64 () + 8), sdl_data, 0, sdl_data.Length);
74 internal enum MacOsArpHardware {