Cody Schuffelen | ea55d4b | 2018-09-07 15:17:58 -0700 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | |
| 3 | # Create the host networks for the VLAN prototype. |
| 4 | # Runs as root. |
| 5 | # Use at your own risk. |
| 6 | |
| 7 | create_interface() { |
| 8 | bridge="$(printf cvd-v${1}br-%02d $2)" |
| 9 | tap="$(printf cvd-${1}vlan-%02d $2)" |
| 10 | gateway="${3}.$((4*$2 - 3))" |
| 11 | network="${3}.$((4*$2 - 4))/30" |
| 12 | netmask="255.255.255.252" |
| 13 | dhcp_range="${3}.$((4*$2 - 2)),${3}.$((4*$2 - 2))" |
| 14 | |
| 15 | /sbin/brctl addbr "${bridge}" |
| 16 | /sbin/brctl stp "${bridge}" off |
| 17 | /sbin/brctl setfd "${bridge}" 0 |
| 18 | /sbin/ifconfig "${bridge}" "${gateway}" netmask "${netmask}" up |
| 19 | |
| 20 | iptables -t nat -A POSTROUTING -s "${network}" -j MASQUERADE |
| 21 | |
| 22 | dnsmasq \ |
| 23 | --strict-order \ |
| 24 | --except-interface=lo \ |
| 25 | --interface="${bridge}" \ |
| 26 | --listen-address="${gateway}" \ |
| 27 | --bind-interfaces \ |
| 28 | --dhcp-range="${dhcp_range}" \ |
| 29 | --conf-file="" \ |
| 30 | --pid-file=/var/run/cuttlefish-dnsmasq-"${bridge}".pid \ |
| 31 | --dhcp-leasefile=/var/run/cuttlefish-dnsmasq-"${bridge}".leases \ |
| 32 | --dhcp-no-override |
| 33 | |
| 34 | ip link add link cvd-net-01 name "${tap}" type vlan id ${4} |
| 35 | /sbin/ifconfig "${tap}" 0.0.0.0 up |
| 36 | /sbin/brctl addif "${bridge}" "${tap}" |
| 37 | } |
| 38 | |
| 39 | ip tuntap add dev cvd-net-01 mode tap group cvdnetwork |
| 40 | ifconfig cvd-net-01 0.0.0.0 up |
| 41 | |
| 42 | create_interface w 1 192.168.93 11 |
| 43 | create_interface m 1 192.168.94 12 |
| 44 | create_interface i 1 192.168.95 13 |