import vserver
import os
from time import strftime
+import socket
dryrun = 0
vinidir = "/usr/share/vini/"
else:
return subprocess.call(cmd, shell=True);
+"""
+From old pyplnet, former semantics needed for VINI
+"""
+def gifconf():
+ try:
+ interfaces = os.listdir("/sys/class/net")
+ except:
+ interfaces = []
+ s = None
+ ret = {}
+ try:
+ s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0)
+ for interface in interfaces:
+ try:
+ ifreq = fcntl.ioctl(s.fileno(), SIOCGIFADDR,
+ struct.pack("16sH14x", interface, socket.AF_INET))
+ (family, ip) = struct.unpack(SIOCGIFADDR_struct, ifreq)
+ if family == socket.AF_INET:
+ ret[interface] = _format_ip(ip)
+ else:
+ raise Exception
+ except:
+ ret[interface] = "0.0.0.0"
+ finally:
+ if s is not None:
+ s.close()
+ return ret
"""
Subnet used for virtual interfaces by setup-egre-link script
"""
Write /etc/vservers/<slicename>/spaces/net.
-Assumes that the vserver was started with a network namespace.
+Restart the vserver if there are any changes.
"""
def write_spaces_net(slicename, value):
SLICEDIR="/etc/vservers/%s/" % slicename
if os.path.exists(FILENAME) != value:
sliver = vserver.VServer(slicename)
+ sliver.stop()
+
if value:
STATUS="ON"
f = open(FILENAME, "w")
else:
STATUS="OFF"
os.remove(FILENAME)
-
+
+ sliver.start()
+
logger.log("%s: network namespace %s\n" % (slicename, STATUS))
quagga_dir = "/vservers/%s/etc/quagga/" % slicename
if not os.path.exists(quagga_dir):
try:
- # Quagga not installed. Install it here? Chkconfig, sym links.
os.mkdir(quagga_dir)
except os.error:
logger.log("topo: could not create %s\n" % quagga_dir)
myid, key)
write_ospf(quagga_dir + "ospfd.conf.generated", hostname, ifaces)
- # Start up Quagga if we installed it earlier and netns = 1.
-
return
"""
Executed on NM startup
"""
-def start(options, config):
+def start():
+ # Should be taken care of by /etc/sysctl.conf, but it doesn't hurt...
run ("echo 1 > /proc/sys/net/ipv4/ip_forward")
pass
"""
def GetSlivers(data, config = None, plc = None):
global ifaces, old_ifaces
- ifaces = old_ifaces = sioc.gifconf()
+ ifaces = old_ifaces = gifconf()
slicekeys = {}
for sliver in data['slivers']: