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

Contents of /lib/PXElator/network.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 175 - (show annotations)
Fri Aug 7 12:26:49 2009 UTC (14 years, 8 months ago) by dpavlin
File size: 1172 byte(s)
don't configure tap in ::ip isn't in 172. network
1 package network;
2
3 use warnings;
4 use strict;
5
6 use File::Slurp;
7
8 use server;
9
10 sub ifconfig {
11 my $dev = shift;
12 `/sbin/ifconfig $dev`
13 }
14
15 sub tap {
16
17 if ( $server::ip !~ m{^172} ) {
18 warn "W: not configuring tap0 interface!";
19 return;
20 }
21
22 my $interfaces = read_file '/etc/network/interfaces';
23
24 if ( $interfaces !~ m{tap0}s ) {
25
26 system "sudo apt-get install vde2";
27
28 write_file '/tmp/interfaces', qq{
29
30 # added by PXElator
31 iface tap0 inet static
32 address $server::ip
33 netmask $server::netmask
34 vde2-switch -
35 # setup NAT for vde network
36 post-up sysctl -w net.ipv4.ip_forward=1
37 post-up iptables -t nat -A POSTROUTING -s $server::ip/$server::netmask -o wlan0 -j MASQUERADE
38
39 };
40
41 system q|sudo sh -c 'cat /tmp/interfaces >> /etc/network/interfaces'|;
42 system q|sudo sh -c 'usermod -G vde2-net -a $SUDO_USER'|;
43
44 }
45
46 my $ifconfig = ifconfig('tap0');
47 if ( $ifconfig =~ m{UP} ) {
48 $ifconfig =~ m{$server::ip}s && return 'up';
49 system("sudo /sbin/ifconfig tap0 $server::ip netmask $server::netmask") == 0 && return "ip changed $server::ip";
50 die "can't change IP address of tap0 to $server::ip";
51 } else {
52 die "bring interface up with: sudo ifup tap0\n";
53 }
54 }
55
56 1;

  ViewVC Help
Powered by ViewVC 1.1.26