Merge 'master' into 'next'.
[sliver-openvswitch.git] / lib / ofp-print.c
index 7771911..cbac1e4 100644 (file)
@@ -219,6 +219,7 @@ nx_action_len(enum nx_action_subtype subtype)
     case NXAST_NOTE: return -1;
     case NXAST_SET_TUNNEL64: return sizeof(struct nx_action_set_tunnel64);
     case NXAST_MULTIPATH: return sizeof(struct nx_action_multipath);
+    case NXAST_AUTOPATH: return sizeof (struct nx_action_autopath);
     default: return -1;
     }
 }
@@ -226,7 +227,7 @@ nx_action_len(enum nx_action_subtype subtype)
 static void
 ofp_print_nx_action(struct ds *string, const struct nx_action_header *nah)
 {
-    uint16_t subtype = ntohs(nah->subtype);
+    int subtype = ntohs(nah->subtype);
     int required_len = nx_action_len(subtype);
     int len = ntohs(nah->len);
 
@@ -244,6 +245,7 @@ ofp_print_nx_action(struct ds *string, const struct nx_action_header *nah)
         const struct nx_action_reg_move *move;
         const struct nx_action_reg_load *load;
         const struct nx_action_multipath *nam;
+        const struct nx_action_autopath *naa;
 
         switch ((enum nx_action_subtype) subtype) {
         case NXAST_RESUBMIT:
@@ -295,13 +297,22 @@ ofp_print_nx_action(struct ds *string, const struct nx_action_header *nah)
             multipath_format(nam, string);
             return;
 
+        case NXAST_AUTOPATH:
+            naa = (const struct nx_action_autopath *)nah;
+            ds_put_format(string, "autopath(%u,", ntohl(naa->id));
+            nxm_format_field_bits(string, ntohl(naa->dst),
+                                  nxm_decode_ofs(naa->ofs_nbits),
+                                  nxm_decode_n_bits(naa->ofs_nbits));
+            ds_put_char(string, ')');
+            return;
+
         case NXAST_SNAT__OBSOLETE:
         default:
             break;
         }
     }
 
-    ds_put_format(string, "***unknown Nicira action:%"PRIu16"***", subtype);
+    ds_put_format(string, "***unknown Nicira action:%d***", subtype);
 }
 
 static int
@@ -603,7 +614,7 @@ ofp_print_phy_port(struct ds *string, const struct ofp_phy_port *port)
 
     memcpy(name, port->name, sizeof name);
     for (j = 0; j < sizeof name - 1; j++) {
-        if (!isprint(name[j])) {
+        if (!isprint((unsigned char) name[j])) {
             break;
         }
     }
@@ -711,7 +722,7 @@ static void print_wild(struct ds *string, const char *leader, int is_wild,
 }
 
 static void
-print_ip_netmask(struct ds *string, const char *leader, uint32_t ip,
+print_ip_netmask(struct ds *string, const char *leader, ovs_be32 ip,
                  uint32_t wild_bits, int verbosity)
 {
     if (wild_bits >= 32 && verbosity < 2) {
@@ -769,9 +780,6 @@ ofp_match_to_string(const struct ofp_match *om, int verbosity)
             skip_type = false;
         }
     }
-    if (w & NXFW_TUN_ID) {
-        ds_put_cstr(&f, "tun_id_wild,");
-    }
     print_wild(&f, "in_port=", w & OFPFW_IN_PORT, verbosity,
                "%d", ntohs(om->in_port));
     print_wild(&f, "dl_vlan=", w & OFPFW_DL_VLAN, verbosity,
@@ -826,7 +834,7 @@ ofp_print_flow_mod(struct ds *s, const struct ofp_header *oh,
     bool need_priority;
     int error;
 
-    error = ofputil_decode_flow_mod(&fm, oh, NXFF_OPENFLOW10);
+    error = ofputil_decode_flow_mod(&fm, oh, true);
     if (error) {
         ofp_print_error(s, error);
         return;
@@ -852,6 +860,9 @@ ofp_print_flow_mod(struct ds *s, const struct ofp_header *oh,
     default:
         ds_put_format(s, "cmd:%d", fm.command);
     }
+    if (fm.table_id != 0) {
+        ds_put_format(s, " table_id:%d", fm.table_id);
+    }
 
     ds_put_char(s, ' ');
     if (verbosity >= 3 && code == OFPUTIL_OFPT_FLOW_MOD) {
@@ -923,7 +934,7 @@ ofp_print_flow_removed(struct ds *string, const struct ofp_header *oh)
     struct ofputil_flow_removed fr;
     int error;
 
-    error = ofputil_decode_flow_removed(&fr, oh, NXFF_OPENFLOW10);
+    error = ofputil_decode_flow_removed(&fr, oh);
     if (error) {
         ofp_print_error(string, error);
         return;
@@ -1059,7 +1070,7 @@ ofp_print_flow_stats_request(struct ds *string, const struct ofp_header *oh)
     struct flow_stats_request fsr;
     int error;
 
-    error = ofputil_decode_flow_stats_request(&fsr, oh, NXFF_OPENFLOW10);
+    error = ofputil_decode_flow_stats_request(&fsr, oh);
     if (error) {
         ofp_print_error(string, error);
         return;
@@ -1092,7 +1103,7 @@ ofp_print_flow_stats_reply(struct ds *string, const struct ofp_header *oh)
         struct ofputil_flow_stats fs;
         int retval;
 
-        retval = ofputil_decode_flow_stats_reply(&fs, &b, NXFF_OPENFLOW10);
+        retval = ofputil_decode_flow_stats_reply(&fs, &b);
         if (retval) {
             if (retval != EOF) {
                 ds_put_cstr(string, " ***parse error***");
@@ -1320,25 +1331,6 @@ ofp_print_echo(struct ds *string, const struct ofp_header *oh, int verbosity)
     }
 }
 
-static void
-ofp_print_nxt_status_message(struct ds *string, const struct ofp_header *oh)
-{
-    struct ofpbuf b;
-
-    ofpbuf_use_const(&b, oh, ntohs(oh->length));
-    ofpbuf_pull(&b, sizeof(struct nicira_header));
-    ds_put_cstr(string, " \"");
-    ds_put_printable(string, b.data, b.size);
-    ds_put_char(string, '"');
-}
-
-static void
-ofp_print_nxt_tun_id_from_cookie(struct ds *string,
-                                 const struct nxt_tun_id_cookie *ntic)
-{
-    ds_put_format(string, " set=%"PRIu8, ntic->set);
-}
-
 static void
 ofp_print_nxt_role_message(struct ds *string,
                            const struct nx_role_request *nrr)
@@ -1357,6 +1349,13 @@ ofp_print_nxt_role_message(struct ds *string,
     }
 }
 
+static void
+ofp_print_nxt_flow_mod_table_id(struct ds *string,
+                                const struct nxt_flow_mod_table_id *nfmti)
+{
+    ds_put_format(string, " %s", nfmti->set ? "enable" : "disable");
+}
+
 static void
 ofp_print_nxt_set_flow_format(struct ds *string,
                               const struct nxt_set_flow_format *nsff)
@@ -1508,20 +1507,15 @@ ofp_to_string__(const struct ofp_header *oh,
         ofp_print_ofpst_aggregate_reply(string, oh);
         break;
 
-    case OFPUTIL_NXT_STATUS_REQUEST:
-    case OFPUTIL_NXT_STATUS_REPLY:
-        ofp_print_nxt_status_message(string, oh);
-        break;
-
-    case OFPUTIL_NXT_TUN_ID_FROM_COOKIE:
-        ofp_print_nxt_tun_id_from_cookie(string, msg);
-        break;
-
     case OFPUTIL_NXT_ROLE_REQUEST:
     case OFPUTIL_NXT_ROLE_REPLY:
         ofp_print_nxt_role_message(string, msg);
         break;
 
+    case OFPUTIL_NXT_FLOW_MOD_TABLE_ID:
+        ofp_print_nxt_flow_mod_table_id(string, msg);
+        break;
+
     case OFPUTIL_NXT_SET_FLOW_FORMAT:
         ofp_print_nxt_set_flow_format(string, msg);
         break;