parent
7a6a5cfc1a
commit
0099c7ed5f
@ -1,17 +1,17 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQJNBAABCgA3FiEEm8dazQnvu0U1Gdmc9s+lqZ57WVcFAl7Ijn4ZHGd6YW11ZGlv
|
||||
QGxpYnJlbWV4Lm9yZy5teAAKCRD2z6WpnntZV9WUD/wJJNDIgy5JRJEF24bD10nm
|
||||
I6p1GddLfrD0XumCYCVFmACu11kwY+ptxqYG4fWsS/O9AwFKOrDGXbgnt11HqSeM
|
||||
FyTEFGS4CidnKFNI/0FDgSKYzpVTT//aSJ+NGDeMb6yaU2jAImpM8B8YMHiNdX95
|
||||
S4/fJLep+FSWFTPv3VhjQKR1iw18CzUBQl4boX+K+o2ckjB/v6E3hhKgLY1/sNJ7
|
||||
KkpHD1fwBMxlrl7pAHrtqdz161/fVMZCpNu3zVE+agLyG6CGdtUgUNA8HodV7QJ+
|
||||
fEAuw2m6xyQ0bChGL0AVet+y+PF+o3nSYFS5babdxygqcIDeEBWTpVvNbVEfKXqw
|
||||
SvCsnIQClZpvdEm0vDdZ7ght/RxFKrXcy4KqrrFdmTTfgmitT6JlGTXN/EkSq109
|
||||
ztoaNwSZoSnNMHo9JTDfVFd2dWzWaxIWkt8voSqMXl9RXtmHxzzU1uV20yq5emMw
|
||||
8HLC/ppKdBokrQeUM1xYGNJmPA55lybjJUn4ausppP2x7ctVq+RPQoIdFMub7BJa
|
||||
OC3yJijm9C7NCPF2ZdEbF6FdUgBSW5C7wtukPbZDdIUK/M3pKYxX351Z4pEk8Vux
|
||||
ZvKwZoyqLLNdGJcFTKAx3hNqksINLNmBAfqxMk9Xt1w3Kz/QMNGkrZ9bv3bv14m4
|
||||
Erqf26rcK3/VhOKVIDhqPw==
|
||||
=u2gH
|
||||
iQJNBAABCgA3FiEEm8dazQnvu0U1Gdmc9s+lqZ57WVcFAl7IkAwZHGd6YW11ZGlv
|
||||
QGxpYnJlbWV4Lm9yZy5teAAKCRD2z6WpnntZV9c4D/9YYOERoyM4a9nkT5zIJH6q
|
||||
9a0XP18pVLV1dnTGV4MLSSbe4C0B1MlLb5Xo2aas9ChR4iUJq+DTgUo3kQHmPpOZ
|
||||
cizQh5d6slDYL1liP0uqIOXoZHyZ9UPTD9mAGwDVsmOuEhP2Cq+vhy9/GMth401H
|
||||
R1t9ezoJRMm8whJv8HQ91j7vlIkHUOMtEzeSeW7rjbMLawbK1UCCWZ/aQLFR8Z2o
|
||||
bvl2NZo7VlYPBeC0jSpYtX7FD6lQn7gRGN/OBzKnUZNc95s7KRbqz0mVSjhAtDX4
|
||||
DDWboEz/7aUkRJ5fAMFAlE5BappSYIDqyyQs8FTk2SKc3POvAFPkcom8HmzBXPyJ
|
||||
lCE2uox/OUjKg9zLDbDIQjxlyQQEYi15VNftN+BeOJaeBHqh7KpEmthIXT40OEji
|
||||
67QJpk06if8taF8JK4V5MRzbbQjHNtXwN0KEAi6kzSoNm8IEyagR9iC8AoZJW0E8
|
||||
ALd7V5EE+3wYU0Mprui1SPxieJ1GTZtrkDMBYucH40n2vJe88EgD32tfhaAr5HVL
|
||||
QrFZKSN+zCF3caBJgNVMeEVvdxReF7po5he9bb1nJlg/Qx/NoD39f6EPTOVK7hTa
|
||||
ajuj29vz9XhlOFaz7lVOn9+IFKy7ypbNlgdEhbkVfFKPYxtpF/WxjFltbLz0CMta
|
||||
Irb3/5heu73HFeE8vQVZGA==
|
||||
=7YQU
|
||||
-----END PGP SIGNATURE-----
|
||||
|
Binary file not shown.
@ -1,17 +1,17 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQJNBAABCgA3FiEEm8dazQnvu0U1Gdmc9s+lqZ57WVcFAl7Ijn4ZHGd6YW11ZGlv
|
||||
QGxpYnJlbWV4Lm9yZy5teAAKCRD2z6WpnntZV2GbEACwzHDb7gJVbn5pR/hocuyM
|
||||
l7ny62wO9G32YT/z9uabMAIqYAWU57QKDQJFUw3B88tC+/7vkTdrS7dXOXd/sB0P
|
||||
PJ0eAGohtfjsmAQ88018/ZQ9oac9OHJ2GfxRYo7twwWD+weGDEdAA1akSpHOKV5g
|
||||
KE/XCeTfxeOwkKVP/yridFlUyUz7MymBYJTEpJZVThw0Y/nRhGWKccoumXGSVyOm
|
||||
mZIJRpSnFB40ZO+gBOjyToPJO7f76/TJ2frr3kZ72QnWQxz8N/9Ym+s0K8Qe//7M
|
||||
KsvO+1x5vcxcNO/UygDpEVfbhFJ2b/csNYVIeJrn9uALUNvR5k+uVFDimoS9Ryve
|
||||
Dpnx46q7cBHaYUz4eweVimi5EcqzXFlLVIaB1Q5wA5W0McUslvWdnzR0YsHsZ1Fc
|
||||
wEiumXI+/DEcGumG5HJnwHUhPEhi/gWa5vlClW75rCON/W/KiN/oX8Nsmm4hpmsR
|
||||
tXQzuuH2VOZevKB0FRrJVnfdWy8jrPxzrTbaz/kOtCB8YkxTF8SXS8olca/zRfIX
|
||||
+PXd7Yib3m76755uWVPE+tSHvGHjh/Jao++9yCjGv6+cmIyRr4AQJPvuiSMc9nt/
|
||||
UJF8b2w3ISPYutJQDd8MH86dxz9ZU8is2z9luv1DJwyfMmbL1BHn6bfj1y4ruFGc
|
||||
CdONorYvm8nSATZbUTY6AA==
|
||||
=9SNa
|
||||
iQJNBAABCgA3FiEEm8dazQnvu0U1Gdmc9s+lqZ57WVcFAl7IkAwZHGd6YW11ZGlv
|
||||
QGxpYnJlbWV4Lm9yZy5teAAKCRD2z6WpnntZV4/4D/9GDJ9CcouBDVnoIVxHwRU2
|
||||
6pCsvRPvT5rjrkW2+KiGN97J4JWToLwSh/y/85EwSYjHdXYiSz2cQ6eHAAtHV/z1
|
||||
ZFRbnLxi/nt1+/30TwA6mGa/IQymeWIF+NFIODv+Id6AtR2cVyfHdH/tKCD/qsSd
|
||||
dhWzpzdRjxGu8xAIwFmxE4wIKe3NP3lZoeQIRaN8a548ef6bxWtxZ/9AFLOmGrjg
|
||||
ItqVRgcqgBS5kzK/ycghZyKYctI6CToxGsQHO/guDYsMkv1knNBEYp/Q6sPe/l68
|
||||
MMg9lsUIDC+eYwGf73mJmAF2tf6UxIb13Co3yDC/L9oUsXIkehlmYzyPlow0p6ZK
|
||||
wU7gyaX7oAXChUlgKbOaFiIPZhCuU3ARNS0uZelr/e0hPAsjrjEwjHaKgYZBEQSL
|
||||
tpWI3c23zvlEjMXCOD8k9kTvH8PvM8bKpgAQZLl/M90gMRgvC7kOeIJjvqMy/XFi
|
||||
lsojGMYJ46vvmqJGA2m0dSI/qwH4GQEDhZKF1RY4ae+H3tdeMNooyl/DCBJ0/bi9
|
||||
HnkvjJUqAz1XUCWOcc+wfg4AodjOkRoccrgoxoXNfyUrYQu7eYdMz7fsYkCsYiJR
|
||||
NPnxahXvCwAuKiy7H29e7R4pcY/p6SmI83EtsUJz+oJk1LtdEpdTSSw6Ba/U9J4b
|
||||
RuUs7tfltHP8w4nlWQXEOQ==
|
||||
=ETLM
|
||||
-----END PGP SIGNATURE-----
|
||||
|
Binary file not shown.
@ -1,2 +1,2 @@
|
||||
PACKAGES.TXT; Sat May 23 02:46:18 UTC 2020
|
||||
PACKAGES.TXT; Sat May 23 02:52:57 UTC 2020
|
||||
|
||||
|
Binary file not shown.
@ -0,0 +1,19 @@
|
||||
# HOW TO EDIT THIS FILE:
|
||||
# The "handy ruler" below makes it easier to edit a package description. Line
|
||||
# up the first '|' above the ':' following the base package name, and the '|'
|
||||
# on the right side marks the last column you can put a character in. You must
|
||||
# make exactly 11 lines for the formatting to be correct. It's also
|
||||
# customary to leave one space after the ':'.
|
||||
|
||||
|-----handy-ruler------------------------------------------------------|
|
||||
vde: vde (virtual distributed ethernet)
|
||||
vde:
|
||||
vde: VDE is a virtual network that can be spawned over a set of physical
|
||||
vde: computer over the Internet.
|
||||
vde: VDE connects together: (1) real GNU-linux boxes (tuntap) (2) virtual
|
||||
vde: machines: UML-User Mode Linux, qemu, bochs, MPS.
|
||||
vde:
|
||||
vde:
|
||||
vde:
|
||||
vde: Homepage for vde is http://vde.sourceforge.net/
|
||||
vde:
|
@ -0,0 +1,19 @@
|
||||
# HOW TO EDIT THIS FILE:
|
||||
# The "handy ruler" below makes it easier to edit a package description. Line
|
||||
# up the first '|' above the ':' following the base package name, and the '|'
|
||||
# on the right side marks the last column you can put a character in. You must
|
||||
# make exactly 11 lines for the formatting to be correct. It's also
|
||||
# customary to leave one space after the ':'.
|
||||
|
||||
|-----handy-ruler------------------------------------------------------|
|
||||
vde: vde (virtual distributed ethernet)
|
||||
vde:
|
||||
vde: VDE is a virtual network that can be spawned over a set of physical
|
||||
vde: computer over the Internet.
|
||||
vde: VDE connects together: (1) real GNU-linux boxes (tuntap) (2) virtual
|
||||
vde: machines: UML-User Mode Linux, qemu, bochs, MPS.
|
||||
vde:
|
||||
vde:
|
||||
vde:
|
||||
vde: Homepage for vde is http://vde.sourceforge.net/
|
||||
vde:
|
@ -0,0 +1,4 @@
|
||||
VDE is a virtual network that can be spawned over a set of physical
|
||||
computer over the Internet.
|
||||
VDE connects together: (1) real GNU-linux boxes (tuntap) (2) virtual
|
||||
machines: UML-User Mode Linux, qemu, bochs, MPS.
|
@ -0,0 +1,156 @@
|
||||
VDE : Virtual Distributed Ethernet.
|
||||
|
||||
(c) 2003/2004/2005 Renzo Davoli
|
||||
Based on uml-router Copyright 2002 Yon Uriarte and Jeff Dike
|
||||
qemu-vde-HOWTO is (c) by Jim Brown
|
||||
|
||||
Components of the VDE architecture:
|
||||
|
||||
- VDE switches: virtual counterpart of ethernet switches.
|
||||
- VDE cables: virtual counterpart of a crossed-cable used to connect two switches.
|
||||
|
||||
Using VDE:
|
||||
All units connected to the VDE see each other as they were on a real ethernet.
|
||||
A real Linux box can be connected to the VDE using a tap interface (TUNTAP) (packets can be further routed using standard linux methods).
|
||||
It is possible to join two VDE switches -- also running on different real conputers -- using virtual VDE cables
|
||||
UML (user-mode-linux) virtual machines can be connected to the VDE
|
||||
MPS (MIPS emulated machines (c) Morsiani/Davoli) can be connected to the virtual VDE.
|
||||
|
||||
Examples of VDE uses:
|
||||
- With VDE it is possible to create a virtual network of UML machines running on several real computer
|
||||
- VDE can be used to create tunnels (even crossing masquerated networks)
|
||||
- VDE can provide mobility support. Changing a VDE cable with another does not affect the communications in place. The new VDE cable can use a completely different path on the real net. VDE supports also multiple concurrent VDE cablesbetween a pair of VDE-switches during the hand-off. This eliminates when possible hich-ups of communications due to hand-offs.
|
||||
|
||||
HOWTO and command syntax:
|
||||
|
||||
vde-switch [ -unix control-socket ] [ -tap tuntap-device ] [ -hub ] [-daemon]
|
||||
This command creates a VDE switch.
|
||||
-unix control-socket
|
||||
The control socket is the socket used for local processes to create a new connection. The default value is /tmp/vde.ctl. User-mode-linux default value is /tmp/uml.ctl, so if you want to use vde with UML you can: (1) use "-unix /tmp/uml.ctl" for vde-switch (2) use
|
||||
"eth0=daemon,,/tmp/vde.ctl" for UML
|
||||
-tap tuntap-device
|
||||
the vde-switch is connected to the specified tap interface. Ususally it is reserved for root as /dev/net/tun is not writable. (It is dangerous to have /dev/net/tun writable by ordinary users).
|
||||
-hub
|
||||
the vde-switch works as a hub (all packets are broadcast on all interfaces.
|
||||
-daemon
|
||||
the switch works as a daemon: it runs in background, it uses syslog for error management.
|
||||
|
||||
vde-plug [-g num] [socketname]
|
||||
A vde-cable is composed by two vde-plug and a "cable". A vde-plug connects its standard input and output to a switch.
|
||||
socketname is the control-socket of the switch the plug must be connected to (default value /tmp/vde.ctl).
|
||||
-g num (num > 0, num < 256) is a group number. Cables without a group number are independent cables, cables with the same group number represent several path for the same destination. Packet reaching a switch on a cable are never forwarded on another cable of the same group.
|
||||
|
||||
dpipe cmd1 [arg1] = cmd2 [arg2]
|
||||
it is the double pipe command (it is here just becouse it is not provided by shells).
|
||||
cmd1 and cmd2 are executed, the stdout of cmd1 if pipe connected to the stdin of cmd2 and viceversa. (the symbol = is intended as a pair of communication pipes between the two processes.
|
||||
|
||||
HOW TO:
|
||||
- (1) SETUP A DAEMON:
|
||||
(as root)
|
||||
# vde_switch -tap tap0 -daemon
|
||||
# ifconfig tap0 192.168.0.254
|
||||
# chmod 777 /tmp/vde.ctl
|
||||
|
||||
if you want to have routing to the Internet you can use standard routing commands on the host machine e.g.:
|
||||
|
||||
# echo "1" > /proc/sys/net/ipv4/ip_forward
|
||||
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
||||
|
||||
for ipv6
|
||||
# echo "1" > /proc/sys/net/ipv6/conf/eth0/forwarding
|
||||
# radvd
|
||||
|
||||
radvd must be configured to broadcast the correct prefix for the tap0 subnet
|
||||
|
||||
----- example of /etc/radvd.conf file
|
||||
interface tap0
|
||||
{
|
||||
AdvSendAdvert on;
|
||||
MaxRtrAdvInterval 120;
|
||||
#put here your prefix.
|
||||
prefix 1111:2222:3333:4444::/64
|
||||
{
|
||||
AdvOnLink on;
|
||||
AdvAutonomous on;
|
||||
AdvRouterAddr on;
|
||||
|
||||
};
|
||||
};
|
||||
------ end of example
|
||||
|
||||
- (2) SETUP A SECOND DAEMON
|
||||
(no need for root access)
|
||||
|
||||
% vde_switch /tmp/my.ctl
|
||||
|
||||
(add - daemon if you want to run it in background)
|
||||
|
||||
- (3) CONNECT TWO LOCAL SWITCHES TOGETHER
|
||||
|
||||
% dpipe vde_plug = vde_plug /tmp/my.ctl
|
||||
(or
|
||||
% dpipe vde_plug /tmp/my.ctl = vde_plug
|
||||
)
|
||||
|
||||
connects the vde_switch with ctl socket /tmp/vde.ctl with the other using /tmp/my.ctl.
|
||||
|
||||
- (3) CONNECT TWO REMOTE SWITCHES TOGETHER
|
||||
|
||||
You need a tool to interconnect stdin stdout of two remote processes. e.g.
|
||||
|
||||
% dpipe vde_plug /tmp/my.ctl = ssh remote_machine vde_plug
|
||||
|
||||
connects the vde_switch with ctl socket /tmp/vde.ctl on the remote_machine with the local switch using /tmp/my.ctl.
|
||||
|
||||
It is possible to use other tools in place of ssh like netcat.In this latter case the communication is not secure.
|
||||
|
||||
- (4) CREATION OF TUNNELS.
|
||||
(it needs kernel support for policy routing)
|
||||
|
||||
Setup two daemon as described in (1). In this example 192.168.0.1 is the tap0 address on the server side.
|
||||
Route the traffic to the Internet on the tunnel server side.
|
||||
|
||||
On the tunnel client side:
|
||||
- in the example 100.200.201.202 is the IP address on eth0
|
||||
and 100.200.201.254 is the default gateway.
|
||||
|
||||
- create a specific rule for the eth0 routing
|
||||
ip rule add from 100.200.201.202 table eth0-table
|
||||
(please note that eth0-table must be listed in /etc/iproute2/rt_tables)
|
||||
|
||||
ip route del default via 100.200.201.254
|
||||
ip route add default via 100.200.201.254 table eth0-table
|
||||
|
||||
the previous default route will be the def. route just for the packets originated with the eth0 inteface address.
|
||||
|
||||
- connect the two vde-switch together:
|
||||
dpipe vde-plug = ssh -b 100.200.201.202 server-machine vde-plug
|
||||
|
||||
- setup an appropriate IP address for tap0 interface (or get it by dhcp if set up on server side). (e.g. 1 92.168.0.10)
|
||||
|
||||
- use tap0 as the default interface:
|
||||
ip route add default via 192.168.0.1
|
||||
|
||||
- (5) SUPPORT FOR MOBILITY
|
||||
|
||||
Create a tunnel like in 4 using a group number on the vde-cable:
|
||||
dpipe vde-plug -g 1 = ssh -b 100.200.201.202 server-machine vde-plug -g 1
|
||||
|
||||
Create a second tunnel (say on ppp0 addr. 100.100.101.102 gateway 100.100.101.254)
|
||||
# ip rule add from 100.100.101.102 table ppp0-table
|
||||
# ip route add default via 100.100.101.254 table ppp0-table
|
||||
|
||||
Connect the a second cable using the same group number:
|
||||
# dpipe vde-plug -g 1 = ssh -b 100.100.101.102 server-machine vde-plug -g 1
|
||||
|
||||
Disconnect the first cable (kill the processes of the first cable)
|
||||
|
||||
All the traffic get rerouted on the new vde-cable (thus to another path on the rel network. Connections in place are unaffected by the change. Several cables of the same group can be in place during the handoff phase but note that this ends up in duplicated packets that can slow down the communication.
|
||||
|
||||
Please note also that the vde-switches do not manage (yet) the minimum spanning tree protocol thus a loop in the topology can lead to inconsistent MAC forward tables and to network saturation.
|
||||
|
||||
Copyright 2003/2004 Renzo Davoli
|
||||
Acknowlegments:
|
||||
Thanks to Marco Giordani, Leonardo Macchia for their useful help for debugging. Imported code by Danny Gasparovsky, Fabrice Ballard. Code organization, bugfixes, autotool support Mattia Belletti.
|
||||
|
||||
This page found at http://www.blogin.it/vde.htm
|
@ -0,0 +1,204 @@
|
||||
#!/bin/sh
|
||||
# $Id: rc.vdenetwork,v 1.7 2011/12/06 14:18:08 root Exp root $
|
||||
# Qemu environment preparation script
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
#
|
||||
# After running this startup script, run a QEMU virtual machine in this way:
|
||||
#
|
||||
# qemu-system-x86_64 \
|
||||
# -net vde,sock=/var/run/kvm0.ctl,vlan=0 -net nic,vlan=0 \
|
||||
# [qemu_option [qemu_option], ...]
|
||||
#
|
||||
# This will automatically connect the QEMU virtual machine to the VDE switch.
|
||||
#
|
||||
# ---------------------------------------------------------------------------
|
||||
#
|
||||
# Network type can be one of "route" "bridge" or "nat":
|
||||
# - In "route" mode, the script will expect that the 'routed' daemon is running
|
||||
# on the host (see /etc/rc.d/rc.inet2 to start 'routed'), and will not
|
||||
# create iptables NAT rules.
|
||||
# The virtual network will be routed on the LAN and will be accessible as a
|
||||
# separate network segment (make sure the IP range defined below does not
|
||||
# conflict with existing parts of your network!). The guests will use our
|
||||
# private dnsmasq server to obtain IP addresses.
|
||||
# - In "bridge" mode, the script will try to add the tap device to an existing
|
||||
# network bridge, and will not create iptables NAT rules.
|
||||
# The guests will be seen on the LAN as part of the network.
|
||||
# - In "nat" mode, the script will create iptables NAT rules. These hide the
|
||||
# virtual network behind an internal NAT router. The guests will have full
|
||||
# network access, but will be accessible only from the host.
|
||||
#
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
#NETWORKTYPE="route"
|
||||
#NETWORKTYPE="bridge"
|
||||
NETWORKTYPE="nat"
|
||||
|
||||
# Host interfaces that need to be NAT-ed (in case we're not bridging/routing):
|
||||
# Add more interfaces space-separated, like "eth+ wlan+"
|
||||
NAT_IFS="eth+"
|
||||
|
||||
# What is the bridge interface called if we are bridging?
|
||||
BR_DEV=br0
|
||||
|
||||
# What is the name of the tun/tap device we will be using?
|
||||
TAP_DEV=kvm0
|
||||
|
||||
start_tap() {
|
||||
# Load tun module
|
||||
/sbin/modprobe tun 2>/dev/null
|
||||
# Wait for the module to be loaded
|
||||
while ! /bin/lsmod |grep -q "^tun"; do echo Waiting for tun device;sleep 1; done
|
||||
|
||||
# Start tap switch
|
||||
vde_switch --tap ${TAP_DEV} --daemon --group kvm \
|
||||
--sock /var/run/${TAP_DEV}.ctl --pidfile /var/run/${TAP_DEV}_vde.pid \
|
||||
--mod 775 --mgmtmode 770 --mgmt /var/run/${TAP_DEV}-manage
|
||||
|
||||
sleep 1
|
||||
|
||||
# Change pipe permission:
|
||||
#chmod -R a+rwx /var/run/vde.ctl
|
||||
} # End start_tap
|
||||
|
||||
stop_tap() {
|
||||
# Bring tap interface down:
|
||||
ifconfig ${TAP_DEV} down
|
||||
|
||||
# Kill VDE switch:
|
||||
#pgrep -f vde_switch | xargs kill -TERM
|
||||
kill -HUP $(cat /var/run/${TAP_DEV}_vde.pid)
|
||||
|
||||
# Remove the control socket:
|
||||
#rmdir /var/run/vde.ctl
|
||||
} # End stop_tap
|
||||
|
||||
start_localdhcp() {
|
||||
# The IP configuration for the tap device that will be used for
|
||||
# the virtual machine network:
|
||||
|
||||
TAP_IP=10.111.111.254
|
||||
TAP_MASK=255.255.255.0
|
||||
TAP_BCAST=$(/bin/ipmask ${TAP_MASK} ${TAP_IP} | cut -f 1 -d ' ')
|
||||
|
||||
# Definitions for the LAN segment the Qemu virtual machines will be in.
|
||||
# These definitions will be fed to dnsmasq - this program will provide DNS
|
||||
# and DHCP to the Qemu LAN.
|
||||
|
||||
# The VM_IPLOW and VM_IPHIGH addresses must agree with the definitions for
|
||||
# the tap0 device above. These 'low' and 'high' values are the IP address
|
||||
# range for the DHCP server to use.
|
||||
|
||||
VM_DOMAIN=qemu.lan
|
||||
VM_IPLOW=10.111.111.128
|
||||
VM_IPHIGH=10.111.111.199
|
||||
VM_BCAST=${TAP_BCAST}
|
||||
VM_MASK=${TAP_MASK}
|
||||
|
||||
# For additional options to dnsmasq - the commented example specifies that
|
||||
# all DNS lookups for 'my.net' should go to 192.168.1.1;
|
||||
# On the second line you find a configuration for supporting network boot:
|
||||
#DNSMASQ_OPTIONS="--server /my.net/192.168.1.1 \
|
||||
# --dhcp-boot=/pxelinux.0,\"192.168.1.1\",192.168.1.1"
|
||||
DNSMASQ_OPTIONS=""
|
||||
|
||||
# Bring tap interface up
|
||||
ifconfig ${TAP_DEV} ${TAP_IP} broadcast ${TAP_BCAST} netmask ${TAP_MASK}
|
||||
|
||||
# Start dnsmasq, the DNS/DHCP server
|
||||
# for our Virtual Machines behind the tap0 interface.
|
||||
# The '--conf-file' option prevents this instance from reading the default
|
||||
# /etc/dnsmasq.conf settings. Also, binds to the tun interface, to keep it
|
||||
# from interfering with other dnsmasq/named processes running on the host's
|
||||
# primary interfaces.
|
||||
/usr/sbin/dnsmasq \
|
||||
--log-queries \
|
||||
--user=daemon \
|
||||
--dhcp-leasefile=/var/state/dhcp/qemu-dhcpd.leases \
|
||||
--dhcp-range=${VM_IPLOW},${VM_IPHIGH},${VM_MASK},${VM_BCAST},8h \
|
||||
--interface=${TAP_DEV} --except-interface=lo --bind-interfaces \
|
||||
--pid-file=/var/run/${TAP_DEV}_dnsmasq.pid --conf-file \
|
||||
--domain=${VM_DOMAIN} \
|
||||
$DNSMASQ_OPTIONS
|
||||
|
||||
} # End start_localdhcp
|
||||
|
||||
stop_localdhcp() {
|
||||
# Stop dnsmasq
|
||||
#pgrep -f dnsmasq | xargs kill -TERM
|
||||
kill -TERM $(cat /var/run/${TAP_DEV}_dnsmasq.pid) \
|
||||
&& rm -f /var/run/${TAP_DEV}_dnsmasq.pid
|
||||
} # End stop_localdhcp
|
||||
|
||||
start_route() {
|
||||
# We need a private dnsmasq instance in a routed configuration:
|
||||
start_localdhcp
|
||||
} # End start_route
|
||||
|
||||
stop_route() {
|
||||
# We need to stop our private dnsmasq instance in a routed configuration:
|
||||
stop_localdhcp
|
||||
} # End stop_route
|
||||
|
||||
start_nat() {
|
||||
# Start IP Forwarding
|
||||
echo "1" > /proc/sys/net/ipv4/ip_forward
|
||||
for NIC in ${NAT_IFS}; do
|
||||
iptables -t nat -A POSTROUTING -o ${NIC} -j MASQUERADE
|
||||
done
|
||||
|
||||
# We need a private dnsmasq instance in a NAT configuration:
|
||||
start_localdhcp
|
||||
|
||||
} # End start_nat
|
||||
|
||||
stop_nat() {
|
||||
# We need to stop our private dnsmasq in a NAT configuration:
|
||||
stop_localdhcp
|
||||
|
||||
# Delete the NAT rules
|
||||
for NIC in ${NAT_IFS}; do
|
||||
iptables -t nat -D POSTROUTING -o ${NIC} -j MASQUERADE
|
||||
done
|
||||
# Stop IP Forwarding
|
||||
echo "0" > /proc/sys/net/ipv4/ip_forward
|
||||
}
|
||||
|
||||
start_bridge() {
|
||||
# Connect our tap device from the bridge:
|
||||
/sbin/ifconfig $TAP_DEV down
|
||||
/sbin/ifconfig $TAP_DEV 0.0.0.0 promisc up
|
||||
/sbin/brctl addif $BR_DEV $TAP_DEV
|
||||
}
|
||||
|
||||
stop_bridge() {
|
||||
# Disconnect our tap device from the bridge:
|
||||
/sbin/brctl delif $BR_DEV $TAP_DEV
|
||||
}
|
||||
|
||||
# See how we were called.
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
echo -n "Starting VDE network for QEMU: "
|
||||
|
||||
start_tap
|
||||
start_$NETWORKTYPE
|
||||
echo
|
||||
;;
|
||||
stop)
|
||||
echo -n "Stopping VDE network for QEMU: "
|
||||
stop_$NETWORKTYPE
|
||||
stop_tap
|
||||
echo
|
||||
;;
|
||||
restart|reload)
|
||||
$0 stop
|
||||
sleep 1
|
||||
$0 start
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|restart|reload}"
|
||||
exit 1
|
||||
esac
|
@ -0,0 +1,19 @@
|
||||
# HOW TO EDIT THIS FILE:
|
||||
# The "handy ruler" below makes it easier to edit a package description. Line
|
||||
# up the first '|' above the ':' following the base package name, and the '|'
|
||||
# on the right side marks the last column you can put a character in. You must
|
||||
# make exactly 11 lines for the formatting to be correct. It's also
|
||||
# customary to leave one space after the ':'.
|
||||
|
||||
|-----handy-ruler------------------------------------------------------|
|
||||
vde: vde (virtual distributed ethernet)
|
||||
vde:
|
||||
vde: VDE is a virtual network that can be spawned over a set of physical
|
||||
vde: computer over the Internet.
|
||||
vde: VDE connects together: (1) real GNU-linux boxes (tuntap) (2) virtual
|
||||
vde: machines: UML-User Mode Linux, qemu, bochs, MPS.
|
||||
vde:
|
||||
vde:
|
||||
vde:
|
||||
vde: Homepage for vde is http://vde.sourceforge.net/
|
||||
vde:
|
@ -0,0 +1,232 @@
|
||||
#!/bin/sh
|
||||
# $Id: vde.SlackBuild,v 1.17 2011/12/06 14:18:37 root Exp root $
|
||||
# Copyright (c) 2004-2011 Eric Hameleers, Eindhoven, NL
|
||||
# All rights reserved.
|
||||
#
|
||||
# Permission to use, copy, modify, and distribute this software for
|
||||
# any purpose with or without fee is hereby granted, provided that
|
||||
# the above copyright notice and this permission notice appear in all
|
||||
# copies.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
# IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
|
||||
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
# SUCH DAMAGE.
|
||||
# -----------------------------------------------------------------------------
|
||||
#
|
||||
# Slackware SlackBuild script
|
||||
# ===========================
|
||||
# By: Eric Hameleers <alien@slackware.com>
|
||||
# For: vde
|
||||
# Descr: virtual distributed ethernet
|
||||
# URL: http://vde.sourceforge.net/
|
||||
# Needs:
|
||||
# Changelog:
|
||||
# 1.5.7-1: 16/dec/2004 by Eric Hameleers
|
||||
# * Initial build.
|
||||
# 1.5.7-2: 18/dec/2004 by Eric Hameleers
|
||||
# * Added uml README to the documentation
|
||||
# 1.5.7-3: 08/feb/2005 by Eric Hameleers
|
||||
# * Fixed incorrect link for vdeqemu; added rc.vdenetwork which
|
||||
# sets up the right environment for qemu, using dnsmasq.
|
||||
# If you already run a local nameserver, you'll have to edit out
|
||||
# parts of that file.
|
||||
# 1.5.9-1: 05/jul/2005 by Eric Hameleers
|
||||
# * New release. Changed the rc.vdenetwork script so that it will
|
||||
# run out of the box.
|
||||
# 20051213-1: 13/dec/2005 by Eric Hameleers
|
||||
# * Snapshot release of what will become 2.0.1. I need this for the
|
||||
# current CVS version of QEMU which changed the networking
|
||||
# parameters. VDE now comes with 'vdeoq' and 'vdeq' for the old
|
||||
# and the new interface respectively.
|
||||
# 2.0.1-1: 03/jan/2006 by Eric Hameleers <alien@slackware.com>
|
||||
# * New release, adapted to qemu >= 0.8
|
||||
# 2.0.2-1: 23/jul/2006 by Eric Hameleers <alien@slackware.com>
|
||||
# * New release.
|
||||
# 2.1.1-1: 22/aug/2006 by Eric Hameleers <alien@slackware.com>
|
||||
# * New release.
|
||||
# 2.1.6-1: 26/jul/2007 by Eric Hameleers <alien@slackware.com>
|
||||
# * Update.
|
||||
# 2.2.0.pre1-1: 02/Jun/2008 by Eric Hameleers <alien@slackware.com>
|
||||
# * Update.
|
||||
# 2.2.2-1: 01/sep/2008 by Eric Hameleers <alien@slackware.com>
|
||||
# * Update.
|
||||
# 2.3.1-1: 23/aug/2010 by Eric Hameleers <alien@slackware.com>
|
||||
# * Update.
|
||||
# 2.3.2-1: 06/dec/2011 by Eric Hameleers <alien@slackware.com>
|
||||
# * Update.
|
||||
#
|
||||
# Run 'sh vde.SlackBuild' to build a Slackware package.
|
||||
# The package (.tgz) and .txt file as well as build logs are created in /tmp .
|
||||
# Install it using 'installpkg'.
|
||||
#
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
# Set initial variables:
|
||||
|
||||
PRGNAM=vde
|
||||
SRCVER=${SRCVER:-2.3.2}
|
||||
VERSION=$(echo $SRCVER | tr '-' '.')
|
||||
BUILD=${BUILD:-1}
|
||||
TAG=${TAG:-alien}
|
||||
|
||||
# Where do we look for sources?
|
||||
SRCDIR=$(cd $(dirname $0); pwd)
|
||||
|
||||
DOCS="COPYING* Changelog LICENSE README* VERSION doc/* \
|
||||
$SRCDIR/rc.vdenetwork $SRCDIR/Using_VDE_with_QEMU_HOWTO.txt"
|
||||
|
||||
# Place to build (TMP) package (PKG) and output (OUTPUT) the program:
|
||||
TMP=${TMP:-/tmp/build}
|
||||
PKG=$TMP/package-$PRGNAM
|
||||
OUTPUT=${OUTPUT:-/tmp}
|
||||
|
||||
SOURCE="$SRCDIR/${PRGNAM}2-${SRCVER}.tar.bz2"
|
||||
SRCURL="http://downloads.sourceforge.net/${PRGNAM}/${PRGNAM}2-${SRCVER}.tar.bz2"
|
||||
|
||||
##
|
||||
## --- with a little luck, you won't have to edit below this point --- ##
|
||||
##
|
||||
|
||||
# Automatically determine the architecture we're building on:
|
||||
if [ -z "$ARCH" ]; then
|
||||
case "$( uname -m )" in
|
||||
i?86) export ARCH=i486 ;;
|
||||
arm*) export ARCH=arm ;;
|
||||
# Unless $ARCH is already set, use uname -m for all other archs:
|
||||
*) export ARCH=$( uname -m ) ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
case "$ARCH" in
|
||||
i486) SLKCFLAGS="-O2 -march=i486 -mtune=i686"
|
||||
SLKLDFLAGS=""; LIBDIRSUFFIX=""
|
||||
;;
|
||||
x86_64) SLKCFLAGS="-O2 -fPIC"
|
||||
SLKLDFLAGS="-L/usr/lib64"; LIBDIRSUFFIX="64"
|
||||
;;
|
||||
*) SLKCFLAGS="-O2"
|
||||
SLKLDFLAGS=""; LIBDIRSUFFIX=""
|
||||
;;
|
||||
esac
|
||||
|
||||
# Exit the script on errors:
|
||||
set -e
|
||||
trap 'echo "$0 FAILED at line ${LINENO}" | tee $OUTPUT/error-${PRGNAM}.log' ERR
|
||||
# Catch unitialized variables:
|
||||
set -u
|
||||
P1=${1:-1}
|
||||
|
||||
# Save old umask and set to 0022:
|
||||
_UMASK_=$(umask)
|
||||
umask 0022
|
||||
|
||||
# Create working directories:
|
||||
mkdir -p $OUTPUT # place for the package to be saved
|
||||
mkdir -p $TMP/tmp-$PRGNAM # location to build the source
|
||||
mkdir -p $PKG # place for the package to be built
|
||||
rm -rf $PKG/* # always erase old package's contents
|
||||
rm -rf $TMP/tmp-$PRGNAM/* # remove the remnants of previous build
|
||||
rm -rf $OUTPUT/{configure,make,install,error,makepkg}-$PRGNAM.log
|
||||
# remove old log files
|
||||
|
||||
# Source file availability:
|
||||
if ! [ -f ${SOURCE} ]; then
|
||||
echo "Source '$(basename ${SOURCE})' not available yet..."
|
||||
# Check if the $SRCDIR is writable at all - if not, download to $OUTPUT
|
||||
[ -w "$SRCDIR" ] || SOURCE="$OUTPUT/$(basename $SOURCE)"
|
||||
if [ -f ${SOURCE} ]; then echo "Ah, found it!"; continue; fi
|
||||
if ! [ "x${SRCURL}" == "x" ]; then
|
||||
echo "Will download file to $(dirname $SOURCE)"
|
||||
wget -nv -T 20 -O "${SOURCE}" "${SRCURL}" || true
|
||||
if [ $? -ne 0 -o ! -s "${SOURCE}" ]; then
|
||||
echo "Downloading '$(basename ${SOURCE})' failed... aborting the build."
|
||||
mv -f "${SOURCE}" "${SOURCE}".FAIL
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "File '$(basename ${SOURCE})' not available... aborting the build."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$P1" == "--download" ]; then
|
||||
echo "Download complete."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# --- PACKAGE BUILDING ---
|
||||
|
||||
echo "++"
|
||||
echo "|| $PRGNAM-$VERSION"
|
||||
echo "++"
|
||||
|
||||
cd $TMP/tmp-$PRGNAM
|
||||
echo "Extracting the source archive(s) for $PRGNAM..."
|
||||
tar -xvf ${SOURCE}
|
||||
cd ${PRGNAM}2-${SRCVER}
|
||||
chown -R root:root .
|
||||
chmod -R u+w,go+r-w,a+X-s .
|
||||
|
||||
echo Building ...
|
||||
LDFLAGS="$SLKLDFLAGS" \
|
||||
CXXFLAGS="$SLKCFLAGS" \
|
||||
CFLAGS="$SLKCFLAGS" \
|
||||
./configure \
|
||||
--prefix=/usr \
|
||||
--libdir=/usr/lib${LIBDIRSUFFIX} \
|
||||
--localstatedir=/var \
|
||||
--sysconfdir=/etc \
|
||||
--mandir=/usr/man \
|
||||
--program-prefix= \
|
||||
--program-suffix= \
|
||||
--build=$ARCH-slackware-linux \
|
||||
2>&1 | tee $OUTPUT/configure-${PRGNAM}.log
|
||||
|
||||
make 2>&1 | tee $OUTPUT/make-${PRGNAM}.log
|
||||
make DESTDIR=$PKG install 2>&1 | tee $OUTPUT/install-${PRGNAM}.log
|
||||
|
||||
# Add documentation:
|
||||
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
|
||||
cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION || true
|
||||
cat $SRCDIR/$(basename $0) > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
|
||||
rm -f $PKG/usr/doc/$PRGNAM-$VERSION/Makefile*
|
||||
chown -R root:root $PKG/usr/doc/$PRGNAM-$VERSION
|
||||
find $PKG/usr/doc -type f -exec chmod 644 {} \;
|
||||
|
||||
# Compress the man page(s):
|
||||
if [ -d $PKG/usr/man ]; then
|
||||
find $PKG/usr/man -type f -name "*.?" -exec gzip -9f {} \;
|
||||
for i in $(find $PKG/usr/man -type l -name "*.?") ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
|
||||
fi
|
||||
|
||||
# Strip binaries (if any):
|
||||
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
|
||||
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
|
||||
|
||||
# Add a package description:
|
||||
mkdir -p $PKG/install
|
||||
cat $SRCDIR/slack-desc > $PKG/install/slack-desc
|
||||
if [ -f $SRCDIR/doinst.sh ]; then
|
||||
cat $SRCDIR/doinst.sh >> $PKG/install/doinst.sh
|
||||
fi
|
||||
|
||||
# Build the package:
|
||||
cd $PKG
|
||||
makepkg --linkadd y --chown n $OUTPUT/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.tgz 2>&1 | tee $OUTPUT/makepkg-${PRGNAM}.log
|
||||
cd $OUTPUT
|
||||
md5sum ${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.tgz > ${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.tgz.md5
|
||||
cd -
|
||||
cat $PKG/install/slack-desc | grep "^${PRGNAM}" > $OUTPUT/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.txt
|
||||
|
||||
# Restore the original umask:
|
||||
umask ${_UMASK_}
|
||||
|
Loading…
Reference in new issue