secchan: Make ofproto_add_flow() able to add a permanent flow.
authorBen Pfaff <blp@nicira.com>
Tue, 10 Mar 2009 16:55:41 +0000 (09:55 -0700)
committerBen Pfaff <blp@nicira.com>
Tue, 10 Mar 2009 21:00:34 +0000 (14:00 -0700)
secchan/fail-open.c
secchan/in-band.c
secchan/ofproto.c

index f3053a8d2d6893667e2d6d8f2d6ee6cc48a82d02..1b3e75fd6cf1c409e483718dd1b9a1762532c8f3 100644 (file)
@@ -116,11 +116,12 @@ fail_open_handle_flow_miss(struct fail_open *fo, struct ofproto *ofproto,
     action.output.len = htons(sizeof action);
     if (in_port == out_port || out_port == DROP) {
         /* Set up a flow to drop packets. */
-        ofproto_add_flow(ofproto, flow, 0, UINT16_MAX, NULL, 0, NULL, 0);
+        ofproto_add_flow(ofproto, flow, 0, UINT16_MAX, NULL, 0, NULL, -1);
     } else if (out_port != FLOOD) {
         /* The output port is known, so add a new flow. */
         action.output.port = htons(out_port);
-        ofproto_add_flow(ofproto, flow, 0, UINT16_MAX, &action, 1, payload, 0);
+        ofproto_add_flow(ofproto, flow, 0, UINT16_MAX,
+                         &action, 1, payload, -1);
     } else {
         /* We don't know that MAC.  Send along the packet without setting up a
          * flow. */
index 62fbef7e34798eec0e99ae7d4fda064fe0e8ec9d..6212061d13241fee6d30b4111fd1db2b979f445e 100644 (file)
@@ -189,11 +189,12 @@ in_band_handle_flow_miss(struct in_band *in_band, struct ofproto *ofproto,
     action.output.len = htons(sizeof action);
     if (in_port == out_port || out_port == DROP) {
         /* Set up a flow to drop packets. */
-        ofproto_add_flow(ofproto, flow, 0, UINT16_MAX, NULL, 0, NULL, 0);
+        ofproto_add_flow(ofproto, flow, 0, UINT16_MAX, NULL, 0, NULL, -1);
     } else if (out_port != FLOOD) {
         /* The output port is known, so add a new flow. */
         action.output.port = htons(out_port);
-        ofproto_add_flow(ofproto, flow, 0, UINT16_MAX, &action, 1, payload, 0);
+        ofproto_add_flow(ofproto, flow, 0, UINT16_MAX,
+                         &action, 1, payload, -1);
     } else {
         /* We don't know that MAC.  Send along the packet without setting up a
          * flow. */
index f49ec56fcad16789404c6bc4084a6390977f3123..c30e6874286c394b38a0be5ff76771646a243233 100644 (file)
@@ -779,7 +779,7 @@ ofproto_add_flow(struct ofproto *p,
 
     rule = xmalloc(sizeof *rule);
     cls_rule_from_flow(&rule->cr, flow, wildcards, priority);
-    rule->idle_timeout = idle_timeout ? idle_timeout : 5; /* XXX */
+    rule->idle_timeout = idle_timeout >= 0 ? idle_timeout : 5; /* XXX */
     rule->hard_timeout = 0;     /* XXX */
     rule->used = rule->created = time_msec();
     rule->packet_count = 0;