X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=datapath%2Fvport-internal_dev.c;h=4dc2eb479d7024586f9d85538ace6a48e119d6f0;hb=96628ae85fe26ac86d35bca5f4c288e56048c3d6;hp=46b78d226d20d5729b05b7a3bb1fda91c2f26d4d;hpb=2a4999f3f33467f4fa22ed6e5b06350615fb2dac;p=openvswitch diff --git a/datapath/vport-internal_dev.c b/datapath/vport-internal_dev.c index 46b78d22..4dc2eb47 100644 --- a/datapath/vport-internal_dev.c +++ b/datapath/vport-internal_dev.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007-2012 Nicira Networks. + * Copyright (c) 2007-2012 Nicira, Inc. * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public @@ -25,6 +25,9 @@ #include #include +#include +#include + #include "checksum.h" #include "datapath.h" #include "vlan.h" @@ -87,6 +90,9 @@ static int internal_dev_mac_addr(struct net_device *dev, void *p) if (!is_valid_ether_addr(addr->sa_data)) return -EADDRNOTAVAIL; +#ifdef NET_ADDR_RANDOM + dev->addr_assign_type &= ~NET_ADDR_RANDOM; +#endif memcpy(dev->dev_addr, addr->sa_data, dev->addr_len); return 0; } @@ -213,7 +219,7 @@ static void do_setup(struct net_device *netdev) #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39) netdev->hw_features = netdev->features & ~NETIF_F_LLTX; #endif - random_ether_addr(netdev->dev_addr); + eth_hw_addr_random(netdev); } static struct vport *internal_dev_create(const struct vport_parms *parms) @@ -286,6 +292,11 @@ static int internal_dev_recv(struct vport *vport, struct sk_buff *skb) #endif len = skb->len; + + skb_dst_drop(skb); + nf_reset(skb); + secpath_reset(skb); + skb->dev = netdev; skb->pkt_type = PACKET_HOST; skb->protocol = eth_type_trans(skb, netdev);