ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/Unix/tunconfig
Revision: 1.1
Committed: 2004-05-09T16:11:45Z (20 years, 6 months ago) by gbeauche
Branch: MAIN
Log Message:
TUN/TAP support

File Contents

# User Rev Content
1 gbeauche 1.1 #!/bin/bash
2     ###########################################################################
3     # Configuration of the tunN devices for usage with Basilisk II.
4     # (derived MOL tunconfig script)
5     #
6     # This script should be named /usr/share/BasiliskII/tunconfig (unless
7     # the default name has been changed with the 'etherconfig' keyword).
8     #
9     # Usage: tunconfig iface up|down
10     #
11     # If the linux box is configured as a firewall, the rules below might
12     # need some adjustments.
13     #
14     ###########################################################################
15    
16     SUDO=/usr/bin/sudo
17     IPTABLES=/sbin/iptables
18    
19     #########################################################
20    
21     TUN_DEV=$1
22     ACTION=$2
23    
24     TUN_NUM=`echo $TUN_DEV | sed s/[^0-9]//g`
25     NET_NUM=`expr 40 + $TUN_NUM`
26     TUN_NET=172.20.$NET_NUM.0/24
27     TUN_HOST=172.20.$NET_NUM.1
28    
29     #########################################################
30     # Misc Checks
31     #########################################################
32    
33     [[ $# = 2 ]] || {
34     echo "Usage: tunconfig iface up|down"
35     exit 2
36     }
37    
38     [[ "`id -u`" = "0" ]] && {
39     echo "---> $SUDO not necessary." 1>&2
40     SUDO=""
41     }
42    
43     [[ -x $IPTABLES ]] && {
44     IPTABLES="$SUDO $IPTABLES"
45     } || {
46     echo "---> $IPTABLES not found." 1>&2
47     IPTABLES=/bin/true
48     }
49    
50     $IPTABLES -L -n -t nat > /dev/null || exit 1
51    
52     #########################################################
53     # Remove old (possibly stale) ruleset
54     #########################################################
55    
56     {
57     $IPTABLES -t nat -D POSTROUTING -s $TUN_NET -d ! $TUN_NET -j MASQUERADE
58     } >& /dev/null
59    
60     #########################################################
61     # Bring down interface
62     #########################################################
63    
64     [[ "$ACTION" = down ]] && {
65     $SUDO /sbin/ifconfig $TUN_DEV down
66     }
67    
68     #########################################################
69     # Configure interface
70     #########################################################
71    
72     [[ "$ACTION" = up ]] && {
73     $SUDO /sbin/ifconfig $TUN_DEV $TUN_HOST
74    
75     # masquerade the tun network
76     $IPTABLES -t nat -A POSTROUTING -s $TUN_NET -d ! $TUN_NET -j MASQUERADE
77     }
78    
79     exit 0