/[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 84 by dpavlin, Fri Nov 23 00:48:49 2007 UTC revision 85 by dpavlin, Wed Dec 5 23:13:38 2007 UTC
# Line 5  use warnings; Line 5  use warnings;
5    
6  use Module::Pluggable;  use Module::Pluggable;
7  use MDAP;  use MDAP;
8    use NetAddr::IP;
9    
10  my $serial2ip = {  # start IPs
11          'CP0636JT3SH' => '192.168.1.242;10.0.0.1',  my $ip1 = NetAddr::IP->new('192.168.1.242/24');
12          'CP0644JTHJ4' => '192.168.1.243;10.0.0.2',  my $ip2 = NetAddr::IP->new('10.0.0.1/8');
13          'CP0624BH55U' => '192.168.1.244;10.0.0.3',  
14          'CP0703KT3PP' => '10.0.0.4',  my @serials = ( qw/
15  };          CP0636JT3SH
16            CP0644JTHJ4
17            CP0624BH55U
18            CP0703KT3PP
19    /);
20    
21    my $serial2ip;
22    
23    foreach my $serial ( @serials ) {
24            $serial2ip->{$serial} = $ip1++ . ';' . $ip2++;
25    }
26    
27  sub check {  sub check {
28          my ( $self, $h ) = @_;          my ( $self, $h ) = @_;
# Line 20  sub check { Line 31  sub check {
31          my $ip_list = $h->{'IP_LIST'} || die "no IP_LIST";          my $ip_list = $h->{'IP_LIST'} || die "no IP_LIST";
32    
33          if ( my $ip = $serial2ip->{$serial} ) {          if ( my $ip = $serial2ip->{$serial} ) {
34                  if ( $ip eq $ip_list ) {                  my $ip_only = $ip;
35                    $ip_only =~ s/\/\d+//g;
36                    if ( $ip eq $ip_list || $ip_only eq $ip_list ) {
37                          once "OK ",__PACKAGE__," $serial $ip_list";                          once "OK ",__PACKAGE__," $serial $ip_list";
38                          return;                          return;
39                  }                  }
# Line 33  sub check { Line 46  sub check {
46    
47                  my $ip_status;                  my $ip_status;
48                  $ip_status->{$_}-- foreach ( split(/;/, $ip_list ) );                  $ip_status->{$_}-- foreach ( split(/;/, $ip_list ) );
49                  $ip_status->{$_}++ foreach ( split(/;/, $ip ) );                  $ip_status->{$_}++ foreach ( split(/;/, $ip_only ) );
50                  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 ) {
51                          if ( $ip_status->{$current_ip} < 0 ) {                          if ( $ip_status->{$current_ip} < 0 ) {
52                                  warn "-- remove IP $current_ip\n" if $debug;                                  warn "-- remove IP $current_ip\n" if $debug;
53                                  return "ip ipdelete addr=$current_ip";                                  return "ip ipdelete addr=$current_ip";
54                          } elsif ( $ip_status->{$current_ip} > 0 ) {                          } elsif ( $ip_status->{$current_ip} > 0 ) {
55                                  my $mask = '';                                  warn "++ add IP $current_ip\n" if $debug;
56                                  $mask = '/8'  if $current_ip =~ m/^10\./;                                  return "ip ipadd intf=LocalNetwork addr=$current_ip";
                                 $mask = '/24' if $current_ip =~ m/^192\.168\./;  
                                 warn "++ add IP $current_ip$mask\n" if $debug;  
                                 return "ip ipadd intf=LocalNetwork addr=$current_ip$mask";  
57                          }                          }
58                  }                  }
59                  return;                  return;
60          } else {          } else {
61                  once "ERROR: can't find serial2ip mapping for $serial IP $ip_list";                  once "WARNING: unknown serial $serial assigning $ip1;$ip2";
62                    $serial2ip->{$serial} = $ip1++ . ';' . $ip2++;
63                  return;                  return;
64          }          }
65  }  }

Legend:
Removed from v.84  
changed lines
  Added in v.85

  ViewVC Help
Powered by ViewVC 1.1.26