summaryrefslogtreecommitdiff
path: root/utilities/ovs-controller.c
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2011-06-01 09:09:20 -0700
committerBen Pfaff <blp@nicira.com>2011-06-01 09:09:20 -0700
commit7286b1e13dbf358ea6071d04b311474208308ad6 (patch)
treec796e20d658fc57c11b79a72de70ea25c2795201 /utilities/ovs-controller.c
parenteb6f28db085cdf8dd506aa06825199e09f85c32c (diff)
downloadopenvswitch-7286b1e13dbf358ea6071d04b311474208308ad6.tar.gz
ovs-controller: Allow --wildcards to specify a wildcard set.
Based on a patch by Jean Tourrilhes <jt@hpl.hp.com>. According to Jean, besides increasing flexibility, this reduces normalization warnings. Tested-by: Jean Tourrilhes <jt@hpl.hp.com>
Diffstat (limited to 'utilities/ovs-controller.c')
-rw-r--r--utilities/ovs-controller.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/utilities/ovs-controller.c b/utilities/ovs-controller.c
index f97797472..022b1a4db 100644
--- a/utilities/ovs-controller.c
+++ b/utilities/ovs-controller.c
@@ -61,8 +61,9 @@ static bool set_up_flows = true;
/* -N, --normal: Use "NORMAL" action instead of explicit port? */
static bool action_normal = false;
-/* -w, --wildcard: Set up exact match or wildcard flow entries? */
-static bool exact_flows = true;
+/* -w, --wildcard: 0 to disable wildcard flow entries, a OFPFW_* bitmask to
+ * enable specific wildcards, or UINT32_MAX to use the default wildcards. */
+static uint32_t wildcards = 0;
/* --max-idle: Maximum idle time, in seconds, before flows expire. */
static int max_idle = 60;
@@ -227,7 +228,7 @@ new_switch(struct switch_ *sw, struct vconn *vconn)
cfg.mode = (action_normal ? LSW_NORMAL
: learn_macs ? LSW_LEARN
: LSW_FLOOD);
- cfg.exact_flows = exact_flows;
+ cfg.wildcards = wildcards;
cfg.max_idle = set_up_flows ? max_idle : -1;
cfg.default_flows = &default_flows;
cfg.default_queue = default_queue;
@@ -317,7 +318,7 @@ parse_options(int argc, char *argv[])
{"hub", no_argument, NULL, 'H'},
{"noflow", no_argument, NULL, 'n'},
{"normal", no_argument, NULL, 'N'},
- {"wildcard", no_argument, NULL, 'w'},
+ {"wildcards", optional_argument, NULL, 'w'},
{"max-idle", required_argument, NULL, OPT_MAX_IDLE},
{"mute", no_argument, NULL, OPT_MUTE},
{"queue", required_argument, NULL, 'q'},
@@ -361,7 +362,7 @@ parse_options(int argc, char *argv[])
break;
case 'w':
- exact_flows = false;
+ wildcards = optarg ? strtol(optarg, NULL, 16) : UINT32_MAX;
break;
case OPT_MAX_IDLE:
@@ -447,7 +448,7 @@ usage(void)
" -n, --noflow pass traffic, but don't add flows\n"
" --max-idle=SECS max idle time for new flows\n"
" -N, --normal use OFPP_NORMAL action\n"
- " -w, --wildcard use wildcards, not exact-match rules\n"
+ " -w, --wildcards[=MASK] wildcard (specified) bits in flows\n"
" -q, --queue=QUEUE-ID OpenFlow queue ID to use for output\n"
" -Q PORT-NAME:QUEUE-ID use QUEUE-ID for frames from PORT-NAME\n"
" --with-flows FILE use the flows from FILE\n"