Exemple #1
0
        private static void AddOptions(ICollection <DHCPv6PacketOption> packetOptions, DHCPv6Packet requestPacket, DUID serverDuid, DHCPv6ScopeAddressProperties addressProperties, DHCPv6ScopeProperties properties, Boolean onlyMinimialOptions)
        {
            DHCPv6Packet innerReceivedPacket = requestPacket.GetInnerPacket();

            packetOptions.Add(new DHCPv6PacketIdentifierOption(DHCPv6PacketOptionTypes.ServerIdentifer, serverDuid));
            packetOptions.Add(new DHCPv6PacketIdentifierOption(DHCPv6PacketOptionTypes.ClientIdentifier, innerReceivedPacket.GetClientIdentifer()));
            if (onlyMinimialOptions == true)
            {
                return;
            }

            if (addressProperties?.SupportDirectUnicast == true)
            {
                packetOptions.Add(new DHCPv6PacketIPAddressOption(DHCPv6PacketOptionTypes.ServerUnicast, requestPacket.Header.ListenerAddress));
            }

            foreach (var item in properties?.Properties)
            {
                switch (item)
                {
                case DHCPv6AddressListScopeProperty property:
                    packetOptions.Add(new DHCPv6PacketIPAddressListOption(property.OptionIdentifier, property.Addresses));
                    break;

                case DHCPv6NumericValueScopeProperty property:
                    switch (property.NumericType)
                    {
                    case NumericScopePropertiesValueTypes.Byte:
                        packetOptions.Add(new DHCPv6PacketByteOption(property.OptionIdentifier, (Byte)property.Value));
                        break;

                    case NumericScopePropertiesValueTypes.UInt16:
                        packetOptions.Add(new DHCPv6PacketUInt16Option(property.OptionIdentifier, (UInt16)property.Value));
                        break;

                    case NumericScopePropertiesValueTypes.UInt32:
                        packetOptions.Add(new DHCPv6PacketUInt32Option(property.OptionIdentifier, (UInt32)property.Value));
                        break;

                    default:
                        break;
                    }
                    break;

                default:
                    break;
                }
            }
        }
Exemple #2
0
 private Boolean ShouldHaveClientAndServerIdentifier(DUID clientIdentifier, DUID serverIdentiifer)
 => clientIdentifier != DUID.Empty && serverIdentiifer != DUID.Empty;
Exemple #3
0
 internal DHCPv6Lease GetLeaseByClientDuid(DUID clientIdentifier) =>
 GetLeaseByExpression(x => x.ClientDUID == clientIdentifier);
Exemple #4
0
 public static String ToFriendlyString(this DUID input) => input switch
 {
Exemple #5
0
 internal DHCPv6Lease GetLeaseAssociationIdAndDuid(UInt32 associationId, DUID clientId) =>
 GetLeaseByExpression(x => x.IdentityAssocicationId == associationId && x.ClientDUID == clientId);