/[cwmp]/google/trunk/lib/CWMP/Vendor.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /google/trunk/lib/CWMP/Vendor.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 206 - (show annotations)
Wed Nov 14 23:07:42 2007 UTC (16 years, 7 months ago) by dpavlin
File size: 2421 byte(s)
 r224@brr:  dpavlin | 2007-11-15 00:07:18 +0100
 hush debug ouput

1 package CWMP::Vendor;
2
3 use strict;
4 use warnings;
5
6
7 use base qw/Class::Accessor/;
8 __PACKAGE__->mk_accessors( qw/
9 debug
10 / );
11
12 #use Carp qw/confess/;
13 use Data::Dump qw/dump/;
14
15 =head1 NAME
16
17 CWMP::Vendor - implement vendor specific logic into ACS server
18
19 =head1 METHODS
20
21 =head2 new
22
23 my $obj = CWMP::Vendor->new({
24 debug => 1
25 });
26
27 =cut
28
29 my $debug = 0;
30
31 sub new {
32 my $class = shift;
33 my $self = $class->SUPER::new( @_ );
34
35 warn "created ", __PACKAGE__, "(", dump( @_ ), ") object\n" if $self->debug;
36
37 $debug = $self->debug;
38
39 return $self;
40 }
41
42 my $cpe_faulty;
43
44 my $serial2ip = {
45 'CP0636JT3SH' => '192.168.1.242',
46 'CP0644JTHJ4' => '192.168.1.253',
47 };
48
49 my ( $last_ip, $last_serial );
50
51 sub state2serial {
52 my $state = shift;
53
54 my $serial = $state->{DeviceID}->{SerialNumber} || die "no serial?";
55 my $ip = $state->{Parameter}->{'.ExternalIPAddress'} || die "no ip?";
56
57 warn "## state2serial $serial $ip\n" if $debug;
58
59 ( $last_ip, $last_serial ) = ( $ip, $serial );
60
61 return ( $serial, $ip );
62 }
63
64 sub add_triggers {
65
66 warn __PACKAGE__, "->add_triggers\n" if $debug;
67
68 CWMP::Request->add_trigger( name => 'Fault', callback => sub {
69 my ( $self, $state ) = @_;
70 warn "## Fault trigger state = ",dump( $self, $state ) if $debug;
71 die "can't map fault to serial!" unless $last_serial;
72 warn "ERROR: got Fault and ingoring $last_ip $last_serial\n";
73 $cpe_faulty->{$last_serial}++;
74 });
75
76 CWMP::Request->add_trigger( name => 'Inform', callback => sub {
77 my ( $self, $state ) = @_;
78
79 my ( $serial, $ip ) = state2serial( $state );
80
81 if ( $cpe_faulty->{$serial} ) {
82 warn "## Inform trigger from $ip $serial -- IGNORED\n" if $debug;
83 return;
84 }
85
86 warn "## Inform trigger from $ip $serial\n" if $debug;
87
88 my $found = 0;
89
90 warn "### serial2ip = ",dump( $serial2ip ) if $debug;
91
92 foreach my $target_serial ( keys %$serial2ip ) {
93
94 next unless $target_serial eq $serial;
95
96 $found++;
97
98 my $target_ip = $serial2ip->{$target_serial};
99
100 if ( $ip ne $target_ip ) {
101
102 warn "CHANGE IP $ip to $target_ip for $serial\n";
103
104 return; # FIXME
105
106 my $q = CWMP::Queue->new({ id => $serial, debug => $debug }) || die "no queue?";
107
108 $q->enqueue( 'SetParameterValues', {
109 'InternetGatewayDevice.LANDevice.1.LANHostConfigManagement.IPInterface.1.IPInterfaceIPAddress' => $target_ip,
110 });
111
112 } else {
113 warn "IP $ip of $serial ok\n";
114 }
115 }
116
117 warn "UNKNOWN CPE $ip $serial\nadd\t'$serial' => '$ip',\n" unless $found;
118
119 });
120
121 }#add_triggers
122
123 1;

  ViewVC Help
Powered by ViewVC 1.1.26