From a4e7c3a61aafd62d994179807a504b3cf02f69f7 Mon Sep 17 00:00:00 2001 From: "Eric A. Miller" Date: Thu, 9 Jan 2014 21:31:58 -0500 Subject: [PATCH] Fix Extreme XOS i_vlan_membership - Revert [28bbe0], fix bug with untagged being added to @ret twice (Robert Kerr) --- ChangeLog | 2 ++ Info/Layer3/Extreme.pm | 17 +++++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 22c74c7f..ba482d42 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,8 @@ version 3.11 * [#51] Netdisco shows broken topology for devices with no alias entry for primary IP - Collect nsIfMngIp when getting IP interfaces in L3::Netscreen + * Fix Extreme XOS i_vlan_membership - Revert [28bbe0], fix bug with + untagged being added to @ret twice (Robert Kerr) version 3.10 (2013-12-16) diff --git a/Info/Layer3/Extreme.pm b/Info/Layer3/Extreme.pm index 2668d1cd..2793e39a 100644 --- a/Info/Layer3/Extreme.pm +++ b/Info/Layer3/Extreme.pm @@ -485,21 +485,26 @@ 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 %$t_ports ) { - next unless ( defined $t_ports->{$idx} ); + foreach my $idx ( keys %$u_ports ) { + next unless ( defined $u_ports->{$idx} ); + my $u_portlist = $u_ports->{$idx}; my $t_portlist = $t_ports->{$idx}; my $ret = []; my ( $vlan_if, $slot ) = $idx =~ /^(\d+)\.(\d+)/; my $vlan = $vlans->{$vlan_if} || ''; - # 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] ); + foreach my $portlist ( $u_portlist, $t_portlist ) { + + # 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