From 16f4fdef39711a31d09485e289a779b68fc5970a Mon Sep 17 00:00:00 2001 From: Faiyaz Ahmed Date: Fri, 19 Sep 2008 19:06:20 +0000 Subject: [PATCH] Check for the existence of the Internet2 clique iptables rule and add if absent. --- README | 2 +- net.py | 15 +++++++++++++++ nm.py | 9 +++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/README b/README index aa62ab0..d049d21 100644 --- a/README +++ b/README @@ -1,7 +1,7 @@ # $Id$ # $HeadURL$ -The PlanetLab Node Manager manages all aspects of PlanetLab node and slice management once the node has been initialized and configured by the Boot Manager. It periodically contacts its management authority for configuration updates. It provides an XML-RPC API for performing local operations on slices. +The PlanetLab NodeManager manages all aspects of PlanetLab node and slice management once the node has been initialized and configured by the Boot Manager. It periodically contacts its management authority for configuration updates. It provides an XML-RPC API for performing local operations on slices. Copyright 2008 Princeton University http://www.planet-lab.org diff --git a/net.py b/net.py index 2bd220c..16953aa 100644 --- a/net.py +++ b/net.py @@ -8,6 +8,7 @@ import bwlimit import logger import string import iptables +import os def GetSlivers(plc, data): InitNodeLimit(data) @@ -61,8 +62,22 @@ def InitI2(plc, data): i2nodes = [] i2nodeids = plc.GetNodeGroups(["Internet2"])[0]['node_ids'] for node in plc.GetInterfaces({"node_id": i2nodeids}, ["ip"]): + # Get the IPs i2nodes.append(node['ip']) + # this will create the set if it doesn't already exist + # 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 = [] + ipt = os.popen("/sbin/iptables-save") + for line in ipt.readlines(): rules.append(line.strip(" \n")) + ipt.close() + if cmd not in rules: + logger.verbose("net: Adding iptables rule for Internet2") + os.popen("/sbin/iptables -t mangle " + cmd) def InitNAT(plc, data): # query running network interfaces diff --git a/nm.py b/nm.py index ea8af80..bb0a2ab 100755 --- a/nm.py +++ b/nm.py @@ -1,4 +1,13 @@ #!/usr/bin/python + +# +# Useful information can be found at https://svn.planet-lab.org/wiki/NodeManager +# + +# Faiyaz Ahmed +# Copyright (C) 2008 The Trustees of Princeton University + + """Node Manager""" import optparse -- 2.43.0