From: Ben Pfaff Date: Wed, 15 Jul 2009 18:02:24 +0000 (-0700) Subject: mac-learning: New function mac_entry_age(). X-Git-Tag: v0.90.3~3^2~7 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=321943f7904e1e28948e68cb1c78d89f169c07a2;p=sliver-openvswitch.git mac-learning: New function mac_entry_age(). This function will be used as part of printing the MAC learning table at user request. --- diff --git a/lib/mac-learning.c b/lib/mac-learning.c index eeebce866..c9b7d3e73 100644 --- a/lib/mac-learning.c +++ b/lib/mac-learning.c @@ -32,6 +32,14 @@ #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) { diff --git a/lib/mac-learning.h b/lib/mac-learning.h index aa164d3ba..6a2d30b4b 100644 --- a/lib/mac-learning.h +++ b/lib/mac-learning.h @@ -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. */