vswitchd: Make the MAC entry aging time configurable.
[sliver-openvswitch.git] / lib / learning-switch.c
index 4a5d889..60cf731 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks.
+ * Copyright (c) 2008, 2009, 2010, 2011, 2012 Nicira Networks.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -29,6 +29,7 @@
 #include "hmap.h"
 #include "mac-learning.h"
 #include "ofpbuf.h"
+#include "ofp-errors.h"
 #include "ofp-parse.h"
 #include "ofp-print.h"
 #include "ofp-util.h"
@@ -96,7 +97,9 @@ lswitch_create(struct rconn *rconn, const struct lswitch_config *cfg)
     sw->max_idle = cfg->max_idle;
     sw->datapath_id = 0;
     sw->last_features_request = time_now() - 1;
-    sw->ml = cfg->mode == LSW_LEARN ? mac_learning_create() : NULL;
+    sw->ml = (cfg->mode == LSW_LEARN
+              ? mac_learning_create(MAC_ENTRY_DEFAULT_IDLE_TIME)
+              : NULL);
     sw->action_normal = cfg->mode == LSW_NORMAL;
 
     flow_wildcards_init_exact(&sw->wc);
@@ -149,7 +152,7 @@ lswitch_create(struct rconn *rconn, const struct lswitch_config *cfg)
             }
         }
     }
-    
+
     return sw;
 }
 
@@ -257,6 +260,8 @@ lswitch_process_packet(struct lswitch *sw, struct rconn *rconn,
     case OFPUTIL_NXT_ROLE_REPLY:
     case OFPUTIL_NXT_FLOW_MOD_TABLE_ID:
     case OFPUTIL_NXT_SET_FLOW_FORMAT:
+    case OFPUTIL_NXT_SET_PACKET_IN_FORMAT:
+    case OFPUTIL_NXT_PACKET_IN:
     case OFPUTIL_NXT_FLOW_MOD:
     case OFPUTIL_NXT_FLOW_REMOVED:
     case OFPUTIL_NXST_FLOW_REQUEST:
@@ -419,7 +424,7 @@ process_packet_in(struct lswitch *sw, struct rconn *rconn,
     pkt_ofs = offsetof(struct ofp_packet_in, data);
     pkt_len = ntohs(opi->header.length) - pkt_ofs;
     ofpbuf_use_const(&pkt, opi->data, pkt_len);
-    flow_extract(&pkt, 0, in_port, &flow);
+    flow_extract(&pkt, 0, 0, in_port, &flow);
 
     /* Choose output port. */
     out_port = lswitch_choose_destination(sw, &flow);