odp-util: Improve formatting of bad ODP actions.
authorBen Pfaff <blp@nicira.com>
Thu, 23 Dec 2010 22:21:01 +0000 (14:21 -0800)
committerBen Pfaff <blp@nicira.com>
Tue, 28 Dec 2010 17:17:23 +0000 (09:17 -0800)
nla_len is the size of a Netlink attribute including its header, but we
only want to print the attribute payload, so use nl_attr_get_size()
instead.

Also, make it clear that what follows the "bad action" information is a
dump of the action itself.

Acked-by: Jesse Gross <jesse@nicira.com>
lib/odp-util.c

index 547e87ed90f93ec4ebdb0bf51999d3f6e06fa986..09f8b8384d7c75b299daf37ae4c2a7da807a3c79 100644 (file)
@@ -83,13 +83,15 @@ odp_action_len(uint16_t type)
 static void
 format_generic_odp_action(struct ds *ds, const struct nlattr *a)
 {
+    size_t len = nl_attr_get_size(a);
+
     ds_put_format(ds, "action%"PRId16, nl_attr_type(a));
-    if (a->nla_len) {
+    if (len) {
         const uint8_t *unspec;
         unsigned int i;
 
         unspec = nl_attr_get(a);
-        for (i = 0; i < a->nla_len; i++) {
+        for (i = 0; i < len; i++) {
             ds_put_char(ds, i ? ' ': '(');
             ds_put_format(ds, "%02x", unspec[i]);
         }
@@ -104,7 +106,7 @@ format_odp_action(struct ds *ds, const struct nlattr *a)
     ovs_be32 ip;
 
     if (nl_attr_get_size(a) != odp_action_len(nl_attr_type(a))) {
-        ds_put_format(ds, "***bad action: length is %zu, expected %d*** ",
+        ds_put_format(ds, "bad length %zu, expected %d for: ",
                       nl_attr_get_size(a), odp_action_len(nl_attr_type(a)));
         format_generic_odp_action(ds, a);
         return;