Justin Hunter's patch, SF ID 1341140, add set_i_duplex_admin and set_i_speed_admin methods
This commit is contained in:
@@ -136,6 +136,54 @@ sub i_duplex_admin {
|
|||||||
return \%i_duplex_admin;
|
return \%i_duplex_admin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
### we want to be able to set speed on 2900 class switches
|
||||||
|
###
|
||||||
|
### $info->set_i_speed_admin("100", ifIndex);
|
||||||
|
### speed choices are 'auto', '10', '100'
|
||||||
|
###
|
||||||
|
sub set_i_speed_admin {
|
||||||
|
# map speeds to those the switch will understand
|
||||||
|
my %speeds = qw/auto 1 10 10000000 100 100000000/;
|
||||||
|
|
||||||
|
my $c2900 = shift;
|
||||||
|
my ($speed, $iid) = @_;
|
||||||
|
my $c2900_p_index = $c2900->c2900_p_index();
|
||||||
|
my %reverse_2900 = reverse %$c2900_p_index;
|
||||||
|
|
||||||
|
$speed = lc($speed);
|
||||||
|
|
||||||
|
return 0 unless defined $speeds{$speed};
|
||||||
|
|
||||||
|
# account for weirdness of c2900 mib
|
||||||
|
$iid = $reverse_2900{$iid};
|
||||||
|
|
||||||
|
return $c2900->set_c2900_p_speed_admin($speeds{$speed}, $iid);
|
||||||
|
}
|
||||||
|
|
||||||
|
### we want to be able to set duplex on 2900 class switches
|
||||||
|
###
|
||||||
|
### $info->set_i_duplex_admin("half", ifIndex);
|
||||||
|
### duplex choices are 'auto', 'half', 'full'
|
||||||
|
###
|
||||||
|
sub set_i_duplex_admin {
|
||||||
|
# map a textual duplex to an integer one the switch understands
|
||||||
|
my %duplexes = qw/full 1 half 2 auto 3/;
|
||||||
|
|
||||||
|
my $c2900 = shift;
|
||||||
|
my ($duplex, $iid) = @_;
|
||||||
|
my $c2900_p_index = $c2900->c2900_p_index();
|
||||||
|
my %reverse_2900 = reverse %$c2900_p_index;
|
||||||
|
|
||||||
|
$duplex = lc($duplex);
|
||||||
|
|
||||||
|
return 0 unless defined $duplexes{$duplex};
|
||||||
|
|
||||||
|
# account for weirdness of c2900 mib
|
||||||
|
$iid = $reverse_2900{$iid};
|
||||||
|
|
||||||
|
return $c2900->set_c2900_p_duplex_admin($duplexes{$duplex}, $iid);
|
||||||
|
}
|
||||||
|
|
||||||
# Use i_descritption for port key, cuz i_name can be manually entered.
|
# Use i_descritption for port key, cuz i_name can be manually entered.
|
||||||
sub interfaces {
|
sub interfaces {
|
||||||
my $c2900 = shift;
|
my $c2900 = shift;
|
||||||
@@ -274,6 +322,33 @@ to a hash.
|
|||||||
|
|
||||||
Crosses $c2900->c2900_p_index() with $c2900->c2900_p_duplex_admin;
|
Crosses $c2900->c2900_p_index() with $c2900->c2900_p_duplex_admin;
|
||||||
|
|
||||||
|
=item $c2900->set_i_speed_admin(speed, ifIndex)
|
||||||
|
|
||||||
|
Sets port speed, must be supplied with speed and port ifIndex
|
||||||
|
|
||||||
|
Speed choices are 'auto', '10', '100'
|
||||||
|
|
||||||
|
Crosses $c2900->c2900_p_index() with $c2900->c2900_p_duplex_admin to
|
||||||
|
utilize port ifIndex.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
my %if_map = reverse %{$info->interfaces()};
|
||||||
|
$info->set_i_up_admin('auto', $if_map{'FastEthernet0/1'})
|
||||||
|
or die "Couldn't change port speed. ",$info->error(1);
|
||||||
|
|
||||||
|
=item $c2900->set_i_duplex_admin(duplex, ifIndex)
|
||||||
|
|
||||||
|
Sets port duplex, must be supplied with duplex and port ifIndex
|
||||||
|
|
||||||
|
Speed choices are 'auto', 'half', 'full'
|
||||||
|
|
||||||
|
Crosses $c2900->c2900_p_index() with $c2900->c2900_p_duplex_admin to
|
||||||
|
utilize port ifIndex.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
my %if_map = reverse %{$info->interfaces()};
|
||||||
|
$info->set_i_up_admin('auto', $if_map{'FastEthernet0/1'})
|
||||||
|
or die "Couldn't change port duplex. ",$info->error(1);
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user