veth.c (237114384ab22c174ec4641e809f8e6cbcfce774) veth.c (f2cedb63df14342ad40a8b5b324fc5d94a60b665)
1/*
2 * drivers/net/veth.c
3 *
4 * Copyright (C) 2007 OpenVZ http://openvz.org, SWsoft Inc
5 *
6 * Author: Pavel Emelianov <xemul@openvz.org>
7 * Ethtool interface from: Eric W. Biederman <ebiederm@xmission.com>
8 *

--- 332 unchanged lines hidden (view full) ---

341
342 peer = rtnl_create_link(src_net, net, ifname, &veth_link_ops, tbp);
343 if (IS_ERR(peer)) {
344 put_net(net);
345 return PTR_ERR(peer);
346 }
347
348 if (tbp[IFLA_ADDRESS] == NULL)
1/*
2 * drivers/net/veth.c
3 *
4 * Copyright (C) 2007 OpenVZ http://openvz.org, SWsoft Inc
5 *
6 * Author: Pavel Emelianov <xemul@openvz.org>
7 * Ethtool interface from: Eric W. Biederman <ebiederm@xmission.com>
8 *

--- 332 unchanged lines hidden (view full) ---

341
342 peer = rtnl_create_link(src_net, net, ifname, &veth_link_ops, tbp);
343 if (IS_ERR(peer)) {
344 put_net(net);
345 return PTR_ERR(peer);
346 }
347
348 if (tbp[IFLA_ADDRESS] == NULL)
349 random_ether_addr(peer->dev_addr);
349 eth_hw_addr_random(peer);
350
351 err = register_netdevice(peer);
352 put_net(net);
353 net = NULL;
354 if (err < 0)
355 goto err_register_peer;
356
357 netif_carrier_off(peer);

--- 5 unchanged lines hidden (view full) ---

363 /*
364 * register dev last
365 *
366 * note, that since we've registered new device the dev's name
367 * should be re-allocated
368 */
369
370 if (tb[IFLA_ADDRESS] == NULL)
350
351 err = register_netdevice(peer);
352 put_net(net);
353 net = NULL;
354 if (err < 0)
355 goto err_register_peer;
356
357 netif_carrier_off(peer);

--- 5 unchanged lines hidden (view full) ---

363 /*
364 * register dev last
365 *
366 * note, that since we've registered new device the dev's name
367 * should be re-allocated
368 */
369
370 if (tb[IFLA_ADDRESS] == NULL)
371 random_ether_addr(dev->dev_addr);
371 eth_hw_addr_random(dev);
372
373 if (tb[IFLA_IFNAME])
374 nla_strlcpy(dev->name, tb[IFLA_IFNAME], IFNAMSIZ);
375 else
376 snprintf(dev->name, IFNAMSIZ, DRV_NAME "%%d");
377
378 if (strchr(dev->name, '%')) {
379 err = dev_alloc_name(dev, dev->name);

--- 37 unchanged lines hidden (view full) ---

417
418 priv = netdev_priv(dev);
419 peer = priv->peer;
420
421 unregister_netdevice_queue(dev, head);
422 unregister_netdevice_queue(peer, head);
423}
424
372
373 if (tb[IFLA_IFNAME])
374 nla_strlcpy(dev->name, tb[IFLA_IFNAME], IFNAMSIZ);
375 else
376 snprintf(dev->name, IFNAMSIZ, DRV_NAME "%%d");
377
378 if (strchr(dev->name, '%')) {
379 err = dev_alloc_name(dev, dev->name);

--- 37 unchanged lines hidden (view full) ---

417
418 priv = netdev_priv(dev);
419 peer = priv->peer;
420
421 unregister_netdevice_queue(dev, head);
422 unregister_netdevice_queue(peer, head);
423}
424
425static const struct nla_policy veth_policy[VETH_INFO_MAX + 1] = {
426 [VETH_INFO_PEER] = { .len = sizeof(struct ifinfomsg) },
427};
425static const struct nla_policy veth_policy[VETH_INFO_MAX + 1];
428
429static struct rtnl_link_ops veth_link_ops = {
430 .kind = DRV_NAME,
431 .priv_size = sizeof(struct veth_priv),
432 .setup = veth_setup,
433 .validate = veth_validate,
434 .newlink = veth_newlink,
435 .dellink = veth_dellink,

--- 24 unchanged lines hidden ---
426
427static struct rtnl_link_ops veth_link_ops = {
428 .kind = DRV_NAME,
429 .priv_size = sizeof(struct veth_priv),
430 .setup = veth_setup,
431 .validate = veth_validate,
432 .newlink = veth_newlink,
433 .dellink = veth_dellink,

--- 24 unchanged lines hidden ---