mac-learning: New function mac_entry_age().
authorBen Pfaff <blp@nicira.com>
Wed, 15 Jul 2009 18:02:24 +0000 (11:02 -0700)
committerBen Pfaff <blp@nicira.com>
Thu, 16 Jul 2009 16:17:06 +0000 (09:17 -0700)
This function will be used as part of printing the MAC learning table at
user request.

lib/mac-learning.c
lib/mac-learning.h

index eeebce8..c9b7d3e 100644 (file)
 #define THIS_MODULE VLM_mac_learning
 #include "vlog.h"
 
+/* Returns the number of seconds since 'e' was last learned. */
+int
+mac_entry_age(const struct mac_entry *e)
+{
+    time_t remaining = e->expires - time_now();
+    return MAC_ENTRY_IDLE_TIME - remaining;
+}
+
 static uint32_t
 mac_table_hash(const uint8_t mac[ETH_ADDR_LEN], uint16_t vlan)
 {
@@ -174,7 +182,7 @@ mac_learning_learn(struct mac_learning *ml,
     /* Make the entry most-recently-used. */
     list_remove(&e->lru_node);
     list_push_back(&ml->lrus, &e->lru_node);
-    e->expires = time_now() + 60;
+    e->expires = time_now() + MAC_ENTRY_IDLE_TIME;
 
     /* Did we learn something? */
     if (e->port != src_port) {
index aa164d3..6a2d30b 100644 (file)
@@ -28,6 +28,9 @@
 
 #define MAC_MAX 1024
 
+/* Time, in seconds, before expiring a mac_entry due to inactivity. */
+#define MAC_ENTRY_IDLE_TIME 60
+
 /* A MAC learning table entry. */
 struct mac_entry {
     struct list hash_node;      /* Element in a mac_learning 'table' list. */
@@ -39,6 +42,8 @@ struct mac_entry {
     tag_type tag;               /* Tag for this learning entry. */
 };
 
+int mac_entry_age(const struct mac_entry *);
+
 /* MAC learning table. */
 struct mac_learning {
     struct list free;           /* Not-in-use entries. */