/[pxelator]/lib/PXElator/network.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/PXElator/network.pm

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

revision 83 by dpavlin, Fri Jul 31 17:12:52 2009 UTC revision 288 by dpavlin, Tue Aug 25 17:09:52 2009 UTC
# Line 6  use strict; Line 6  use strict;
6  use File::Slurp;  use File::Slurp;
7    
8  use server;  use server;
9    use ip;
10    
11  sub ifconfig {  sub ifconfig {
12          my $dev = shift;          my $dev = shift;
13          `/sbin/ifconfig $dev`          `/sbin/ifconfig $dev`
14  }  }
15    
16    sub setup {
17    
18            if ( my $dev = $ENV{DEV} ) {
19                    warn "W: running under device $dev, not configuring network\n";
20                    return;
21            }
22    
23            my $ifconfig = ifconfig('virtual');
24            if ( $ifconfig !~ m{UP} ) {
25                    system "brctl addbr virtual";
26                    system "brctl setfd virtual 0";
27                    system("/sbin/ifconfig virtual $server::ip netmask $server::netmask") == 0 || warn "W: $!";
28            } else {
29                    server::setup_from_dev( 'virtual' );
30            }
31            if ( my $dev = ip::default_route_dev() ) {
32                    system "sudo sysctl -w net.ipv4.ip_forward=1";
33                    my $network = ip::from_int( ip::to_int($server::ip) & ip::to_int($server::netmask) );
34                    warn "# network $network";
35                    system "sudo iptables -t nat -L POSTROUTING -n | grep $network || sudo iptables -t nat -A POSTROUTING -s $server::ip/$server::netmask -o wlan0 -j MASQUERADE";
36                    warn "masquarade to $dev";
37            }
38    }
39    
40  sub tap {  sub tap {
41    
42            if ( my $dev = $ENV{DEV} ) {
43                    warn "W: running under device $dev, not configuring tap0\n";
44                    return;
45            }
46    
47            if ( $server::ip !~ m{^172} ) {
48                    warn "W: server ip mismetch, not configuring tap0\n";
49                    return;
50            }
51    
52          my $interfaces = read_file '/etc/network/interfaces';          my $interfaces = read_file '/etc/network/interfaces';
53    
54          if ( $interfaces !~ m{tap0.*$server::ip}s ) {          if ( $interfaces !~ m{tap0}s ) {
55    
56                  system "sudo apt-get install vde2";                  system "sudo apt-get install -y vde2";
57    
58                  $interfaces .= qq{                  write_file '/tmp/interfaces', qq{
59    
60          iface tap0 inet static  # added by PXElator
61            address $server::ip  iface tap0 inet static
62            netmask $server::netmask          address $server::ip
63            vde2-switch -          netmask $server::netmask
64            vde2-switch -
65            # setup NAT for vde network
66            post-up sysctl -w net.ipv4.ip_forward=1
67            post-up iptables -t nat -A POSTROUTING -s $server::ip/$server::netmask -o wlan0 -j MASQUERADE
68    
69                  };                  };
70    
71                  write_file '/etc/network/interfaces', $interfaces;                  system q|sudo sh -c 'cat /tmp/interfaces >> /etc/network/interfaces'|;
72                    system q|sudo sh -c 'usermod -G vde2-net -a $SUDO_USER'|;
73    
74          }          }
75    
76          ifconfig('tap0') =~ m{UP}               &&      return 'up';          my $ifconfig = ifconfig('tap0');
77          system("sudo ifup tap0") == 0   &&      return 'started';          if ( $ifconfig =~ m{UP} ) {
78                     $ifconfig =~ m{$server::ip}s && return 'up';
79                    system("sudo /sbin/ifconfig tap0 $server::ip netmask $server::netmask") == 0 && return "ip changed $server::ip";
80                    die "can't change IP address of tap0 to $server::ip";
81            } else {
82                    die "bring interface up with: sudo ifup tap0\n";
83            }
84  }  }
85    
86  1;  1;

Legend:
Removed from v.83  
changed lines
  Added in v.288

  ViewVC Help
Powered by ViewVC 1.1.26