From: Lei Xia Date: Thu, 3 Nov 2011 19:36:52 +0000 (-0500) Subject: Merge branch 'devel' of palacios@newskysaw.cs.northwestern.edu:/home/palacios/palacio... X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=commitdiff_plain;h=75abd4cc919245e4cd3ab76f134a6aa5c87bfa3c;hp=21e93d7fc021590c20ab5fecef03374e008d15e9 Merge branch 'devel' of palacios@newskysaw.cs.northwestern.edu:/home/palacios/palacios into devel --- diff --git a/linux_module/iface-packet.c b/linux_module/iface-packet.c index c03d628..f3562b0 100644 --- a/linux_module/iface-packet.c +++ b/linux_module/iface-packet.c @@ -95,7 +95,7 @@ static int init_socket(struct raw_interface * iface, const char * eth_dev){ int err; struct sockaddr_ll sock_addr; - struct ifreq if_req; + struct net_device * net_dev; err = sock_create(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL), &(iface->raw_sock)); if (err < 0) { @@ -103,14 +103,9 @@ init_socket(struct raw_interface * iface, const char * eth_dev){ return -1; } - memset(&if_req, 0, sizeof(if_req)); - strncpy(if_req.ifr_name, eth_dev, sizeof(if_req.ifr_name)); - - err = iface->raw_sock->ops->ioctl(iface->raw_sock, SIOCGIFINDEX, (long)&if_req); - if (err < 0){ - printk(KERN_WARNING "Palacios Packet: Unable to get index for device %s, error %d\n", - if_req.ifr_name, err); - + net_dev = dev_get_by_name(&init_net, eth_dev); + if(net_dev == NULL) { + printk(KERN_WARNING "Palacios Packet: Unable to get index for device %s\n", eth_dev); sock_release(iface->raw_sock); return -1; } @@ -118,7 +113,7 @@ init_socket(struct raw_interface * iface, const char * eth_dev){ memset(&sock_addr, 0, sizeof(sock_addr)); sock_addr.sll_family = PF_PACKET; sock_addr.sll_protocol = htons(ETH_P_ALL); - sock_addr.sll_ifindex = if_req.ifr_ifindex; + sock_addr.sll_ifindex = net_dev->ifindex; err = iface->raw_sock->ops->bind(iface->raw_sock, (struct sockaddr *)&sock_addr, @@ -132,7 +127,7 @@ init_socket(struct raw_interface * iface, const char * eth_dev){ } printk(KERN_INFO "Bind a palacios raw packet interface to device %s, device index %d\n", - if_req.ifr_name, if_req.ifr_ifindex); + eth_dev, net_dev->ifindex); return 0; } diff --git a/palacios/src/devices/ne2k.c b/palacios/src/devices/ne2k.c index bc51c78..d4e8852 100644 --- a/palacios/src/devices/ne2k.c +++ b/palacios/src/devices/ne2k.c @@ -1175,8 +1175,9 @@ static int connect_fn(struct v3_vm_info * info, nic_state->backend_data = private_data; ops->recv = ne2k_rx; - ops->poll = NULL; - memcpy(ops->config.fnt_mac, nic_state->mac, ETH_ALEN); + ops->poll = NULL; + ops->config.frontend_data = nic_state; + ops->config.fnt_mac = nic_state->mac; return 0; } diff --git a/palacios/src/devices/rtl8139.c b/palacios/src/devices/rtl8139.c index 0a1a335..176d053 100644 --- a/palacios/src/devices/rtl8139.c +++ b/palacios/src/devices/rtl8139.c @@ -1774,7 +1774,8 @@ static int connect_fn(struct v3_vm_info * info, ops->recv = rtl8139_rx; ops->poll = NULL; - memcpy(ops->config.fnt_mac, nic_state->mac, ETH_ALEN); + ops->config.frontend_data = nic_state; + ops->config.fnt_mac = nic_state->mac; return 0; }