ovs-ofctl: Use 65535 instead of 0 for OFPP_CONTROLLER max_len.
authorBen Pfaff <blp@nicira.com>
Wed, 15 Jul 2009 20:25:11 +0000 (13:25 -0700)
committerBen Pfaff <blp@nicira.com>
Wed, 15 Jul 2009 20:25:11 +0000 (13:25 -0700)
OpenFlow 0.9 will change the interpretation of a max_len of 0 in an
OFPP_CONTROLLER output action from "send entire packet" to "send 0 bytes
of packet", but ovs-ofctl documents that specifying no argument or "ALL"
as the argument to a CONTROLLER output action sends the whole packet, so
we need to make that happen.

include/openflow/openflow.h
utilities/ovs-ofctl.c

index f780f0730298416c48317516b26fc7934518e053..1d70aab95d34956d03c8469e8d3e526773fa9fee 100644 (file)
@@ -320,8 +320,8 @@ enum ofp_action_type {
 
 /* Action structure for OFPAT_OUTPUT, which sends packets out 'port'.  
  * When the 'port' is the OFPP_CONTROLLER, 'max_len' indicates the max 
- * number of bytes to send.  A 'max_len' of zero means the entire packet 
- * should be sent. */
+ * number of bytes to send.  A 'max_len' of zero means no bytes of the
+ * packet should be sent. */
 struct ofp_action_output {
     uint16_t type;                  /* OFPAT_OUTPUT. */
     uint16_t len;                   /* Length is 8. */
index a39e99fcf3ac78052cee4cc6667c9b9791f3bcff..44f214aa01af1b3e28c11ba0a448c1cfe72e7c0d 100644 (file)
@@ -617,6 +617,8 @@ str_to_action(char *str, struct ofpbuf *b)
              * packet to the controller. */
             if (arg && (strspn(act, "0123456789") == strlen(act))) {
                oao->max_len = htons(str_to_u32(arg));
+            } else {
+                oao->max_len = htons(UINT16_MAX);
             }
         } else if (parse_port_name(act, &port)) {
             put_output_action(b, port);