rtnetlink.c (035d210f928ce083435b4fd351a26d126c02c927) | rtnetlink.c (88d6378bd6c096cb8440face3ae3f33d55a2e6e4) |
---|---|
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> --- 882 unchanged lines hidden (view full) --- 891 + nla_total_size(4) /* IFLA_LINK_NETNSID */ 892 + nla_total_size(ext_filter_mask 893 & RTEXT_FILTER_VF ? 4 : 0) /* IFLA_NUM_VF */ 894 + rtnl_vfinfo_size(dev, ext_filter_mask) /* IFLA_VFINFO_LIST */ 895 + rtnl_port_size(dev, ext_filter_mask) /* IFLA_VF_PORTS + IFLA_PORT_SELF */ 896 + rtnl_link_get_size(dev) /* IFLA_LINKINFO */ 897 + rtnl_link_get_af_size(dev) /* IFLA_AF_SPEC */ 898 + nla_total_size(MAX_PHYS_ITEM_ID_LEN) /* IFLA_PHYS_PORT_ID */ | 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> --- 882 unchanged lines hidden (view full) --- 891 + nla_total_size(4) /* IFLA_LINK_NETNSID */ 892 + nla_total_size(ext_filter_mask 893 & RTEXT_FILTER_VF ? 4 : 0) /* IFLA_NUM_VF */ 894 + rtnl_vfinfo_size(dev, ext_filter_mask) /* IFLA_VFINFO_LIST */ 895 + rtnl_port_size(dev, ext_filter_mask) /* IFLA_VF_PORTS + IFLA_PORT_SELF */ 896 + rtnl_link_get_size(dev) /* IFLA_LINKINFO */ 897 + rtnl_link_get_af_size(dev) /* IFLA_AF_SPEC */ 898 + nla_total_size(MAX_PHYS_ITEM_ID_LEN) /* IFLA_PHYS_PORT_ID */ |
899 + nla_total_size(MAX_PHYS_ITEM_ID_LEN); /* IFLA_PHYS_SWITCH_ID */ | 899 + nla_total_size(MAX_PHYS_ITEM_ID_LEN) /* IFLA_PHYS_SWITCH_ID */ 900 + nla_total_size(1); /* IFLA_PROTO_DOWN */ 901 |
900} 901 902static int rtnl_vf_ports_fill(struct sk_buff *skb, struct net_device *dev) 903{ 904 struct nlattr *vf_ports; 905 struct nlattr *vf_port; 906 int vf; 907 int err; --- 169 unchanged lines hidden (view full) --- 1077 (upper_dev && 1078 nla_put_u32(skb, IFLA_MASTER, upper_dev->ifindex)) || 1079 nla_put_u8(skb, IFLA_CARRIER, netif_carrier_ok(dev)) || 1080 (dev->qdisc && 1081 nla_put_string(skb, IFLA_QDISC, dev->qdisc->ops->id)) || 1082 (dev->ifalias && 1083 nla_put_string(skb, IFLA_IFALIAS, dev->ifalias)) || 1084 nla_put_u32(skb, IFLA_CARRIER_CHANGES, | 902} 903 904static int rtnl_vf_ports_fill(struct sk_buff *skb, struct net_device *dev) 905{ 906 struct nlattr *vf_ports; 907 struct nlattr *vf_port; 908 int vf; 909 int err; --- 169 unchanged lines hidden (view full) --- 1079 (upper_dev && 1080 nla_put_u32(skb, IFLA_MASTER, upper_dev->ifindex)) || 1081 nla_put_u8(skb, IFLA_CARRIER, netif_carrier_ok(dev)) || 1082 (dev->qdisc && 1083 nla_put_string(skb, IFLA_QDISC, dev->qdisc->ops->id)) || 1084 (dev->ifalias && 1085 nla_put_string(skb, IFLA_IFALIAS, dev->ifalias)) || 1086 nla_put_u32(skb, IFLA_CARRIER_CHANGES, |
1085 atomic_read(&dev->carrier_changes))) | 1087 atomic_read(&dev->carrier_changes)) || 1088 nla_put_u8(skb, IFLA_PROTO_DOWN, dev->proto_down)) |
1086 goto nla_put_failure; 1087 1088 if (1) { 1089 struct rtnl_link_ifmap map = { 1090 .mem_start = dev->mem_start, 1091 .mem_end = dev->mem_end, 1092 .base_addr = dev->base_addr, 1093 .irq = dev->irq, --- 220 unchanged lines hidden (view full) --- 1314 [IFLA_EXT_MASK] = { .type = NLA_U32 }, 1315 [IFLA_PROMISCUITY] = { .type = NLA_U32 }, 1316 [IFLA_NUM_TX_QUEUES] = { .type = NLA_U32 }, 1317 [IFLA_NUM_RX_QUEUES] = { .type = NLA_U32 }, 1318 [IFLA_PHYS_PORT_ID] = { .type = NLA_BINARY, .len = MAX_PHYS_ITEM_ID_LEN }, 1319 [IFLA_CARRIER_CHANGES] = { .type = NLA_U32 }, /* ignored */ 1320 [IFLA_PHYS_SWITCH_ID] = { .type = NLA_BINARY, .len = MAX_PHYS_ITEM_ID_LEN }, 1321 [IFLA_LINK_NETNSID] = { .type = NLA_S32 }, | 1089 goto nla_put_failure; 1090 1091 if (1) { 1092 struct rtnl_link_ifmap map = { 1093 .mem_start = dev->mem_start, 1094 .mem_end = dev->mem_end, 1095 .base_addr = dev->base_addr, 1096 .irq = dev->irq, --- 220 unchanged lines hidden (view full) --- 1317 [IFLA_EXT_MASK] = { .type = NLA_U32 }, 1318 [IFLA_PROMISCUITY] = { .type = NLA_U32 }, 1319 [IFLA_NUM_TX_QUEUES] = { .type = NLA_U32 }, 1320 [IFLA_NUM_RX_QUEUES] = { .type = NLA_U32 }, 1321 [IFLA_PHYS_PORT_ID] = { .type = NLA_BINARY, .len = MAX_PHYS_ITEM_ID_LEN }, 1322 [IFLA_CARRIER_CHANGES] = { .type = NLA_U32 }, /* ignored */ 1323 [IFLA_PHYS_SWITCH_ID] = { .type = NLA_BINARY, .len = MAX_PHYS_ITEM_ID_LEN }, 1324 [IFLA_LINK_NETNSID] = { .type = NLA_S32 }, |
1325 [IFLA_PROTO_DOWN] = { .type = NLA_U8 }, |
|
1322}; 1323 1324static const struct nla_policy ifla_info_policy[IFLA_INFO_MAX+1] = { 1325 [IFLA_INFO_KIND] = { .type = NLA_STRING }, 1326 [IFLA_INFO_DATA] = { .type = NLA_NESTED }, 1327 [IFLA_INFO_SLAVE_KIND] = { .type = NLA_STRING }, 1328 [IFLA_INFO_SLAVE_DATA] = { .type = NLA_NESTED }, 1329}; --- 469 unchanged lines hidden (view full) --- 1799 int vf; 1800 int rem; 1801 1802 err = -EOPNOTSUPP; 1803 if (!ops->ndo_set_vf_port) 1804 goto errout; 1805 1806 nla_for_each_nested(attr, tb[IFLA_VF_PORTS], rem) { | 1326}; 1327 1328static const struct nla_policy ifla_info_policy[IFLA_INFO_MAX+1] = { 1329 [IFLA_INFO_KIND] = { .type = NLA_STRING }, 1330 [IFLA_INFO_DATA] = { .type = NLA_NESTED }, 1331 [IFLA_INFO_SLAVE_KIND] = { .type = NLA_STRING }, 1332 [IFLA_INFO_SLAVE_DATA] = { .type = NLA_NESTED }, 1333}; --- 469 unchanged lines hidden (view full) --- 1803 int vf; 1804 int rem; 1805 1806 err = -EOPNOTSUPP; 1807 if (!ops->ndo_set_vf_port) 1808 goto errout; 1809 1810 nla_for_each_nested(attr, tb[IFLA_VF_PORTS], rem) { |
1807 if (nla_type(attr) != IFLA_VF_PORT || 1808 nla_len(attr) < NLA_HDRLEN) { 1809 err = -EINVAL; 1810 goto errout; 1811 } 1812 err = nla_parse_nested(port, IFLA_PORT_MAX, attr, 1813 ifla_port_policy); | 1811 if (nla_type(attr) != IFLA_VF_PORT) 1812 continue; 1813 err = nla_parse_nested(port, IFLA_PORT_MAX, 1814 attr, ifla_port_policy); |
1814 if (err < 0) 1815 goto errout; 1816 if (!port[IFLA_PORT_VF]) { 1817 err = -EOPNOTSUPP; 1818 goto errout; 1819 } 1820 vf = nla_get_u32(port[IFLA_PORT_VF]); 1821 err = ops->ndo_set_vf_port(dev, vf, port); --- 34 unchanged lines hidden (view full) --- 1856 if (err < 0) 1857 goto errout; 1858 1859 status |= DO_SETLINK_NOTIFY; 1860 } 1861 } 1862 err = 0; 1863 | 1815 if (err < 0) 1816 goto errout; 1817 if (!port[IFLA_PORT_VF]) { 1818 err = -EOPNOTSUPP; 1819 goto errout; 1820 } 1821 vf = nla_get_u32(port[IFLA_PORT_VF]); 1822 err = ops->ndo_set_vf_port(dev, vf, port); --- 34 unchanged lines hidden (view full) --- 1857 if (err < 0) 1858 goto errout; 1859 1860 status |= DO_SETLINK_NOTIFY; 1861 } 1862 } 1863 err = 0; 1864 |
1865 if (tb[IFLA_PROTO_DOWN]) { 1866 err = dev_change_proto_down(dev, 1867 nla_get_u8(tb[IFLA_PROTO_DOWN])); 1868 if (err) 1869 goto errout; 1870 status |= DO_SETLINK_NOTIFY; 1871 } 1872 |
|
1864errout: 1865 if (status & DO_SETLINK_MODIFIED) { 1866 if (status & DO_SETLINK_NOTIFY) 1867 netdev_state_change(dev); 1868 1869 if (err < 0) 1870 net_warn_ratelimited("A link change request failed with some changes committed already. Interface %s may have been left with an inconsistent configuration, please check.\n", 1871 dev->name); --- 1543 unchanged lines hidden --- | 1873errout: 1874 if (status & DO_SETLINK_MODIFIED) { 1875 if (status & DO_SETLINK_NOTIFY) 1876 netdev_state_change(dev); 1877 1878 if (err < 0) 1879 net_warn_ratelimited("A link change request failed with some changes committed already. Interface %s may have been left with an inconsistent configuration, please check.\n", 1880 dev->name); --- 1543 unchanged lines hidden --- |