From f724cb6c1aa1a576cd12fa3e8e2599c4b80f381a Mon Sep 17 00:00:00 2001 From: Murali Reddy Date: Fri, 2 Sep 2016 10:37:20 +0530 Subject: [PATCH] add support to generic rule in CsRule ability to delete fwmark rule for the device specific routing table --- .../debian/config/opt/cloud/bin/cs/CsRule.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsRule.py b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsRule.py index ed164b3bdc6..9c48768b35a 100755 --- a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsRule.py +++ b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsRule.py @@ -30,12 +30,30 @@ class CsRule: self.tableNo = int(dev[3:]) self.table = "Table_%s" % (dev) + def addRule(self, rule): + if not self.findRule(rule + " lookup " + self.table): + cmd = "ip rule add " + rule + " table " + self.table + CsHelper.execute(cmd) + logging.info("Added rule %s for %s" % (cmd, self.table)) + + def findRule(self, rule): + for i in CsHelper.execute("ip rule show"): + if rule in i.strip(): + return True + return False + def addMark(self): if not self.findMark(): cmd = "ip rule add fwmark %s table %s" % (self.tableNo, self.table) CsHelper.execute(cmd) logging.info("Added fwmark rule for %s" % (self.table)) + def delMark(self): + if self.findMark(): + cmd = "ip rule delete fwmark %s table %s" % (self.tableNo, self.table) + CsHelper.execute(cmd) + logging.info("Deleting fwmark rule for %s" % (self.table)) + def findMark(self): srch = "from all fwmark %s lookup %s" % (hex(self.tableNo), self.table) for i in CsHelper.execute("ip rule show"):