classifier: New function cls_rule_to_string().
authorBen Pfaff <blp@nicira.com>
Thu, 11 Feb 2010 21:47:30 +0000 (13:47 -0800)
committerBen Pfaff <blp@nicira.com>
Fri, 12 Feb 2010 21:55:47 +0000 (13:55 -0800)
This may be useful for debugging.

From Jean Tourrilhes <jt@hpl.hp.com>.

lib/classifier.c
lib/classifier.h

index 94c8380229f904dac1679fce52c4fe695d302d2a..748e0dfdcb54666e703910712f21137590e4200c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009 Nicira Networks.
+ * Copyright (c) 2009, 2010 Nicira Networks.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,6 +19,7 @@
 #include <assert.h>
 #include <errno.h>
 #include <netinet/in.h>
+#include "dynamic-string.h"
 #include "flow.h"
 #include "hash.h"
 
@@ -75,6 +76,18 @@ cls_rule_from_match(struct cls_rule *rule, const struct ofp_match *match,
     rule->table_idx = table_idx_from_wildcards(rule->wc.wildcards);
 }
 
+/* Converts 'rule' to a string and returns the string.  The caller must free
+ * the string (with free()). */
+char *
+cls_rule_to_string(const struct cls_rule *rule)
+{
+    struct ds s = DS_EMPTY_INITIALIZER;
+    ds_put_format(&s, "wildcards=%x priority=%u ",
+                  rule->wc.wildcards, rule->priority);
+    flow_format(&s, &rule->flow);
+    return ds_cstr(&s);
+}
+
 /* Prints cls_rule 'rule', for debugging.
  *
  * (The output could be improved and expanded, but this was good enough to
index 194b04e6b3b18a6b071fd427141e1b64ccf490ca..14fd707929aad71f112f88ddd6a82af12ed10976 100644 (file)
@@ -123,6 +123,7 @@ void cls_rule_from_flow(struct cls_rule *, const flow_t *, uint32_t wildcards,
                         unsigned int priority);
 void cls_rule_from_match(struct cls_rule *, const struct ofp_match *,
                          unsigned int priority);
+char *cls_rule_to_string(const struct cls_rule *);
 void cls_rule_print(const struct cls_rule *);
 void cls_rule_moved(struct classifier *,
                     struct cls_rule *old, struct cls_rule *new);