Beispiel #1
0
        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);
        }
Beispiel #2
0
        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));
        }