ofp-actions: Switch away from odd use of "q" in "enqueue" action format.
authorBen Pfaff <blp@nicira.com>
Mon, 6 May 2013 17:55:06 +0000 (10:55 -0700)
committerBen Pfaff <blp@nicira.com>
Mon, 11 Nov 2013 18:58:10 +0000 (10:58 -0800)
The formatting of the "enqueue" action uses a "q" to separate the port
number from the queue number, as in "enqueue:123q456".  This is different
from every other action.  This commit improves the situation by:

    * Switching the formatting to use a colon (e.g. "enqueue:123:456"),
      which is a little less odd-looking but still accepted by older
      versions of Open vSwitch.

    * Improving the parser to accept "enqueue(123,456)" also.

Signed-off-by: Ben Pfaff <blp@nicira.com>
lib/ofp-actions.c
lib/ofp-parse.c
tests/ofp-actions.at
utilities/ovs-ofctl.8.in

index 6c90d5c..abc9505 100644 (file)
@@ -3281,7 +3281,7 @@ ofpact_format(const struct ofpact *a, struct ds *s)
         enqueue = ofpact_get_ENQUEUE(a);
         ds_put_format(s, "enqueue:");
         ofputil_format_port(enqueue->port, s);
         enqueue = ofpact_get_ENQUEUE(a);
         ds_put_format(s, "enqueue:");
         ofputil_format_port(enqueue->port, s);
-        ds_put_format(s, "q%"PRIu32, enqueue->queue);
+        ds_put_format(s, ":%"PRIu32, enqueue->queue);
         break;
 
     case OFPACT_OUTPUT_REG:
         break;
 
     case OFPACT_OUTPUT_REG:
index 915dc90..0fbe9f0 100644 (file)
@@ -179,12 +179,13 @@ static char * WARN_UNUSED_RESULT
 parse_enqueue(char *arg, struct ofpbuf *ofpacts)
 {
     char *sp = NULL;
 parse_enqueue(char *arg, struct ofpbuf *ofpacts)
 {
     char *sp = NULL;
-    char *port = strtok_r(arg, ":q", &sp);
+    char *port = strtok_r(arg, ":q,", &sp);
     char *queue = strtok_r(NULL, "", &sp);
     struct ofpact_enqueue *enqueue;
 
     if (port == NULL || queue == NULL) {
     char *queue = strtok_r(NULL, "", &sp);
     struct ofpact_enqueue *enqueue;
 
     if (port == NULL || queue == NULL) {
-        return xstrdup("\"enqueue\" syntax is \"enqueue:PORT:QUEUE\"");
+        return xstrdup("\"enqueue\" syntax is \"enqueue:PORT:QUEUE\" or "
+                       "\"enqueue(PORT,QUEUE)\"");
     }
 
     enqueue = ofpact_put_ENQUEUE(ofpacts);
     }
 
     enqueue = ofpact_put_ENQUEUE(ofpacts);
index 244c9ee..cdca8ca 100644 (file)
@@ -39,7 +39,7 @@ AT_DATA([test-data], [dnl
 # actions=mod_tp_dst:443
 000a 0008 01bb 0000
 
 # actions=mod_tp_dst:443
 000a 0008 01bb 0000
 
-# actions=enqueue:10q55
+# actions=enqueue:10:55
 000b 0010 000a 000000000000 00000037
 
 # actions=resubmit:5
 000b 0010 000a 000000000000 00000037
 
 # actions=resubmit:5
index 82ad87f..20fb170 100644 (file)
@@ -1056,10 +1056,10 @@ written in the upper half of register 0.  This form of \fBoutput\fR
 uses an OpenFlow extension that is not supported by standard OpenFlow
 switches.
 .
 uses an OpenFlow extension that is not supported by standard OpenFlow
 switches.
 .
-.IP \fBenqueue:\fIport\fB:\fIqueue\fR
+.IP \fBenqueue(\fIport\fB,\fIqueue\fB)\fR
 Enqueues the packet on the specified \fIqueue\fR within port
 \fIport\fR, which must be an OpenFlow port number or keyword
 Enqueues the packet on the specified \fIqueue\fR within port
 \fIport\fR, which must be an OpenFlow port number or keyword
-(e.g. \fBLOCAL\fR)..  The number of supported queues depends on the
+(e.g. \fBLOCAL\fR).  The number of supported queues depends on the
 switch; some OpenFlow implementations do not support queuing at all.
 .
 .IP \fBnormal\fR
 switch; some OpenFlow implementations do not support queuing at all.
 .
 .IP \fBnormal\fR