ARL table configuration
Overview
// typedefs typedef enum arl_entry_type arl_entry_type; typedef struct arl_entry_t arl_entry_t; // enums enum arl_entry_type; // structs struct arl_entry_t; // global functions typedef TAILQ_HEAD(arl_table_t, arl_entry_t); static void tapi_mac_next(uint8_t* mac); static bool tapi_mac_is_broadcast(const uint8_t* mac); static bool tapi_mac_is_multicast(const uint8_t* mac); int tapi_cfg_arl_get_table(const char* ta, bool sync, arl_table_t* p_table); int tapi_cfg_arl_del_entry(const char* ta, arl_entry_type type, unsigned int port_num, const uint8_t* mac_addr, const char* vlan_name); int tapi_cfg_arl_add_entry(const char* ta, arl_entry_type type, unsigned int port_num, const uint8_t* mac_addr, const char* vlan_name); int tapi_cfg_arl_get_entry(const char* oid, arl_entry_t* p); void tapi_arl_free_entry(arl_entry_t* p); void tapi_arl_free_table(arl_table_t* p_table); arl_entry_t* tapi_arl_find(const arl_table_t* p_table, const uint8_t* mac, const char* vlan, unsigned int port, enum arl_entry_type type); void tapi_arl_print_table(const arl_table_t* p_table); // macros #define DEFAULT_VLAN_NAME
Detailed Documentation
Typedefs
typedef enum arl_entry_type arl_entry_type
Types of ARL entries
typedef struct arl_entry_t arl_entry_t
ARL table entry structure
Global Functions
typedef TAILQ_HEAD(arl_table_t, arl_entry_t)
ARL table head
static void tapi_mac_next(uint8_t* mac)
Update MAC address to sequntially next.
Parameters:
mac |
|
static bool tapi_mac_is_broadcast(const uint8_t* mac)
Is MAC address broadcast?
c true broadcast c false not broadcast
Parameters:
mac |
static bool tapi_mac_is_multicast(const uint8_t* mac)
Is MAC address multicast?
c true multicast c false not multicast
Parameters:
mac |
int tapi_cfg_arl_get_table(const char* ta, bool sync, arl_table_t* p_table)
Get ARL table from TA.
Parameters:
ta |
|
sync |
|
p_table |
|
Returns:
Status code.
int tapi_cfg_arl_del_entry(const char* ta, arl_entry_type type, unsigned int port_num, const uint8_t* mac_addr, const char* vlan_name)
Delete an ARL entry from ARL table
Parameters:
ta |
|
type |
|
port_num |
|
mac_addr |
|
vlan_name |
|
Returns:
Status of the operation
int tapi_cfg_arl_add_entry(const char* ta, arl_entry_type type, unsigned int port_num, const uint8_t* mac_addr, const char* vlan_name)
Add a new ARL entry in ARL table
Parameters:
ta |
|
type |
|
port_num |
|
mac_addr |
|
vlan_name |
|
Returns:
Status of the operation
int tapi_cfg_arl_get_entry(const char* oid, arl_entry_t* p)
Get ARL table entry from TA.
Parameters:
oid |
|
p |
|
Returns:
Status code.
void tapi_arl_free_entry(arl_entry_t* p)
Free resources allocated inside ARL entry. DO NOT free memory used by ARL entry itself.
Parameters:
p |
|
void tapi_arl_free_table(arl_table_t* p_table)
Free resources allocated for ARL table. DO NOT free memory used by ARL table head.
Parameters:
p_table |
|
arl_entry_t* tapi_arl_find(const arl_table_t* p_table, const uint8_t* mac, const char* vlan, unsigned int port, enum arl_entry_type type)
Find ARL entry with specified fields.
Parameters:
p_table |
|
mac |
|
vlan |
|
port |
|
type |
|
Returns:
Pointer to ARL entry or NULL
void tapi_arl_print_table(const arl_table_t* p_table)
Dump the content of ARL table into log file.
Parameters:
p_table |
|
Macros
#define DEFAULT_VLAN_NAME
Default VLAN name used on the Switch