public async Task <Guid?> Handle(CreateDHCPv6InterfaceListenerCommand request, CancellationToken cancellationToken) { _logger.LogDebug("Handle started"); DHCPv6Listener listener = DHCPv6Listener.Create( request.NicId, DHCPListenerName.FromString(request.Name), IPv6Address.FromString(request.IPv6Addres)); var possibleListeners = _interfaceEngine.GetPossibleListeners(); if (possibleListeners.Count(x => x.Address == listener.Address && x.PhysicalInterfaceId == listener.PhysicalInterfaceId) == 0) { return(null); } var activeListeners = await _interfaceEngine.GetActiveListeners(); if (activeListeners.Count(x => x.Address == listener.Address && x.PhysicalInterfaceId == listener.PhysicalInterfaceId) > 0) { return(null); } if (await _storageEngine.Save(listener) == false) { return(null); } _interfaceEngine.OpenListener(listener); return(listener.Id); }
public async Task <IActionResult> GetAllInterface() { var possibleInterfaces = _interfaceEngine.GetPossibleListeners(); var activeInterfaces = await _interfaceEngine.GetActiveListeners(); List <ActiveDHCPv6InterfaceEntry> activeEntries = new List <ActiveDHCPv6InterfaceEntry>(); List <DHCPv6InterfaceEntry> unboundEntries = new List <DHCPv6InterfaceEntry>(); foreach (var item in possibleInterfaces) { var activeInterface = activeInterfaces.FirstOrDefault(x => x.PhysicalInterfaceId == item.PhysicalInterfaceId && x.Address == item.Address); if (activeInterface != null) { activeEntries.Add(new ActiveDHCPv6InterfaceEntry { SystemId = activeInterface.Id, IPv6Address = activeInterface.Address.ToString(), MACAddress = item.PhysicalAddress, Name = activeInterface.Name, PhysicalInterfaceName = item.Interfacename, PhysicalInterfaceId = activeInterface.PhysicalInterfaceId }); } else { unboundEntries.Add(new DHCPv6InterfaceEntry { IPv6Address = item.Address.ToString(), MACAddress = item.PhysicalAddress, InterfaceName = item.Interfacename, PhysicalInterfaceId = item.PhysicalInterfaceId, }); } } var detachedInterfaces = activeInterfaces .Where(x => possibleInterfaces.Count(y => y.PhysicalInterfaceId == x.PhysicalInterfaceId) == 0) .Select(x => new DetachedDHCPv6InterfaceEntry { SystemId = x.Id, IPv6Address = x.Address.ToString(), Name = x.Name }).ToList(); var result = new DHCPv6InterfaceOverview { ActiveEntries = activeEntries, Entries = unboundEntries, DetachedEntries = detachedInterfaces }; return(base.Ok(result)); }