rtnetlink.c (d819524d3144f4703f45f473fdc85ad7579ae94c) rtnetlink.c (a4abfa627c3865c37e036bccb681619a50d3d93c)
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * INET An implementation of the TCP/IP protocol suite for the LINUX
4 * operating system. INET is implemented using the BSD Socket
5 * interface as the means of communication with the user level.
6 *
7 * Routing netlink socket interface: protocol independent part.
8 *

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

861 if ((operstate == IF_OPER_DORMANT ||
862 operstate == IF_OPER_TESTING ||
863 operstate == IF_OPER_UNKNOWN) &&
864 !netif_dormant(dev) && !netif_testing(dev))
865 operstate = IF_OPER_UP;
866 break;
867
868 case IF_OPER_TESTING:
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * INET An implementation of the TCP/IP protocol suite for the LINUX
4 * operating system. INET is implemented using the BSD Socket
5 * interface as the means of communication with the user level.
6 *
7 * Routing netlink socket interface: protocol independent part.
8 *

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

861 if ((operstate == IF_OPER_DORMANT ||
862 operstate == IF_OPER_TESTING ||
863 operstate == IF_OPER_UNKNOWN) &&
864 !netif_dormant(dev) && !netif_testing(dev))
865 operstate = IF_OPER_UP;
866 break;
867
868 case IF_OPER_TESTING:
869 if (operstate == IF_OPER_UP ||
870 operstate == IF_OPER_UNKNOWN)
869 if (netif_oper_up(dev))
871 operstate = IF_OPER_TESTING;
872 break;
873
874 case IF_OPER_DORMANT:
870 operstate = IF_OPER_TESTING;
871 break;
872
873 case IF_OPER_DORMANT:
875 if (operstate == IF_OPER_UP ||
876 operstate == IF_OPER_UNKNOWN)
874 if (netif_oper_up(dev))
877 operstate = IF_OPER_DORMANT;
878 break;
879 }
880
881 if (dev->operstate != operstate) {
882 write_lock(&dev_base_lock);
883 dev->operstate = operstate;
884 write_unlock(&dev_base_lock);

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

1054 + nla_total_size(MAX_ADDR_LEN) /* IFLA_BROADCAST */
1055 + nla_total_size(4) /* IFLA_TXQLEN */
1056 + nla_total_size(4) /* IFLA_WEIGHT */
1057 + nla_total_size(4) /* IFLA_MTU */
1058 + nla_total_size(4) /* IFLA_LINK */
1059 + nla_total_size(4) /* IFLA_MASTER */
1060 + nla_total_size(1) /* IFLA_CARRIER */
1061 + nla_total_size(4) /* IFLA_PROMISCUITY */
875 operstate = IF_OPER_DORMANT;
876 break;
877 }
878
879 if (dev->operstate != operstate) {
880 write_lock(&dev_base_lock);
881 dev->operstate = operstate;
882 write_unlock(&dev_base_lock);

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

1052 + nla_total_size(MAX_ADDR_LEN) /* IFLA_BROADCAST */
1053 + nla_total_size(4) /* IFLA_TXQLEN */
1054 + nla_total_size(4) /* IFLA_WEIGHT */
1055 + nla_total_size(4) /* IFLA_MTU */
1056 + nla_total_size(4) /* IFLA_LINK */
1057 + nla_total_size(4) /* IFLA_MASTER */
1058 + nla_total_size(1) /* IFLA_CARRIER */
1059 + nla_total_size(4) /* IFLA_PROMISCUITY */
1060 + nla_total_size(4) /* IFLA_ALLMULTI */
1062 + nla_total_size(4) /* IFLA_NUM_TX_QUEUES */
1063 + nla_total_size(4) /* IFLA_NUM_RX_QUEUES */
1064 + nla_total_size(4) /* IFLA_GSO_MAX_SEGS */
1065 + nla_total_size(4) /* IFLA_GSO_MAX_SIZE */
1066 + nla_total_size(4) /* IFLA_GRO_MAX_SIZE */
1067 + nla_total_size(4) /* IFLA_TSO_MAX_SIZE */
1068 + nla_total_size(4) /* IFLA_TSO_MAX_SEGS */
1069 + nla_total_size(1) /* IFLA_OPERSTATE */

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

1762 nla_put_u8(skb, IFLA_OPERSTATE,
1763 netif_running(dev) ? dev->operstate : IF_OPER_DOWN) ||
1764 nla_put_u8(skb, IFLA_LINKMODE, dev->link_mode) ||
1765 nla_put_u32(skb, IFLA_MTU, dev->mtu) ||
1766 nla_put_u32(skb, IFLA_MIN_MTU, dev->min_mtu) ||
1767 nla_put_u32(skb, IFLA_MAX_MTU, dev->max_mtu) ||
1768 nla_put_u32(skb, IFLA_GROUP, dev->group) ||
1769 nla_put_u32(skb, IFLA_PROMISCUITY, dev->promiscuity) ||
1061 + nla_total_size(4) /* IFLA_NUM_TX_QUEUES */
1062 + nla_total_size(4) /* IFLA_NUM_RX_QUEUES */
1063 + nla_total_size(4) /* IFLA_GSO_MAX_SEGS */
1064 + nla_total_size(4) /* IFLA_GSO_MAX_SIZE */
1065 + nla_total_size(4) /* IFLA_GRO_MAX_SIZE */
1066 + nla_total_size(4) /* IFLA_TSO_MAX_SIZE */
1067 + nla_total_size(4) /* IFLA_TSO_MAX_SEGS */
1068 + nla_total_size(1) /* IFLA_OPERSTATE */

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

1761 nla_put_u8(skb, IFLA_OPERSTATE,
1762 netif_running(dev) ? dev->operstate : IF_OPER_DOWN) ||
1763 nla_put_u8(skb, IFLA_LINKMODE, dev->link_mode) ||
1764 nla_put_u32(skb, IFLA_MTU, dev->mtu) ||
1765 nla_put_u32(skb, IFLA_MIN_MTU, dev->min_mtu) ||
1766 nla_put_u32(skb, IFLA_MAX_MTU, dev->max_mtu) ||
1767 nla_put_u32(skb, IFLA_GROUP, dev->group) ||
1768 nla_put_u32(skb, IFLA_PROMISCUITY, dev->promiscuity) ||
1769 nla_put_u32(skb, IFLA_ALLMULTI, dev->allmulti) ||
1770 nla_put_u32(skb, IFLA_NUM_TX_QUEUES, dev->num_tx_queues) ||
1771 nla_put_u32(skb, IFLA_GSO_MAX_SEGS, dev->gso_max_segs) ||
1772 nla_put_u32(skb, IFLA_GSO_MAX_SIZE, dev->gso_max_size) ||
1773 nla_put_u32(skb, IFLA_GRO_MAX_SIZE, dev->gro_max_size) ||
1774 nla_put_u32(skb, IFLA_TSO_MAX_SIZE, dev->tso_max_size) ||
1775 nla_put_u32(skb, IFLA_TSO_MAX_SEGS, dev->tso_max_segs) ||
1776#ifdef CONFIG_RPS
1777 nla_put_u32(skb, IFLA_NUM_RX_QUEUES, dev->num_rx_queues) ||

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

1923 .len = ALTIFNAMSIZ - 1 },
1924 [IFLA_PERM_ADDRESS] = { .type = NLA_REJECT },
1925 [IFLA_PROTO_DOWN_REASON] = { .type = NLA_NESTED },
1926 [IFLA_NEW_IFINDEX] = NLA_POLICY_MIN(NLA_S32, 1),
1927 [IFLA_PARENT_DEV_NAME] = { .type = NLA_NUL_STRING },
1928 [IFLA_GRO_MAX_SIZE] = { .type = NLA_U32 },
1929 [IFLA_TSO_MAX_SIZE] = { .type = NLA_REJECT },
1930 [IFLA_TSO_MAX_SEGS] = { .type = NLA_REJECT },
1770 nla_put_u32(skb, IFLA_NUM_TX_QUEUES, dev->num_tx_queues) ||
1771 nla_put_u32(skb, IFLA_GSO_MAX_SEGS, dev->gso_max_segs) ||
1772 nla_put_u32(skb, IFLA_GSO_MAX_SIZE, dev->gso_max_size) ||
1773 nla_put_u32(skb, IFLA_GRO_MAX_SIZE, dev->gro_max_size) ||
1774 nla_put_u32(skb, IFLA_TSO_MAX_SIZE, dev->tso_max_size) ||
1775 nla_put_u32(skb, IFLA_TSO_MAX_SEGS, dev->tso_max_segs) ||
1776#ifdef CONFIG_RPS
1777 nla_put_u32(skb, IFLA_NUM_RX_QUEUES, dev->num_rx_queues) ||

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

1923 .len = ALTIFNAMSIZ - 1 },
1924 [IFLA_PERM_ADDRESS] = { .type = NLA_REJECT },
1925 [IFLA_PROTO_DOWN_REASON] = { .type = NLA_NESTED },
1926 [IFLA_NEW_IFINDEX] = NLA_POLICY_MIN(NLA_S32, 1),
1927 [IFLA_PARENT_DEV_NAME] = { .type = NLA_NUL_STRING },
1928 [IFLA_GRO_MAX_SIZE] = { .type = NLA_U32 },
1929 [IFLA_TSO_MAX_SIZE] = { .type = NLA_REJECT },
1930 [IFLA_TSO_MAX_SEGS] = { .type = NLA_REJECT },
1931 [IFLA_ALLMULTI] = { .type = NLA_REJECT },
1931};
1932
1933static const struct nla_policy ifla_info_policy[IFLA_INFO_MAX+1] = {
1934 [IFLA_INFO_KIND] = { .type = NLA_STRING },
1935 [IFLA_INFO_DATA] = { .type = NLA_NESTED },
1936 [IFLA_INFO_SLAVE_KIND] = { .type = NLA_STRING },
1937 [IFLA_INFO_SLAVE_DATA] = { .type = NLA_NESTED },
1938};

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

2771 status |= DO_SETLINK_NOTIFY;
2772 }
2773
2774 if (tb[IFLA_BROADCAST]) {
2775 nla_memcpy(dev->broadcast, tb[IFLA_BROADCAST], dev->addr_len);
2776 call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
2777 }
2778
1932};
1933
1934static const struct nla_policy ifla_info_policy[IFLA_INFO_MAX+1] = {
1935 [IFLA_INFO_KIND] = { .type = NLA_STRING },
1936 [IFLA_INFO_DATA] = { .type = NLA_NESTED },
1937 [IFLA_INFO_SLAVE_KIND] = { .type = NLA_STRING },
1938 [IFLA_INFO_SLAVE_DATA] = { .type = NLA_NESTED },
1939};

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

2772 status |= DO_SETLINK_NOTIFY;
2773 }
2774
2775 if (tb[IFLA_BROADCAST]) {
2776 nla_memcpy(dev->broadcast, tb[IFLA_BROADCAST], dev->addr_len);
2777 call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
2778 }
2779
2779 if (ifm->ifi_flags || ifm->ifi_change) {
2780 err = dev_change_flags(dev, rtnl_dev_combine_flags(dev, ifm),
2781 extack);
2782 if (err < 0)
2783 goto errout;
2784 }
2785
2786 if (tb[IFLA_MASTER]) {
2787 err = do_set_master(dev, nla_get_u32(tb[IFLA_MASTER]), extack);
2788 if (err)
2789 goto errout;
2790 status |= DO_SETLINK_MODIFIED;
2791 }
2792
2780 if (tb[IFLA_MASTER]) {
2781 err = do_set_master(dev, nla_get_u32(tb[IFLA_MASTER]), extack);
2782 if (err)
2783 goto errout;
2784 status |= DO_SETLINK_MODIFIED;
2785 }
2786
2787 if (ifm->ifi_flags || ifm->ifi_change) {
2788 err = dev_change_flags(dev, rtnl_dev_combine_flags(dev, ifm),
2789 extack);
2790 if (err < 0)
2791 goto errout;
2792 }
2793
2793 if (tb[IFLA_CARRIER]) {
2794 err = dev_change_carrier(dev, nla_get_u8(tb[IFLA_CARRIER]));
2795 if (err)
2796 goto errout;
2797 status |= DO_SETLINK_MODIFIED;
2798 }
2799
2800 if (tb[IFLA_TXQLEN]) {

--- 3416 unchanged lines hidden ---
2794 if (tb[IFLA_CARRIER]) {
2795 err = dev_change_carrier(dev, nla_get_u8(tb[IFLA_CARRIER]));
2796 if (err)
2797 goto errout;
2798 status |= DO_SETLINK_MODIFIED;
2799 }
2800
2801 if (tb[IFLA_TXQLEN]) {

--- 3416 unchanged lines hidden ---