return $self;
}
-my $cpe_faulty;
+our $cpe_faulty;
my $serial2ip = {
- 'CP0636JT3SH' => '192.168.1.242',
- 'CP0644JTHJ4' => '192.168.1.253',
+ 'CP0636JT3SH' => '10.0.0.1',
+ 'CP0644JTHJ4' => '10.0.0.2',
+ 'CP0624BH55U' => '10.0.0.3',
};
my ( $last_ip, $last_serial );
+=head2 state2serial
+
+ my $serial = state2serial( $state );
+
+=cut
+
sub state2serial {
my $state = shift;
- my $serial = $state->{DeviceID}->{SerialNumber} || die "no serial?";
- my $ip = $state->{Parameter}->{'.ExternalIPAddress'} || die "no ip?";
+ my $serial = $state->{DeviceID}->{SerialNumber} || die "no DeviceID.SerialNumber in ",dump($state);
+ chomp($serial);
+ my $ip =
+ $state->{Parameter}->{'.ExternalIPAddress'} ||
+ $state->{Parameter}->{
+ # fix for firmware 5.3.3.4 which returns full path
+ ( grep { m/\.ExternalIPAddress/ } keys %{ $state->{Parameter} } )[0]
+ } ||
+ die "no .ExternalIPAddress in ",dump($state);
- warn "## state2serial $serial $ip\n";
+ warn "## state2serial $serial $ip\n" if $debug;
( $last_ip, $last_serial ) = ( $ip, $serial );
return ( $serial, $ip );
}
+=head2 add_triggers
+
+Install all custom triggers
+
+ CWMP::Vendor->add_triggers;
+
+=cut
+
sub add_triggers {
- warn __PACKAGE__, "->add_triggers\n";
+ warn __PACKAGE__, "->add_triggers\n" if $debug;
CWMP::Request->add_trigger( name => 'Fault', callback => sub {
my ( $self, $state ) = @_;
- warn "## Fault trigger state = ",dump( $self, $state );
+ warn "## Fault trigger state = ",dump( $self, $state ) if $debug;
die "can't map fault to serial!" unless $last_serial;
warn "ERROR: got Fault and ingoring $last_ip $last_serial\n";
$cpe_faulty->{$last_serial}++;
my ( $serial, $ip ) = state2serial( $state );
if ( $cpe_faulty->{$serial} ) {
- warn "## Inform trigger from $ip $serial -- IGNORED\n"; # if $debug;
+ warn "## Inform trigger from $ip $serial -- IGNORED\n" if $debug;
return;
}
- warn "## Inform trigger from $ip $serial\n"; # if $debug;
+ warn "## Inform trigger from $ip $serial\n" if $debug;
my $found = 0;
- warn "### serial2ip = ",dump( $serial2ip );
+ warn "### serial2ip = ",dump( $serial2ip ) if $debug;
foreach my $target_serial ( keys %$serial2ip ) {