add ISafeSerializationData
[mcs.git] / class / System / System.Net.NetworkInformation / LinuxNetworkInterfaceMarshal.cs
blobace0845bb7d99599b5afdb303b6ca51980c548e0
1 //
2 // System.Net.NetworkInformation.NetworkInterface
3 //
4 // Authors:
5 // Eric Butler (eric@extremeboredom.net)
6 //
7 // Copyright (c) 2008 Eric Butler
8 //
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
16 //
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
19 //
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 #if NET_2_0
29 using System;
30 using System.Runtime.InteropServices;
32 namespace System.Net.NetworkInformation {
33 [StructLayout(LayoutKind.Explicit)]
34 struct ifa_ifu
36 [FieldOffset (0)]
37 public IntPtr ifu_broadaddr;
39 [FieldOffset (0)]
40 public IntPtr ifu_dstaddr;
43 [StructLayout(LayoutKind.Sequential)]
44 struct ifaddrs
46 public IntPtr ifa_next;
47 public string ifa_name;
48 public uint ifa_flags;
49 public IntPtr ifa_addr;
50 public IntPtr ifa_netmask;
51 public ifa_ifu ifa_ifu;
52 public IntPtr ifa_data;
55 [StructLayout(LayoutKind.Sequential)]
56 struct sockaddr_in
58 public ushort sin_family;
59 public ushort sin_port;
60 public uint sin_addr;
63 [StructLayout(LayoutKind.Sequential)]
64 struct sockaddr_in6
66 public ushort sin6_family; /* AF_INET6 */
67 public ushort sin6_port; /* Transport layer port # */
68 public uint sin6_flowinfo; /* IPv6 flow information */
69 public in6_addr sin6_addr; /* IPv6 address */
70 public uint sin6_scope_id; /* scope id (new in RFC2553) */
73 [StructLayout(LayoutKind.Sequential)]
74 struct in6_addr
76 [MarshalAs (UnmanagedType.ByValArray, SizeConst=16)]
77 public byte[] u6_addr8;
80 [StructLayout(LayoutKind.Sequential)]
81 struct sockaddr_ll
83 public ushort sll_family;
84 public ushort sll_protocol;
85 public int sll_ifindex;
86 public ushort sll_hatype;
87 public byte sll_pkttype;
88 public byte sll_halen;
90 [MarshalAs (UnmanagedType.ByValArray, SizeConst=8)]
91 public byte[] sll_addr;
94 enum LinuxArpHardware {
95 ETHER = 1,
96 EETHER = 2,
97 PRONET = 4,
98 ATM = 19,
99 SLIP = 256,
100 PPP = 512,
101 LOOPBACK = 772,
102 FDDI = 774,
103 TUNNEL = 768,
104 TUNNEL6 = 769
107 #endif