rtnetlink.c (a399a8053164ec8bcb06fed52be9941a26ecde11) rtnetlink.c (9c7dafbfab1554705f85523fead578aa1a3d338c)
1/*
2 * INET An implementation of the TCP/IP protocol suite for the LINUX
3 * operating system. INET is implemented using the BSD Socket
4 * interface as the means of communication with the user level.
5 *
6 * Routing netlink socket interface: protocol independent part.
7 *
8 * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>

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

1807 if (!(nlh->nlmsg_flags & NLM_F_CREATE)) {
1808 if (ifm->ifi_index == 0 && tb[IFLA_GROUP])
1809 return rtnl_group_changelink(net,
1810 nla_get_u32(tb[IFLA_GROUP]),
1811 ifm, tb);
1812 return -ENODEV;
1813 }
1814
1/*
2 * INET An implementation of the TCP/IP protocol suite for the LINUX
3 * operating system. INET is implemented using the BSD Socket
4 * interface as the means of communication with the user level.
5 *
6 * Routing netlink socket interface: protocol independent part.
7 *
8 * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>

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

1807 if (!(nlh->nlmsg_flags & NLM_F_CREATE)) {
1808 if (ifm->ifi_index == 0 && tb[IFLA_GROUP])
1809 return rtnl_group_changelink(net,
1810 nla_get_u32(tb[IFLA_GROUP]),
1811 ifm, tb);
1812 return -ENODEV;
1813 }
1814
1815 if (ifm->ifi_index)
1816 return -EOPNOTSUPP;
1817 if (tb[IFLA_MAP] || tb[IFLA_MASTER] || tb[IFLA_PROTINFO])
1818 return -EOPNOTSUPP;
1819
1820 if (!ops) {
1821#ifdef CONFIG_MODULES
1822 if (kind[0]) {
1823 __rtnl_unlock();
1824 request_module("rtnl-link-%s", kind);

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

1834 if (!ifname[0])
1835 snprintf(ifname, IFNAMSIZ, "%s%%d", ops->kind);
1836
1837 dest_net = rtnl_link_get_net(net, tb);
1838 if (IS_ERR(dest_net))
1839 return PTR_ERR(dest_net);
1840
1841 dev = rtnl_create_link(net, dest_net, ifname, ops, tb);
1815 if (tb[IFLA_MAP] || tb[IFLA_MASTER] || tb[IFLA_PROTINFO])
1816 return -EOPNOTSUPP;
1817
1818 if (!ops) {
1819#ifdef CONFIG_MODULES
1820 if (kind[0]) {
1821 __rtnl_unlock();
1822 request_module("rtnl-link-%s", kind);

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

1832 if (!ifname[0])
1833 snprintf(ifname, IFNAMSIZ, "%s%%d", ops->kind);
1834
1835 dest_net = rtnl_link_get_net(net, tb);
1836 if (IS_ERR(dest_net))
1837 return PTR_ERR(dest_net);
1838
1839 dev = rtnl_create_link(net, dest_net, ifname, ops, tb);
1842
1843 if (IS_ERR(dev))
1840 if (IS_ERR(dev)) {
1844 err = PTR_ERR(dev);
1841 err = PTR_ERR(dev);
1845 else if (ops->newlink)
1842 goto out;
1843 }
1844
1845 dev->ifindex = ifm->ifi_index;
1846
1847 if (ops->newlink)
1846 err = ops->newlink(net, dev, tb, data);
1847 else
1848 err = register_netdevice(dev);
1849
1850 if (err < 0 && !IS_ERR(dev))
1851 free_netdev(dev);
1852 if (err < 0)
1853 goto out;

--- 580 unchanged lines hidden ---
1848 err = ops->newlink(net, dev, tb, data);
1849 else
1850 err = register_netdevice(dev);
1851
1852 if (err < 0 && !IS_ERR(dev))
1853 free_netdev(dev);
1854 if (err < 0)
1855 goto out;

--- 580 unchanged lines hidden ---