implementation of store_wireless (without storing, yet)
This commit is contained in:
@@ -43,7 +43,7 @@ sub discover {
|
|||||||
|
|
||||||
store_device($device, $snmp);
|
store_device($device, $snmp);
|
||||||
store_interfaces($device, $snmp);
|
store_interfaces($device, $snmp);
|
||||||
#store_wireless($device, $snmp);
|
store_wireless($device, $snmp);
|
||||||
#store_vlans($device, $snmp);
|
#store_vlans($device, $snmp);
|
||||||
#store_power($device, $snmp);
|
#store_power($device, $snmp);
|
||||||
#store_modules($device, $snmp);
|
#store_modules($device, $snmp);
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ use NetAddr::IP::Lite ':lower';
|
|||||||
use base 'Exporter';
|
use base 'Exporter';
|
||||||
our @EXPORT = ();
|
our @EXPORT = ();
|
||||||
our @EXPORT_OK = qw/
|
our @EXPORT_OK = qw/
|
||||||
store_device store_interfaces
|
store_device store_interfaces store_wireless
|
||||||
/;
|
/;
|
||||||
our %EXPORT_TAGS = (all => \@EXPORT_OK);
|
our %EXPORT_TAGS = (all => \@EXPORT_OK);
|
||||||
|
|
||||||
@@ -196,4 +196,72 @@ sub store_interfaces {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=head2 store_wireless( $device, $snmp )
|
||||||
|
|
||||||
|
Given a Device database object, and a working SNMP connection, discover and
|
||||||
|
store the device's wireless interface information.
|
||||||
|
|
||||||
|
The Device database object can be a fresh L<DBIx::Class::Row> object which is
|
||||||
|
not yet stored to the database.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub store_wireless {
|
||||||
|
my ($device, $snmp) = @_;
|
||||||
|
|
||||||
|
my $ssidlist = $snmp->i_ssidlist;
|
||||||
|
return unless scalar keys %$ssidlist;
|
||||||
|
|
||||||
|
my $interfaces = $snmp->interfaces;
|
||||||
|
my $ssidbcast = $snmp->i_ssidbcast;
|
||||||
|
my $ssidmac = $snmp->i_ssidmac;
|
||||||
|
my $channel = $snmp->i_80211channel;
|
||||||
|
my $power = $snmp->i_dot11_cur_tx_pwr_mw;
|
||||||
|
|
||||||
|
# build device ssid list suitable for DBIC
|
||||||
|
my @ssids;
|
||||||
|
foreach my $entry (keys %$ssidlist) {
|
||||||
|
$entry =~ s/\.\d+$//;
|
||||||
|
my $port = $interfaces->{$entry};
|
||||||
|
|
||||||
|
if (not length $port) {
|
||||||
|
# TODO log message
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
|
||||||
|
push @ssids, {
|
||||||
|
port => $port,
|
||||||
|
ssid => $ssidlist->{$entry},
|
||||||
|
broadcast => $ssidbcast->{$entry},
|
||||||
|
bssid => $ssidmac->{$entry},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
# build device channel list suitable for DBIC
|
||||||
|
my @channels;
|
||||||
|
foreach my $entry (keys %$channel) {
|
||||||
|
$entry =~ s/\.\d+$//;
|
||||||
|
my $port = $interfaces->{$entry};
|
||||||
|
|
||||||
|
if (not length $port) {
|
||||||
|
# TODO log message
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
|
||||||
|
push @channels, {
|
||||||
|
port => $port,
|
||||||
|
channel => $channel->{$entry},
|
||||||
|
power => $power->{$entry},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
# FIXME not sure what relations need adding for wireless ports
|
||||||
|
#
|
||||||
|
#schema('netdisco')->txn_do(sub {
|
||||||
|
# $device->ports->delete;
|
||||||
|
# $device->update_or_insert;
|
||||||
|
# $device->ports->populate(\@interfaces);
|
||||||
|
#});
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|||||||
Reference in New Issue
Block a user