Modify _xos_i_vlan_membership() in L3::Extreme to only include tagged ports

This commit is contained in:
Eric A. Miller
2013-11-07 23:28:13 -05:00
parent c21ca2062e
commit 28bbe0ee19
2 changed files with 18 additions and 18 deletions

View File

@@ -485,34 +485,29 @@ sub _xos_i_vlan_membership {
my $index = $extreme->i_index();
my $vlans = $extreme->ex_vlan_id();
my $slotx = $extreme->_slot_factor() || 1000;
my $u_ports = $extreme->ex_vlan_untagged() || {};
my $t_ports = $extreme->ex_vlan_tagged() || {};
my $i_vlan_membership = {};
foreach my $idx ( keys %$u_ports ) {
next unless ( defined $u_ports->{$idx} );
my $u_portlist = $u_ports->{$idx};
foreach my $idx ( keys %$t_ports ) {
next unless ( defined $t_ports->{$idx} );
my $t_portlist = $t_ports->{$idx};
my $ret = [];
my ( $vlan_if, $slot ) = $idx =~ /^(\d+)\.(\d+)/;
my $vlan = $vlans->{$vlan_if} || '';
foreach my $portlist ( $u_portlist, $t_portlist ) {
# Convert portlist bit array to bp_index array
for ( my $i = 0; $i <= $#$t_portlist; $i++ ) {
push( @{$ret}, ( $slotx * $slot + $i + 1 ) )
if ( @$t_portlist[$i] );
}
# Convert portlist bit array to bp_index array
for ( my $i = 0; $i <= $#$portlist; $i++ ) {
push( @{$ret}, ( $slotx * $slot + $i + 1 ) )
if ( @$portlist[$i] );
}
#Create HoA ifIndex -> VLAN array
foreach my $port ( @{$ret} ) {
my $ifindex = $index->{$port};
next unless ( defined($ifindex) ); # shouldn't happen
next if ( defined $partial and $ifindex !~ /^$partial$/ );
push( @{ $i_vlan_membership->{$ifindex} }, $vlan );
}
#Create HoA ifIndex -> VLAN array
foreach my $port ( @{$ret} ) {
my $ifindex = $index->{$port};
next unless ( defined($ifindex) ); # shouldn't happen
next if ( defined $partial and $ifindex !~ /^$partial$/ );
push( @{ $i_vlan_membership->{$ifindex} }, $vlan );
}
}
return $i_vlan_membership;