Add i_vlan_membership_untagged() to L3::F5, L2::C1900, and L2::HP4000
This commit is contained in:
@@ -261,6 +261,8 @@ sub i_vlan_membership {
|
|||||||
return $i_vlan_membership;
|
return $i_vlan_membership;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub i_vlan_membership_untagged { return; }
|
||||||
|
|
||||||
sub bp_index {
|
sub bp_index {
|
||||||
my $c1900 = shift;
|
my $c1900 = shift;
|
||||||
my $partial = shift;
|
my $partial = shift;
|
||||||
@@ -470,6 +472,9 @@ bridge group IDs.
|
|||||||
print "Port: $port VLAN: $vlan\n";
|
print "Port: $port VLAN: $vlan\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=item $c1900->i_vlan_membership_untagged()
|
||||||
|
|
||||||
|
Unsupported, returns nothing.
|
||||||
|
|
||||||
=item $c1900->bp_index()
|
=item $c1900->bp_index()
|
||||||
|
|
||||||
|
|||||||
@@ -376,6 +376,20 @@ sub i_vlan_membership {
|
|||||||
return $i_vlan_membership;
|
return $i_vlan_membership;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub i_vlan_membership_untagged {
|
||||||
|
my $hp = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
|
||||||
|
my $vlans = $hp->i_vlan($partial);
|
||||||
|
my $i_vlan_membership = {};
|
||||||
|
foreach my $port (keys %$vlans) {
|
||||||
|
my $vlan = $vlans->{$port};
|
||||||
|
push( @{ $i_vlan_membership->{$port} }, $vlan );
|
||||||
|
}
|
||||||
|
|
||||||
|
return $i_vlan_membership;
|
||||||
|
}
|
||||||
|
|
||||||
sub set_i_vlan {
|
sub set_i_vlan {
|
||||||
my $hp = shift;
|
my $hp = shift;
|
||||||
my $rv;
|
my $rv;
|
||||||
@@ -680,6 +694,12 @@ It is the union of tagged, untagged, and auto ports.
|
|||||||
print "Port: $port VLAN: $vlan\n";
|
print "Port: $port VLAN: $vlan\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=item $hp->i_vlan_membership_untagged()
|
||||||
|
|
||||||
|
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
|
||||||
|
IDs. These are the VLANs which are members of the untagged egress list for
|
||||||
|
the port.
|
||||||
|
|
||||||
=item $hp->v_index()
|
=item $hp->v_index()
|
||||||
|
|
||||||
Returns VLAN IDs
|
Returns VLAN IDs
|
||||||
|
|||||||
@@ -255,6 +255,37 @@ sub i_vlan_membership {
|
|||||||
return $i_vlan_membership;
|
return $i_vlan_membership;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub i_vlan_membership_untagged {
|
||||||
|
my $f5 = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
|
||||||
|
my $index = $f5->i_index($partial) || {};
|
||||||
|
my $tagged = $f5->sys_vm_tagged() || {};
|
||||||
|
my $vlans = $f5->v_index() || {};
|
||||||
|
|
||||||
|
my $i_vlan_membership = {};
|
||||||
|
foreach my $iid ( keys %$tagged ) {
|
||||||
|
|
||||||
|
next unless $tagged->{$iid} eq 'false';
|
||||||
|
# IID is length.vlan name index.length.interface index
|
||||||
|
# Split out and use as the IID to get the VLAN ID and ifIndex
|
||||||
|
my @iid_array = split /\./, $iid;
|
||||||
|
my $len = $iid_array[0];
|
||||||
|
my $v_idx = join '.', ( splice @iid_array, 0, $len + 1 );
|
||||||
|
my $idx = join '.', @iid_array;
|
||||||
|
|
||||||
|
# Check to make sure we can map to a port
|
||||||
|
my $p_idx = $index->{$idx};
|
||||||
|
next unless $p_idx;
|
||||||
|
|
||||||
|
my $vlan = $vlans->{$v_idx};
|
||||||
|
next unless $vlan;
|
||||||
|
|
||||||
|
push( @{ $i_vlan_membership->{$idx} }, $vlan );
|
||||||
|
}
|
||||||
|
return $i_vlan_membership;
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
__END__
|
__END__
|
||||||
|
|
||||||
@@ -391,6 +422,12 @@ IDs.
|
|||||||
print "Port: $port VLAN: $vlan\n";
|
print "Port: $port VLAN: $vlan\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=item $f5->i_vlan_membership_untagged()
|
||||||
|
|
||||||
|
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
|
||||||
|
IDs. These are the VLANs which are members of the untagged egress list for
|
||||||
|
the port.
|
||||||
|
|
||||||
=item $f5->v_index()
|
=item $f5->v_index()
|
||||||
|
|
||||||
Returns VLAN IDs
|
Returns VLAN IDs
|
||||||
|
|||||||
Reference in New Issue
Block a user