vswitchd: Document map members as separate columns
[openvswitch] / lib / ofp-util.c
index 6887217da2bccac19af73a5b5cc521b3c210021e..52a996a54cc7acfab9ef0d5b9f66aaf71eef039a 100644 (file)
@@ -25,6 +25,7 @@
 #include "byte-order.h"
 #include "classifier.h"
 #include "dynamic-string.h"
+#include "learn.h"
 #include "multipath.h"
 #include "nx-match.h"
 #include "ofp-errors.h"
@@ -343,9 +344,6 @@ static int
 ofputil_decode_vendor(const struct ofp_header *oh,
                       const struct ofputil_msg_type **typep)
 {
-    BUILD_ASSERT_DECL(sizeof(struct nxt_set_flow_format)
-                      != sizeof(struct nxt_flow_mod_table_id));
-
     static const struct ofputil_msg_type nxt_messages[] = {
         { OFPUTIL_NXT_ROLE_REQUEST,
           NXT_ROLE_REQUEST, "NXT_ROLE_REQUEST",
@@ -1870,7 +1868,7 @@ make_packet_out(const struct ofpbuf *packet, uint32_t buffer_id,
     opo->header.length = htons(size);
     opo->header.xid = htonl(0);
     opo->buffer_id = htonl(buffer_id);
-    opo->in_port = htons(in_port == OVSP_LOCAL ? OFPP_LOCAL : in_port);
+    opo->in_port = htons(in_port);
     opo->actions_len = htons(actions_len);
     ofpbuf_put(out, actions, actions_len);
     if (packet) {
@@ -2132,6 +2130,10 @@ validate_actions(const union ofp_action *actions, size_t n_actions,
                 (const struct nx_action_resubmit *) a);
             break;
 
+        case OFPUTIL_NXAST_LEARN:
+            error = learn_check((const struct nx_action_learn *) a, flow);
+            break;
+
         case OFPUTIL_OFPAT_STRIP_VLAN:
         case OFPUTIL_OFPAT_SET_NW_SRC:
         case OFPUTIL_OFPAT_SET_NW_DST: