} __attribute__((packed));
-int v3_vnet_send_pkt(struct v3_vnet_pkt * pkt);
+#ifdef CONFIG_VNET_PROFILE
+struct v3_vnet_profile{
+ uint64_t time_copy_from_guest;
+ uint64_t time_route_lookup;
+ uint64_t time_mallocfree;
+ uint64_t time_copy_to_guest;
+ uint64_t total_handle_time;
+ uint64_t memcpy_time;
+
+ uint64_t total_exit_time;
+ bool print;
+
+ uint64_t virtio_handle_start;
+};
+#endif
+
+
+int v3_vnet_send_pkt(struct v3_vnet_pkt * pkt, void *private_data);
int v3_vnet_add_route(struct v3_vnet_route route);
int V3_init_vnet();
-//int v3_vnet_add_bridge(struct v3_vm_info * vm, uint8_t mac[6]);
+int v3_vnet_add_bridge(struct v3_vm_info * vm,
+ int (*input)(struct v3_vm_info * vm, struct v3_vnet_pkt * pkt, void * private_data),
+ void * priv_data);
int v3_vnet_add_dev(struct v3_vm_info *info, uint8_t mac[6],
int (*dev_input)(struct v3_vm_info * vm, struct v3_vnet_pkt * pkt, void * private_data),
void * priv_data);
-// temporary hack
-int v3_vnet_pkt_process();
-
#endif