#include <vnet/vnet.h>
#include <vnet/ip/ip.h>
#include <vnet/ethernet/ethernet.h>
+//#include <vnet/ethernet/arp.h>
#include <vlib/counter.h>
#include <vppinfra/hash.h>
#include <vppinfra/time_range.h>
#include <vppinfra/bihash_8_8.h>
-#define MACTIME_RANGE_TYPE_DROP 0
-#define MACTIME_RANGE_TYPE_ALLOW 1
-
-typedef struct
-{
- u8 *device_name;
- u8 mac_address[6];
- u32 flags;
- clib_timebase_range_t *ranges;
-} mactime_device_t;
-
-/** Always drop packets from this device */
-#define MACTIME_DEVICE_FLAG_STATIC_DROP (1<<0)
-#define MACTIME_DEVICE_FLAG_STATIC_ALLOW (1<<1)
-#define MACTIME_DEVICE_FLAG_DYNAMIC_DROP (1<<2)
-#define MACTIME_DEVICE_FLAG_DYNAMIC_ALLOW (1<<3)
+#include <mactime/mactime_device.h>
typedef struct
{
/* Device table */
mactime_device_t *devices;
+ u32 device_table_epoch;
/* Counters */
- vlib_simple_counter_main_t allow_counters;
- vlib_simple_counter_main_t drop_counters;
+ vlib_combined_counter_main_t allow_counters;
+ vlib_combined_counter_main_t drop_counters;
/* config parameters */
u32 lookup_table_num_buckets;
/* Once-only data structure create flag */
int feature_initialized;
+ /* arp cache copy, for "show mactime" */
+ index_t *arp_cache_copy;
+
/* convenience */
vlib_main_t *vlib_main;
vnet_main_t *vnet_main;
extern mactime_main_t mactime_main;
extern vlib_node_registration_t mactime_node;
+extern vlib_node_registration_t mactime_tx_node;
+
+void mactime_send_create_entry_message (u8 * mac_address);
+void mactime_url_init (vlib_main_t * vm);
/* Periodic function events */
#define MACTIME_EVENT1 1