Trying to add some error checking to matches and targets
[sfa.git] / sfatables / commands / Add.py
index b62ad6c..a8a63dc 100644 (file)
@@ -24,22 +24,20 @@ class Add(Command):
                     if (number>last_rule_number):
                         last_rule_number = number
 
-        return "sfatables-%d-%s"%(last_rule_number,type)
+        return "sfatables-%d-%s"%(last_rule_number+1,type)
 
-
-
-    def call(self, command_options, match_options, target_options):
-        filename = match_dir + "/"+match_options.match_name+".xml"
+    def call_gen(self, dir, options):
+        filename = dir + "/"+options.name+".xml"
         xmldoc = libxml2.parseFile(filename)
     
         p = xmldoc.xpathNewContext()
 
-        supplied_arguments = match_options.arguments
+        supplied_arguments = options.arguments
         for option in supplied_arguments:
             option_name = option['name']
-            option_value = getattr(match_options,option_name)
+            option_value = getattr(options,option_name)
 
-            if (hasattr(match_options,option_name)):
+            if (hasattr(options,option_name)):
                 context = p.xpathEval("//rule/argument[name='%s']"%option_name)
                 if (not context):
                     raise Exception('Unknown option %s for match %s'%(option,option['name']))
@@ -51,10 +49,16 @@ class Add(Command):
 
         chain = command_options.args[0]
         filename = self.getnextfilename('match',chain)
-        xmldoc.saveFile(filename)
+        file_path = sfatables_config + '/' + chain + '/' + filename
+        xmldoc.saveFile(file_path)
         p.xpathFreeContext()
         xmldoc.freeDoc()
 
-
         return True
 
+    def call(self, command_options, match_options, target_options):
+        ret = self.call_gen(match_dir, match_options)
+        if (ret):
+            ret = self.call_gen(target_dir, target_options)
+
+        return ret