ofp-msgs: Add function ofptype_get_name().
authorBen Pfaff <blp@nicira.com>
Mon, 6 Jul 2015 16:54:32 +0000 (09:54 -0700)
committerBen Pfaff <blp@nicira.com>
Tue, 7 Jul 2015 03:50:01 +0000 (20:50 -0700)
An upcoming commit will make use of this.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
build-aux/extract-ofp-msgs
lib/ofp-msgs.c
lib/ofp-msgs.h

index 0ccd64e..b00039d 100755 (executable)
@@ -246,6 +246,7 @@ def extract_ofp_msgs(output_file_name):
         if re.match('enum ofptype', line):
             break
 
+    all_types = []
     while True:
         get_line()
         if re.match(r'\s*/?\*', line) or line.isspace():
@@ -280,6 +281,8 @@ def extract_ofp_msgs(output_file_name):
                       % (raw, all_raws[raw]["ofptype"]))
             all_raws[raw]["ofptype"] = ofptype
 
+        all_types.append(all_raws[raws[0]]["human_name"])
+
     input_file.close()
 
     if n_errors:
@@ -346,6 +349,12 @@ def extract_ofp_msgs(output_file_name):
                               % r["human_name"])
     output.append("};")
 
+    output.append("");
+    output.append("static const char *type_names[] = {");
+    for t in all_types:
+        output.append("    \"%s\"," % t)
+    output.append("};")
+
     if n_errors:
         sys.exit(1)
 
index 4d14ff9..3a120e2 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2013, 2014 Nicira, Inc.
+ * Copyright (c) 2012, 2013, 2014, 2015 Nicira, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -824,6 +824,13 @@ ofptype_from_ofpraw(enum ofpraw raw)
 {
     return raw_info_get(raw)->type;
 }
+
+const char *
+ofptype_get_name(enum ofptype type)
+{
+    ovs_assert(type < ARRAY_SIZE(type_names));
+    return type_names[type];
+}
 \f
 /* Updates the 'length' field of the OpenFlow message in 'buf' to
  * 'buf->size'. */
index 29729c0..3d9fedf 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2013, 2014 Nicira, Inc.
+ * Copyright (c) 2012, 2013, 2014, 2015 Nicira, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -653,6 +653,9 @@ enum ofptype {
 enum ofperr ofptype_decode(enum ofptype *, const struct ofp_header *);
 enum ofperr ofptype_pull(enum ofptype *, struct ofpbuf *);
 enum ofptype ofptype_from_ofpraw(enum ofpraw);
+
+/* Information about OFTYPE_* values. */
+const char *ofptype_get_name(enum ofptype);
 \f
 /* OpenFlow message properties. */
 void ofpmsg_update_length(struct ofpbuf *);