示例#1
0
        /// <summary>
        /// Create vlans for a vif.
        /// </summary>
        /// <returns>The vlans.</returns>
        /// <param name="ipv4Addresses">Ipv4 addresses.</param>
        protected internal virtual List <Vlan> CreateVlans(AttachmentRole role, List <Ipv4AddressAndMask> ipv4Addresses)
        {
            if (role.IsLayer3Role)
            {
                if (ipv4Addresses.Count != this._interfaces.Count)
                {
                    throw new AttachmentDomainException($"Insufficient IPv4 addresses provided to create vlans for a new vif for attachment '{this.Name}'. " +
                                                        $"{ipv4Addresses.Count} were supplied but {this._interfaces.Count} are required.");
                }
            }

            var vlans = new List <Vlan>();

            foreach (var @interface in this._interfaces)
            {
                var vlan = new Vlan();

                if (role.IsLayer3Role)
                {
                    var ipv4Address = ipv4Addresses.First();
                    vlan.SetIpv4Address(ipv4Address);
                    ipv4Addresses.Remove(ipv4Address);
                }

                @interface.AddVlan(vlan);
                vlans.Add(vlan);
            }

            return(vlans);
        }
示例#2
0
 /// <summary>
 /// Add a vlan.
 /// </summary>
 /// <param name="vlan">Vlan.</param>
 public void AddVlan(Vlan vlan) => _vlans.Add(vlan);