struct vnet_main_t;
struct vnet_hw_interface_t;
struct vnet_sw_interface_t;
-struct ip46_address_t;
+union ip46_address_t_;
typedef enum
{
#define VNET_SW_INTERFACE_ADMIN_UP_DOWN_FUNCTION_PRIO(f,p) \
_VNET_INTERFACE_FUNCTION_DECL_PRIO(f,sw_interface_admin_up_down, p)
+/**
+ * Tunnel description parameters
+ */
+typedef int (*vnet_dev_class_ip_tunnel_desc_t) (u32 sw_if_index,
+ union ip46_address_t_ * src,
+ union ip46_address_t_ * dst,
+ u8 * is_l2);
+
/* A class of hardware interface devices. */
typedef struct _vnet_device_class
{
/* Format flow offload entry */
format_function_t *format_flow;
+ vnet_dev_class_ip_tunnel_desc_t ip_tun_desc;
+
/* Function to clear hardware counters for device. */
void (*clear_counters) (u32 dev_class_instance);
} \
uword CLIB_CPU_OPTIMIZED CLIB_MARCH_SFX (devclass##_tx_fn)
-/* FIXME to be removed */
-#define VLIB_DEVICE_TX_FUNCTION_MULTIARCH(dev, fn)
-
/**
* Link Type: A description of the protocol of packets on the link.
* On an ethernet link this maps directly into the ethertype. On a GRE tunnel
/* device input device_and_queue runtime index */
uword *dq_runtime_index_by_queue;
+ /* numa node that hardware device connects to */
+ u8 numa_node;
+
+ u8 padding[3];
} vnet_hw_interface_t;
extern vnet_device_class_t vnet_local_interface_device_class;
/* Interface is disabled for forwarding: punt all traffic to slow-path. */
VNET_SW_INTERFACE_FLAG_PUNT = (1 << 1),
- VNET_SW_INTERFACE_FLAG_PROXY_ARP = (1 << 2),
+ __VNET_SW_INTERFACE_FLAG_UNSUED = (1 << 2),
VNET_SW_INTERFACE_FLAG_UNNUMBERED = (1 << 3),
_(RX_MULTICAST, rx-multicast, if) \
_(RX_BROADCAST, rx-broadcast, if) \
_(TX, tx, if) \
- _(TX_UNICAST, tx-unicast-miss, if) \
+ _(TX_UNICAST, tx-unicast, if) \
_(TX_MULTICAST, tx-multicast, if) \
_(TX_BROADCAST, tx-broadcast, if)