public static DhcpServerHardwareAddress FromNative(DhcpServerHardwareType type, IntPtr pointer, int length) { if (pointer == IntPtr.Zero) { throw new ArgumentNullException(nameof(pointer)); } if (length > MaximumLength) { throw new ArgumentOutOfRangeException(nameof(length)); } var hwAddr1 = 0UL; var hwAddr2 = 0UL; if (length == 0) { return(new DhcpServerHardwareAddress(type, (byte)length, hwAddr1, hwAddr2)); } hwAddr1 = (ulong)BitHelper.ReadIntVar(pointer, 0, length > 7 ? 8 : length); if (length > 8) { hwAddr2 = (ulong)BitHelper.ReadIntVar(pointer, 8, length - 8); } return(new DhcpServerHardwareAddress(type, (byte)length, hwAddr1, hwAddr2)); }
internal DhcpServerHardwareAddress(DhcpServerHardwareType type, byte length, ulong addr1, ulong addr2) { if (length > MaximumLength) { throw new ArgumentOutOfRangeException(nameof(length), $"Exceeds maximum length {MaximumLength}"); } hwAddrType = type; hwAddrLen = length; hwAddr1 = addr1; hwAddr2 = addr2; }
public static DhcpServerHardwareAddress FromNative(DhcpServerHardwareType type, byte[] hardwareAddress) { if (hardwareAddress.Length > MaximumLength) { throw new ArgumentOutOfRangeException(nameof(hardwareAddress)); } return(new DhcpServerHardwareAddress( type, (byte)hardwareAddress.Length, Marshal(hardwareAddress, 0), hardwareAddress.Length > 8 ? Marshal(hardwareAddress, 8) : 0UL)); }
public static DhcpServerHardwareAddress FromNative(DhcpServerHardwareType type, byte[] buffer, int hardwareAddressOffset, int hardwareAddressLength) { if (hardwareAddressLength > MaximumLength) { throw new ArgumentOutOfRangeException(nameof(hardwareAddressLength)); } if (buffer == null) { throw new ArgumentNullException(nameof(buffer)); } if (buffer.Length < hardwareAddressOffset + hardwareAddressLength) { throw new ArgumentOutOfRangeException(nameof(hardwareAddressOffset)); } return(new DhcpServerHardwareAddress( type, (byte)hardwareAddressLength, Marshal(buffer, hardwareAddressOffset, hardwareAddressLength), hardwareAddressLength > 8 ? Marshal(buffer, hardwareAddressOffset + 8, hardwareAddressLength - 8) : 0UL)); }
internal static DhcpServerHardwareAddress FromNative(DhcpServerHardwareType type, byte hardwareAddressLength, ulong hardwareAddress1, ulong hardwareAddress2) { return(new DhcpServerHardwareAddress(type, hardwareAddressLength, hardwareAddress1, hardwareAddress2)); }