vlan_netlink.c (fe705ab1526bc2c8b7756f3a855f040ab2060af2) | vlan_netlink.c (5e7565930524410f097f5b04f8aba663089a6ffc) |
---|---|
1/* 2 * VLAN netlink control interface 3 * 4 * Copyright (c) 2007 Patrick McHardy <kaber@trash.net> 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * version 2 as published by the Free Software Foundation. --- 46 unchanged lines hidden (view full) --- 55 if (data[IFLA_VLAN_ID]) { 56 id = nla_get_u16(data[IFLA_VLAN_ID]); 57 if (id >= VLAN_VID_MASK) 58 return -ERANGE; 59 } 60 if (data[IFLA_VLAN_FLAGS]) { 61 flags = nla_data(data[IFLA_VLAN_FLAGS]); 62 if ((flags->flags & flags->mask) & | 1/* 2 * VLAN netlink control interface 3 * 4 * Copyright (c) 2007 Patrick McHardy <kaber@trash.net> 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * version 2 as published by the Free Software Foundation. --- 46 unchanged lines hidden (view full) --- 55 if (data[IFLA_VLAN_ID]) { 56 id = nla_get_u16(data[IFLA_VLAN_ID]); 57 if (id >= VLAN_VID_MASK) 58 return -ERANGE; 59 } 60 if (data[IFLA_VLAN_FLAGS]) { 61 flags = nla_data(data[IFLA_VLAN_FLAGS]); 62 if ((flags->flags & flags->mask) & |
63 ~(VLAN_FLAG_REORDER_HDR | VLAN_FLAG_GVRP)) | 63 ~(VLAN_FLAG_REORDER_HDR | VLAN_FLAG_GVRP | 64 VLAN_FLAG_LOOSE_BINDING)) |
64 return -EINVAL; 65 } 66 67 err = vlan_validate_qos_map(data[IFLA_VLAN_INGRESS_QOS]); 68 if (err < 0) 69 return err; 70 err = vlan_validate_qos_map(data[IFLA_VLAN_EGRESS_QOS]); 71 if (err < 0) --- 42 unchanged lines hidden (view full) --- 114 if (!real_dev) 115 return -ENODEV; 116 117 *num_tx_queues = real_dev->num_tx_queues; 118 *real_num_tx_queues = real_dev->real_num_tx_queues; 119 return 0; 120} 121 | 65 return -EINVAL; 66 } 67 68 err = vlan_validate_qos_map(data[IFLA_VLAN_INGRESS_QOS]); 69 if (err < 0) 70 return err; 71 err = vlan_validate_qos_map(data[IFLA_VLAN_EGRESS_QOS]); 72 if (err < 0) --- 42 unchanged lines hidden (view full) --- 115 if (!real_dev) 116 return -ENODEV; 117 118 *num_tx_queues = real_dev->num_tx_queues; 119 *real_num_tx_queues = real_dev->real_num_tx_queues; 120 return 0; 121} 122 |
122static int vlan_newlink(struct net_device *dev, | 123static int vlan_newlink(struct net *src_net, struct net_device *dev, |
123 struct nlattr *tb[], struct nlattr *data[]) 124{ 125 struct vlan_dev_info *vlan = vlan_dev_info(dev); 126 struct net_device *real_dev; 127 int err; 128 129 if (!data[IFLA_VLAN_ID]) 130 return -EINVAL; 131 132 if (!tb[IFLA_LINK]) 133 return -EINVAL; | 124 struct nlattr *tb[], struct nlattr *data[]) 125{ 126 struct vlan_dev_info *vlan = vlan_dev_info(dev); 127 struct net_device *real_dev; 128 int err; 129 130 if (!data[IFLA_VLAN_ID]) 131 return -EINVAL; 132 133 if (!tb[IFLA_LINK]) 134 return -EINVAL; |
134 real_dev = __dev_get_by_index(dev_net(dev), nla_get_u32(tb[IFLA_LINK])); | 135 real_dev = __dev_get_by_index(src_net, nla_get_u32(tb[IFLA_LINK])); |
135 if (!real_dev) 136 return -ENODEV; 137 138 vlan->vlan_id = nla_get_u16(data[IFLA_VLAN_ID]); 139 vlan->real_dev = real_dev; 140 vlan->flags = VLAN_FLAG_REORDER_HDR; 141 142 err = vlan_check_real_dev(real_dev, vlan->vlan_id); --- 117 unchanged lines hidden --- | 136 if (!real_dev) 137 return -ENODEV; 138 139 vlan->vlan_id = nla_get_u16(data[IFLA_VLAN_ID]); 140 vlan->real_dev = real_dev; 141 vlan->flags = VLAN_FLAG_REORDER_HDR; 142 143 err = vlan_check_real_dev(real_dev, vlan->vlan_id); --- 117 unchanged lines hidden --- |