static void inline
deinit_raw_interface(struct raw_interface * iface){
- struct v3_packet * recver_state;
+ struct v3_packet * recver_state, * tmp_state;
kthread_stop(iface->recv_thread);
sock_release(iface->raw_sock);
palacios_free_htable(iface->mac_to_recver, 0, 0);
- list_for_each_entry(recver_state, &(iface->brdcast_recvers), node) {
+ list_for_each_entry_safe(recver_state, tmp_state, &(iface->brdcast_recvers), node) {
kfree(recver_state);
}
}
}
static int packet_deinit( void ) {
- struct raw_interface * iface;
+ struct raw_interface * iface, * tmp;
- list_for_each_entry(iface, &(packet_state.open_interfaces), node) {
+ list_for_each_entry_safe(iface, tmp, &(packet_state.open_interfaces), node) {
deinit_raw_interface(iface);
kfree(iface);
}
}
static void deinit_links_list(void){
- struct vnet_link * link;
+ struct vnet_link * link, * tmp_link;
- list_for_each_entry(link, &(vnet_brg_s.link_list), node) {
+ list_for_each_entry_safe(link, tmp_link, &(vnet_brg_s.link_list), node) {
_delete_link(link);
}
}
static void deinit_links_list(void){
- struct vnet_link_iter * link;
+ struct vnet_link_iter * link, * tmp_link;
- list_for_each_entry(link, &(vnet_ctrl_s.link_iter_list), node) {
+ list_for_each_entry_safe(link, tmp_link, &(vnet_ctrl_s.link_iter_list), node) {
delete_link(link);
}
}
static void deinit_routes_list(void){
- struct vnet_route_iter * route;
+ struct vnet_route_iter * route, * tmp_route;
- list_for_each_entry(route, &(vnet_ctrl_s.route_list), node) {
+ list_for_each_entry_safe(route, tmp_route, &(vnet_ctrl_s.route_list), node) {
delete_route(route);
}
}
struct vnet_dev * dev = NULL;
list_for_each_entry(dev, &(vnet_state.devs), node) {
- int dev_id = dev->dev_id;
-
- if (dev_id == idx)
+ if (dev->dev_id == idx) {
return dev;
+ }
}
return NULL;
/* delete all route entries with specfied src or dst device id */
static void inline del_routes_by_dev(int dev_id){
- struct vnet_route_info * route = NULL;
+ struct vnet_route_info * route, *tmp_route;
unsigned long flags;
flags = vnet_lock_irqsave(vnet_state.lock);
- list_for_each_entry(route, &(vnet_state.routes), node) {
+ list_for_each_entry_safe(route, tmp_route, &(vnet_state.routes), node) {
if((route->route_def.dst_type == LINK_INTERFACE &&
route->route_def.dst_id == dev_id) ||
(route->route_def.src_type == LINK_INTERFACE &&
}
static void deinit_devices_list(){
- struct vnet_dev * dev = NULL;
+ struct vnet_dev * dev, * tmp;
- list_for_each_entry(dev, &(vnet_state.devs), node) {
+ list_for_each_entry_safe(dev, tmp, &(vnet_state.devs), node) {
list_del(&(dev->node));
Vnet_Free(dev);
}
}
static void deinit_routes_list(){
- struct vnet_route_info * route = NULL;
+ struct vnet_route_info * route, * tmp;
- list_for_each_entry(route, &(vnet_state.routes), node) {
+ list_for_each_entry_safe(route, tmp, &(vnet_state.routes), node) {
list_del(&(route->node));
list_del(&(route->match_node));
Vnet_Free(route);