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

Annotation of /lib/PXElator/network.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 229 - (hide annotations)
Sun Aug 16 21:35:23 2009 UTC (14 years, 9 months ago) by dpavlin
File size: 1683 byte(s)
use kernel bridge (named virtual) instead of vde

it's much faster, and we know all commands to use it :-)

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

  ViewVC Help
Powered by ViewVC 1.1.26