/[mdap]/lib/MDAP/ChangeIP.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

Diff of /lib/MDAP/ChangeIP.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 51 by dpavlin, Fri Nov 16 17:03:33 2007 UTC revision 82 by dpavlin, Fri Nov 23 00:48:49 2007 UTC
# Line 4  use strict; Line 4  use strict;
4  use warnings;  use warnings;
5    
6  use Module::Pluggable;  use Module::Pluggable;
7  use Data::Dump qw/dump/;  use MDAP;
   
 my $debug = 0;  
 my $verbose = 1;  
8    
9  my $serial2ip = {  my $serial2ip = {
10          'CP0636JT3SH' => '192.168.1.242;10.0.0.242',          'CP0636JT3SH' => '192.168.1.242;10.0.0.1',
11          'CP0644JTHJ4' => '192.168.1.243;10.0.0.243',          'CP0644JTHJ4' => '192.168.1.243;10.0.0.2',
12          'CP0624BH55U' => '192.168.1.244;10.0.0.244',          'CP0624BH55U' => '192.168.1.244;10.0.0.3',
13            'CP0703KT3PP' => '10.0.0.4',
14  };  };
15    
16  sub check {  sub check {
17          my ( $self, $h ) = @_;          my ( $self, $h ) = @_;
         warn "## ",__PACKAGE__,"check(",dump($h),")" if $debug;  
18    
19          my $serial = $h->{'_PROD_SERIAL_NBR'} || die "no serial?";          my $serial = $h->{'_PROD_SERIAL_NBR'} || die "no serial?";
   
20          my $ip_list = $h->{'IP_LIST'} || die "no IP_LIST";          my $ip_list = $h->{'IP_LIST'} || die "no IP_LIST";
21    
22          if ( my $ip = $serial2ip->{$serial} ) {          if ( my $ip = $serial2ip->{$serial} ) {
23                  if ( $ip eq $ip_list ) {                  if ( $ip eq $ip_list ) {
24                          warn "OK ",__PACKAGE__," $serial $ip_list\n" if $verbose;                          once "OK ",__PACKAGE__," $serial $ip_list";
25                          return;                          return;
26                  }                  }
27    
# Line 33  sub check { Line 29  sub check {
29                          $h->{'_VARIANT_FRIENDLY_NAME'}, " ",                          $h->{'_VARIANT_FRIENDLY_NAME'}, " ",
30                          $h->{'_BOARD_NAME'}, " ",                          $h->{'_BOARD_NAME'}, " ",
31                          $h->{'_BUILD'}, " ",                          $h->{'_BUILD'}, " ",
32                          "IP $ip_list -> $ip\n" if $verbose;                          "IP $ip_list -> $ip\n" if $debug;
33    
34                  my $ip_status;                  my $ip_status;
35                  $ip_status->{$_}-- foreach ( split(/;/, $ip_list ) );                  $ip_status->{$_}-- foreach ( split(/;/, $ip_list ) );
36                  $ip_status->{$_}++ foreach ( split(/;/, $ip ) );                  $ip_status->{$_}++ foreach ( split(/;/, $ip ) );
37                  foreach my $current_ip ( sort { $ip_status->{$b} <=> $ip_status->{$a} } keys %$ip_status ) {                  foreach my $current_ip ( sort { $ip_status->{$b} <=> $ip_status->{$a} } keys %$ip_status ) {
                         warn "## current_ip = $current_ip\n";  
38                          if ( $ip_status->{$current_ip} < 0 ) {                          if ( $ip_status->{$current_ip} < 0 ) {
39                                  warn "-- remove IP $current_ip\n";                                  warn "-- remove IP $current_ip\n" if $debug;
40                                  return "ip ipdelete addr=$current_ip";                                  return "ip ipdelete addr=$current_ip";
41                          } elsif ( $ip_status->{$current_ip} > 0 ) {                          } elsif ( $ip_status->{$current_ip} > 0 ) {
42                                  warn "-- add IP $current_ip\n";                                  my $mask = '';
43                                  return "ip ipadd intf=LocalNetwork addr=$current_ip";                                  $mask = '/8'  if $current_ip =~ m/^10\./;
44                                    $mask = '/24' if $current_ip =~ m/^192\.168\./;
45                                    warn "++ add IP $current_ip$mask\n" if $debug;
46                                    return "ip ipadd intf=LocalNetwork addr=$current_ip$mask";
47                          }                          }
48                  }                  }
49                  return;                  return;
50          } else {          } else {
51                  warn "!! can't find serial2ip mapping for $serial IP $ip_list\n";                  once "ERROR: can't find serial2ip mapping for $serial IP $ip_list";
52                  return;                  return;
53          }          }
54  }  }

Legend:
Removed from v.51  
changed lines
  Added in v.82

  ViewVC Help
Powered by ViewVC 1.1.26