private static uint HandleDeleteClientHook(uint IpAddress, IntPtr HwAddress, uint HwAddressLength, uint Reserved, uint ClientType) { var stopPropagation = false; var leaseAddress = DhcpServerIpAddress.FromNative(IpAddress); if (HwAddressLength <= DhcpServerHardwareAddress.MaximumLength) { var leaseHardwareAddress = DhcpServerHardwareAddress.FromNative(DhcpServerHardwareType.Ethernet, HwAddress, (int)HwAddressLength); foreach (var consumer in Consumers) { if (consumer.SupportFlags.HasFlag(CalloutConsumerSupportFlags.DeleteClient)) { try { consumer.Proxy.DeleteClient(leaseAddress, leaseHardwareAddress, ref stopPropagation); } catch (Win32Exception ex) { return((uint)ex.NativeErrorCode); } catch (Exception) { return(0x1U); //ERROR_INVALID_FUNCTION } // stop propagation if instructed if (stopPropagation) { return(ERROR_SUCCESS); } } } } // chain if (!stopPropagation && ChainTable.DhcpDeleteClientHook != null) { return(ChainTable.DhcpDeleteClientHook(IpAddress, HwAddress, HwAddressLength, Reserved, ClientType)); } return(ERROR_SUCCESS); }
public void DeleteClient(DhcpServerIpAddress LeaseAddress, DhcpServerHardwareAddress LeaseHardwareAddress, ref bool StopPropagation) { try { var sb = new StringBuilder(); sb.AppendLine("DELETE CLIENT:"); sb.AppendLine($" Lease Address: {LeaseAddress}"); sb.AppendLine($" Hardware Address: {LeaseHardwareAddress}"); sb.AppendLine("---------------------"); WriteLog(sb.ToString()); } catch (Exception ex) { WriteLog($"DELETE CLIENT ERROR: {ex.Message} [{ex.GetType().Name}]"); WriteLog(ex.StackTrace); throw; } }
public void DeleteClient(DhcpServerIpAddress LeaseAddress, DhcpServerHardwareAddress LeaseHardwareAddress, ref bool StopPropagation) { deleteClientHandler.DeleteClient(LeaseAddress, LeaseHardwareAddress, ref StopPropagation); }
public DHCP_IP_RESERVATION_V4_Managed(DhcpServerIpAddress address, DhcpServerHardwareAddress reservedForClient, DhcpServerClientTypes allowedClientTypes) : this(reservedIpAddress : address.ToNativeAsNetwork(), reservedForClient : reservedForClient.ToNativeClientUid(), allowedClientTypes : (DHCP_CLIENT_TYPE)allowedClientTypes) { }
public DHCP_IP_RESERVATION_Managed(DhcpServerIpAddress address, DhcpServerHardwareAddress reservedForClient) : this(reservedIpAddress : address.ToNativeAsNetwork(), reservedForClient : reservedForClient.ToNativeClientUid()) { }