# local modules
import bwlimit, logger, iptables, tools
+# we can't do anything without a network
+priority=1
+
dev_default = tools.get_default_if()
-def start(options, conf):
+
+def start():
logger.log("net: plugin starting up...")
def GetSlivers(data, config, plc):
+ # added by caglar
+ # band-aid for short period as old API returns networks instead of interfaces
+ global KEY_NAME
+ KEY_NAME = "interfaces"
+ #################
+
logger.verbose("net: GetSlivers called.")
- if not 'interfaces' in data:
- logger.log_missing_data('net.GetSlivers','interfaces')
- return
+ if not 'interfaces' in data:
+ # added by caglar
+ # band-aid for short period as old API returns networks instead of interfaces
+ # logger.log_missing_data('net.GetSlivers','interfaces')
+ # return
+ if not 'networks' in data:
+ logger.log_missing_data('net.GetSlivers','interfaces')
+ return
+ else:
+ KEY_NAME = "networks"
+ ##################
+
plnet.InitInterfaces(logger, plc, data)
- if 'OVERRIDES' in dir(config):
+ if 'OVERRIDES' in dir(config):
if config.OVERRIDES.get('net_max_rate') == '-1':
logger.log("net: Slice and node BW Limits disabled.")
- if len(bwlimit.tc("class show dev %s" % dev_default)):
+ if len(bwlimit.tc("class show dev %s" % dev_default)):
logger.verbose("net: *** DISABLING NODE BW LIMITS ***")
bwlimit.stop()
else:
for dev in devs:
macs[sioc.gifhwaddr(dev).lower()] = dev
- for interface in data['interfaces']:
+ for interface in data[KEY_NAME]:
# Get interface name preferably from MAC address, falling
# back on IP address.
hwaddr=interface['mac']
# and add IPs that don't exist in the set rather than
# just recreateing the set.
bwlimit.exempt_init('Internet2', i2nodes)
-
+
# set the iptables classification rule if it doesnt exist.
cmd = '-A POSTROUTING -m set --set Internet2 dst -j CLASSIFY --set-class 0001:2000 --add-mark'
rules = []
os.popen("/sbin/iptables -t mangle " + cmd)
def InitNAT(plc, data):
-
+
# query running network interfaces
devs = sioc.gifconf()
ips = dict(zip(devs.values(), devs.keys()))
macs[sioc.gifhwaddr(dev).lower()] = dev
ipt = iptables.IPTables()
- for interface in data['interfaces']:
+ for interface in data[KEY_NAME]:
# Get interface name preferably from MAC address, falling
# back on IP address.
hwaddr=interface['mac']
fields['source'] = "0.0.0.0/0"
ipt.add_pf(fields)
ipt.commit()
-
-def start(options, config):
- pass