Browse Source

[trac978] The default action loader

Michal 'vorner' Vaner 14 years ago
parent
commit
3eb8c8e08c
1 changed files with 23 additions and 3 deletions
  1. 23 3
      src/lib/acl/loader.cc

+ 23 - 3
src/lib/acl/loader.cc

@@ -14,12 +14,32 @@
 
 #include "loader.h"
 
+using namespace std;
+
 namespace isc {
 namespace acl {
 
-Action defaultActionLoader(data::ConstElementPtr) {
-    // XXX: Temporary, so it compiles for now
-    return (DROP);
+Action defaultActionLoader(data::ConstElementPtr actionEl) {
+    try {
+        const string action(actionEl->stringValue());
+        if (action == "ACCEPT") {
+            return (ACCEPT);
+        } else if (action == "REJECT") {
+            return (REJECT);
+        } else if (action == "DROP") {
+            return (DROP);
+        } else {
+            throw LoaderError(__FILE__, __LINE__,
+                              string("Unknown action '" + action + "'").
+                                  c_str(),
+                              actionEl);
+        }
+    }
+    catch (const data::TypeError&) {
+        throw LoaderError(__FILE__, __LINE__,
+                          "Invalid element type for action, must be string",
+                          actionEl);
+    }
 }
 
 }