/[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

Annotation of /lib/MDAP/ChangeIP.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 82 - (hide annotations)
Fri Nov 23 00:48:49 2007 UTC (16 years, 5 months ago) by dpavlin
File size: 1463 byte(s)
 r126@brr:  dpavlin | 2007-11-23 01:48:41 +0100
 new IP

1 dpavlin 49 package MDAP::ChangeIP;
2 dpavlin 47
3     use strict;
4     use warnings;
5    
6 dpavlin 49 use Module::Pluggable;
7 dpavlin 58 use MDAP;
8 dpavlin 47
9     my $serial2ip = {
10 dpavlin 54 'CP0636JT3SH' => '192.168.1.242;10.0.0.1',
11     'CP0644JTHJ4' => '192.168.1.243;10.0.0.2',
12     'CP0624BH55U' => '192.168.1.244;10.0.0.3',
13 dpavlin 82 'CP0703KT3PP' => '10.0.0.4',
14 dpavlin 47 };
15    
16     sub check {
17 dpavlin 49 my ( $self, $h ) = @_;
18 dpavlin 47
19     my $serial = $h->{'_PROD_SERIAL_NBR'} || die "no serial?";
20     my $ip_list = $h->{'IP_LIST'} || die "no IP_LIST";
21    
22     if ( my $ip = $serial2ip->{$serial} ) {
23 dpavlin 49 if ( $ip eq $ip_list ) {
24 dpavlin 58 once "OK ",__PACKAGE__," $serial $ip_list";
25 dpavlin 49 return;
26     }
27 dpavlin 47
28     warn "## change_ip $serial ",
29     $h->{'_VARIANT_FRIENDLY_NAME'}, " ",
30     $h->{'_BOARD_NAME'}, " ",
31     $h->{'_BUILD'}, " ",
32 dpavlin 58 "IP $ip_list -> $ip\n" if $debug;
33    
34 dpavlin 47 my $ip_status;
35     $ip_status->{$_}-- foreach ( split(/;/, $ip_list ) );
36     $ip_status->{$_}++ foreach ( split(/;/, $ip ) );
37     foreach my $current_ip ( sort { $ip_status->{$b} <=> $ip_status->{$a} } keys %$ip_status ) {
38     if ( $ip_status->{$current_ip} < 0 ) {
39 dpavlin 58 warn "-- remove IP $current_ip\n" if $debug;
40 dpavlin 47 return "ip ipdelete addr=$current_ip";
41     } elsif ( $ip_status->{$current_ip} > 0 ) {
42 dpavlin 79 my $mask = '';
43     $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 dpavlin 47 }
48     }
49     return;
50     } else {
51 dpavlin 58 once "ERROR: can't find serial2ip mapping for $serial IP $ip_list";
52 dpavlin 47 return;
53     }
54     }
55    
56 dpavlin 51 1;

  ViewVC Help
Powered by ViewVC 1.1.26