2
0
mirror of https://github.com/openvswitch/ovs synced 2025-10-17 14:28:02 +00:00

mac-learning: Make data structures public.

The vswitchd bonding code needs to iterate through the table entries to
be able to send out gratuitous learning packets when bond slaves go down.
It might be best to create an abstract interface to the MAC learning table,
but this commit does the simpler thing and exposes the data structures in
the header file.
This commit is contained in:
Ben Pfaff
2009-06-08 12:20:38 -07:00
parent ce87c72813
commit 962ff3d674
2 changed files with 29 additions and 27 deletions

View File

@@ -32,33 +32,6 @@
#define THIS_MODULE VLM_mac_learning
#include "vlog.h"
#define MAC_HASH_BITS 10
#define MAC_HASH_MASK (MAC_HASH_SIZE - 1)
#define MAC_HASH_SIZE (1u << MAC_HASH_BITS)
#define MAC_MAX 1024
/* A MAC learning table entry. */
struct mac_entry {
struct list hash_node; /* Element in a mac_learning 'table' list. */
struct list lru_node; /* Element in 'lrus' or 'free' list. */
time_t expires; /* Expiration time. */
uint8_t mac[ETH_ADDR_LEN]; /* Known MAC address. */
uint16_t vlan; /* VLAN tag. */
int port; /* Port on which MAC was most recently seen. */
tag_type tag; /* Tag for this learning entry. */
};
/* MAC learning table. */
struct mac_learning {
struct list free; /* Not-in-use entries. */
struct list lrus; /* In-use entries, least recently used at the
front, most recently used at the back. */
struct list table[MAC_HASH_SIZE]; /* Hash table. */
struct mac_entry entries[MAC_MAX]; /* All entries. */
uint32_t secret; /* Secret for */
};
static uint32_t
mac_table_hash(const uint8_t mac[ETH_ADDR_LEN], uint16_t vlan)
{