--- lib/PXElator/network.pm 2009/08/04 17:16:11 140 +++ lib/PXElator/network.pm 2009/08/16 21:35:23 229 @@ -12,13 +12,40 @@ `/sbin/ifconfig $dev` } +sub setup { + + if ( my $dev = $ENV{DEV} ) { + warn "W: running under device $dev, not configuring network\n"; + return; + } + + my $ifconfig = ifconfig('virtual'); + if ( $ifconfig !~ m{UP} ) { + system "brctl addbr virtual"; + system "brctl setfd virtual 0"; + system("/sbin/ifconfig virtual $server::ip netmask $server::netmask") == 0 || warn "W: $!"; + } else { + warn "OK $ifconfig\n"; + } +} + sub tap { + if ( my $dev = $ENV{DEV} ) { + warn "W: running under device $dev, not configuring tap0\n"; + return; + } + + if ( $server::ip !~ m{^172} ) { + warn "W: server ip mismetch, not configuring tap0\n"; + return; + } + my $interfaces = read_file '/etc/network/interfaces'; if ( $interfaces !~ m{tap0}s ) { - system "sudo apt-get install vde2"; + system "sudo apt-get install -y vde2"; write_file '/tmp/interfaces', qq{ @@ -27,6 +54,9 @@ address $server::ip netmask $server::netmask vde2-switch - + # setup NAT for vde network + post-up sysctl -w net.ipv4.ip_forward=1 + post-up iptables -t nat -A POSTROUTING -s $server::ip/$server::netmask -o wlan0 -j MASQUERADE };