Skip to content

Commit 4e78266

Browse files
committed
fix: Updated TP-Link devices support
1 parent d564fe9 commit 4e78266

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

lib/GLPI/Agent/SNMP/MibSupport/TpLink.pm

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,10 @@ our $mibSupport = [
5151
}
5252
];
5353

54-
my $sysobjectid;
55-
5654
sub _getOlderSysInfo {
5755
my ($self, $info) = @_;
58-
$sysobjectid = $self->get(sysObjectID) unless $sysobjectid;
59-
return $self->get($sysobjectid . ".1.1.1." . $info);
56+
$self->{_sysobjectid} = $self->get(sysObjectID) unless $self->{_sysobjectid};
57+
return $self->get($self->{_sysobjectid} . ".1.1.1." . $info);
6058
}
6159

6260
sub getFirmware {
@@ -75,6 +73,8 @@ sub getMacAddress {
7573
or return;
7674

7775
$macaddr = getCanonicalString($macaddr);
76+
# On some older devices, mac address may be shifted by a bootutil software
77+
$macaddr = getCanonicalString($self->_getOlderSysInfo("8.0")) if $macaddr =~ /^TP-LINK/;
7878
$macaddr =~ s/-/:/g;
7979

8080
return getCanonicalMacAddress($macaddr);
@@ -105,7 +105,13 @@ sub getSerial {
105105
my $serial = $self->get(tpSysInfoSerialNum) || $self->_getOlderSysInfo("7.0")
106106
or return;
107107

108-
return getCanonicalString($serial);
108+
$serial = getCanonicalString($serial);
109+
# On some older devices, mac address may be shifted by a bootutil software
110+
$serial = getCanonicalString($self->_getOlderSysInfo("8.0")) if $serial =~ /^TP-LINK/;
111+
# On some older devices from new generation, tpSysInfoSerialNum may still not be present
112+
$serial = getCanonicalString($self->get(tpSysInfoMacAddr)) if $serial =~ /days/;
113+
114+
return $serial;
109115
}
110116

111117
sub run {
@@ -127,7 +133,7 @@ sub run {
127133

128134
# Older TP-Link device won't find data under recent oid and it seems we have to
129135
# look for values under oid given by sysObjectID
130-
if ($sysobjectid) {
136+
if ($self->{_sysobjectid}) {
131137
my $hardware_version = $self->_getOlderSysInfo("5.0");
132138
if ($hardware_version) {
133139
$device->addFirmware({

0 commit comments

Comments
 (0)