2015-06-25 12:54:31 +03:00
use strict ;
my $ ip = '192.168.0.100' ;
my $ nm = '255.255.255.0' ;
my $ gw = '192.168.0.1' ;
# replace proc_net_dev with one with a bunch of interfaces
save ( 'proc_net_dev' , << '/proc/net/dev' ) ;
eth0:
eth1:
eth2:
eth3:
/proc/ net / dev
r ( '' ) ;
new_iface ( 'vmbr0' , 'OVSBridge' ,
[ { family = > 'inet' ,
address = > $ ip ,
netmask = > $ nm ,
gateway = > $ gw } ] ,
autostart = > 1 ) ;
update_iface ( 'eth0' , [] , autostart = > 1 ) ;
update_iface ( 'eth1' , [] , autostart = > 1 ) ;
update_iface ( 'eth2' , [] , autostart = > 1 ) ;
#update_iface('eth3', [], autostart => 1);
# Check the bridge and eth interfaces
expect load ( 'loopback' ) . << "/etc/network/interfaces" ;
auto eth0
iface eth0 inet manual
auto eth1
iface eth1 inet manual
auto eth2
iface eth2 inet manual
iface eth3 inet manual
auto vmbr0
iface vmbr0 inet static
address $ ip
netmask $ nm
gateway $ gw
ovs_type OVSBridge
/etc/ network / interfaces
2015-09-14 11:52:30 +03:00
# Adding an interface to the bridge needs to add allow- lines and remove
# its autostart property.
2015-06-25 12:54:31 +03:00
update_iface ( 'vmbr0' , [] , ovs_ports = > 'eth1 eth2' ) ;
expect load ( 'loopback' ) . << "/etc/network/interfaces" ;
auto eth0
iface eth0 inet manual
allow - vmbr0 eth1
iface eth1 inet manual
ovs_type OVSPort
ovs_bridge vmbr0
allow - vmbr0 eth2
iface eth2 inet manual
ovs_type OVSPort
ovs_bridge vmbr0
iface eth3 inet manual
auto vmbr0
iface vmbr0 inet static
address $ ip
netmask $ nm
gateway $ gw
ovs_type OVSBridge
ovs_ports eth1 eth2
/etc/ network / interfaces
# Idempotency - make sure "allow-$BRIDGE $IFACE" don't get duplicated
# they're stripped from $config->{options} at load-time since they're
# auto-generated when writing OVSPorts.
save ( 'idem' , w ( ) ) ;
r ( load ( 'idem' ) ) ;
expect load ( 'idem' ) ;
# Removing an ovs_port also has to remove the corresponding allow- line!
# Also remember that adding interfaces to the ovs bridge removed their
# autostart property, so eth2 is now without an autostart!
update_iface ( 'vmbr0' , [] , ovs_ports = > 'eth1' ) ;
# eth2 is now autoremoved and thus loses its priority, so it appears after eth3
expect load ( 'loopback' ) . << "/etc/network/interfaces" ;
auto eth0
iface eth0 inet manual
allow - vmbr0 eth1
iface eth1 inet manual
ovs_type OVSPort
ovs_bridge vmbr0
iface eth3 inet manual
iface eth2 inet manual
auto vmbr0
iface vmbr0 inet static
address $ ip
netmask $ nm
gateway $ gw
ovs_type OVSBridge
ovs_ports eth1
/etc/ network / interfaces
1 ;