Committed by
Gerrit Code Review
[GEANT] Multiple VLAN-IDs allowed for trunk mode of ports.
Change-Id: Ib6add6f4bcdcc9ed0fb0448fef91f9f0dbebb57d
Showing
4 changed files
with
93 additions
and
46 deletions
| ... | @@ -25,6 +25,9 @@ import org.onosproject.net.behaviour.InterfaceConfig; | ... | @@ -25,6 +25,9 @@ import org.onosproject.net.behaviour.InterfaceConfig; |
| 25 | import org.onosproject.net.driver.DriverHandler; | 25 | import org.onosproject.net.driver.DriverHandler; |
| 26 | import org.onosproject.net.driver.DriverService; | 26 | import org.onosproject.net.driver.DriverService; |
| 27 | 27 | ||
| 28 | +import java.util.ArrayList; | ||
| 29 | +import java.util.List; | ||
| 30 | + | ||
| 28 | /** | 31 | /** |
| 29 | * Configures a device interface. | 32 | * Configures a device interface. |
| 30 | */ | 33 | */ |
| ... | @@ -36,6 +39,8 @@ public class DeviceInterfaceAddCommand extends AbstractShellCommand { | ... | @@ -36,6 +39,8 @@ public class DeviceInterfaceAddCommand extends AbstractShellCommand { |
| 36 | "VLAN %s added on device %s interface %s."; | 39 | "VLAN %s added on device %s interface %s."; |
| 37 | private static final String CONFIG_VLAN_FAILURE = | 40 | private static final String CONFIG_VLAN_FAILURE = |
| 38 | "Failed to add VLAN %s on device %s interface %s."; | 41 | "Failed to add VLAN %s on device %s interface %s."; |
| 42 | + private static final String ONE_VLAN_ALLOWED = | ||
| 43 | + "Only one VLAN allowed for access mode on device %s interface %s."; | ||
| 39 | 44 | ||
| 40 | private static final String CONFIG_TRUNK_SUCCESS = | 45 | private static final String CONFIG_TRUNK_SUCCESS = |
| 41 | "Trunk mode added for VLAN %s on device %s interface %s."; | 46 | "Trunk mode added for VLAN %s on device %s interface %s."; |
| ... | @@ -53,11 +58,11 @@ public class DeviceInterfaceAddCommand extends AbstractShellCommand { | ... | @@ -53,11 +58,11 @@ public class DeviceInterfaceAddCommand extends AbstractShellCommand { |
| 53 | 58 | ||
| 54 | @Argument(index = 2, name = "vlan", | 59 | @Argument(index = 2, name = "vlan", |
| 55 | description = "VLAN ID", | 60 | description = "VLAN ID", |
| 56 | - required = true, multiValued = false) | 61 | + required = true, multiValued = true) |
| 57 | - private String vlanString = null; | 62 | + private String[] vlanStrings = null; |
| 58 | 63 | ||
| 59 | @Option(name = "-t", aliases = "--trunk", | 64 | @Option(name = "-t", aliases = "--trunk", |
| 60 | - description = "Configure interface as trunk for VLAN", | 65 | + description = "Configure interface as trunk for VLAN(s)", |
| 61 | required = false, multiValued = false) | 66 | required = false, multiValued = false) |
| 62 | private boolean trunkMode = false; | 67 | private boolean trunkMode = false; |
| 63 | 68 | ||
| ... | @@ -68,23 +73,31 @@ public class DeviceInterfaceAddCommand extends AbstractShellCommand { | ... | @@ -68,23 +73,31 @@ public class DeviceInterfaceAddCommand extends AbstractShellCommand { |
| 68 | DriverHandler h = service.createHandler(deviceId); | 73 | DriverHandler h = service.createHandler(deviceId); |
| 69 | InterfaceConfig interfaceConfig = h.behaviour(InterfaceConfig.class); | 74 | InterfaceConfig interfaceConfig = h.behaviour(InterfaceConfig.class); |
| 70 | 75 | ||
| 71 | - VlanId vlanId = VlanId.vlanId(Short.parseShort(vlanString)); | 76 | + List<VlanId> vlanIds = new ArrayList<>(); |
| 77 | + for (String vlanString : vlanStrings) { | ||
| 78 | + vlanIds.add(VlanId.vlanId(Short.parseShort(vlanString))); | ||
| 79 | + } | ||
| 72 | 80 | ||
| 73 | if (trunkMode) { | 81 | if (trunkMode) { |
| 74 | // Trunk mode to be enabled for VLAN. | 82 | // Trunk mode to be enabled for VLAN. |
| 75 | - if (interfaceConfig.addTrunkInterface(deviceId, portName, vlanId)) { | 83 | + if (interfaceConfig.addTrunkInterface(deviceId, portName, vlanIds)) { |
| 76 | - print(CONFIG_TRUNK_SUCCESS, vlanId, deviceId, portName); | 84 | + print(CONFIG_TRUNK_SUCCESS, vlanIds, deviceId, portName); |
| 77 | } else { | 85 | } else { |
| 78 | - print(CONFIG_TRUNK_FAILURE, vlanId, deviceId, portName); | 86 | + print(CONFIG_TRUNK_FAILURE, vlanIds, deviceId, portName); |
| 79 | } | 87 | } |
| 80 | return; | 88 | return; |
| 81 | } | 89 | } |
| 82 | 90 | ||
| 83 | - // VLAN to be added to interface. | 91 | + // Access mode to be enabled for VLAN. |
| 84 | - if (interfaceConfig.addInterfaceToVlan(deviceId, portName, vlanId)) { | 92 | + if (vlanIds.size() != 1) { |
| 85 | - print(CONFIG_VLAN_SUCCESS, vlanId, deviceId, portName); | 93 | + print(ONE_VLAN_ALLOWED, deviceId, portName); |
| 94 | + return; | ||
| 95 | + } | ||
| 96 | + VlanId accessVlanId = vlanIds.get(0); | ||
| 97 | + if (interfaceConfig.addInterfaceToVlan(deviceId, portName, accessVlanId)) { | ||
| 98 | + print(CONFIG_VLAN_SUCCESS, accessVlanId, deviceId, portName); | ||
| 86 | } else { | 99 | } else { |
| 87 | - print(CONFIG_VLAN_FAILURE, vlanId, deviceId, portName); | 100 | + print(CONFIG_VLAN_FAILURE, accessVlanId, deviceId, portName); |
| 88 | } | 101 | } |
| 89 | } | 102 | } |
| 90 | 103 | ... | ... |
| ... | @@ -25,6 +25,9 @@ import org.onosproject.net.behaviour.InterfaceConfig; | ... | @@ -25,6 +25,9 @@ import org.onosproject.net.behaviour.InterfaceConfig; |
| 25 | import org.onosproject.net.driver.DriverHandler; | 25 | import org.onosproject.net.driver.DriverHandler; |
| 26 | import org.onosproject.net.driver.DriverService; | 26 | import org.onosproject.net.driver.DriverService; |
| 27 | 27 | ||
| 28 | +import java.util.ArrayList; | ||
| 29 | +import java.util.List; | ||
| 30 | + | ||
| 28 | /** | 31 | /** |
| 29 | * Removes configured interface from a device. | 32 | * Removes configured interface from a device. |
| 30 | */ | 33 | */ |
| ... | @@ -36,6 +39,8 @@ public class DeviceInterfaceRemoveCommand extends AbstractShellCommand { | ... | @@ -36,6 +39,8 @@ public class DeviceInterfaceRemoveCommand extends AbstractShellCommand { |
| 36 | "VLAN %s removed from device %s interface %s."; | 39 | "VLAN %s removed from device %s interface %s."; |
| 37 | private static final String REMOVE_VLAN_FAILURE = | 40 | private static final String REMOVE_VLAN_FAILURE = |
| 38 | "Failed to remove VLAN %s from device %s interface %s."; | 41 | "Failed to remove VLAN %s from device %s interface %s."; |
| 42 | + private static final String ONE_VLAN_ALLOWED = | ||
| 43 | + "Only one VLAN allowed for access mode on device %s interface %s."; | ||
| 39 | 44 | ||
| 40 | private static final String REMOVE_TRUNK_SUCCESS = | 45 | private static final String REMOVE_TRUNK_SUCCESS = |
| 41 | "Trunk mode removed for VLAN %s on device %s interface %s."; | 46 | "Trunk mode removed for VLAN %s on device %s interface %s."; |
| ... | @@ -53,11 +58,11 @@ public class DeviceInterfaceRemoveCommand extends AbstractShellCommand { | ... | @@ -53,11 +58,11 @@ public class DeviceInterfaceRemoveCommand extends AbstractShellCommand { |
| 53 | 58 | ||
| 54 | @Argument(index = 2, name = "vlan", | 59 | @Argument(index = 2, name = "vlan", |
| 55 | description = "VLAN ID", | 60 | description = "VLAN ID", |
| 56 | - required = true, multiValued = false) | 61 | + required = true, multiValued = true) |
| 57 | - private String vlanString = null; | 62 | + private String[] vlanStrings = null; |
| 58 | 63 | ||
| 59 | @Option(name = "-t", aliases = "--trunk", | 64 | @Option(name = "-t", aliases = "--trunk", |
| 60 | - description = "Remove trunk mode for VLAN", | 65 | + description = "Remove trunk mode for VLAN(s)", |
| 61 | required = false, multiValued = false) | 66 | required = false, multiValued = false) |
| 62 | private boolean trunkMode = false; | 67 | private boolean trunkMode = false; |
| 63 | 68 | ||
| ... | @@ -68,23 +73,31 @@ public class DeviceInterfaceRemoveCommand extends AbstractShellCommand { | ... | @@ -68,23 +73,31 @@ public class DeviceInterfaceRemoveCommand extends AbstractShellCommand { |
| 68 | DriverHandler h = service.createHandler(deviceId); | 73 | DriverHandler h = service.createHandler(deviceId); |
| 69 | InterfaceConfig interfaceConfig = h.behaviour(InterfaceConfig.class); | 74 | InterfaceConfig interfaceConfig = h.behaviour(InterfaceConfig.class); |
| 70 | 75 | ||
| 71 | - VlanId vlanId = VlanId.vlanId(Short.parseShort(vlanString)); | 76 | + List<VlanId> vlanIds = new ArrayList<>(); |
| 77 | + for (String vlanString : vlanStrings) { | ||
| 78 | + vlanIds.add(VlanId.vlanId(Short.parseShort(vlanString))); | ||
| 79 | + } | ||
| 72 | 80 | ||
| 73 | if (trunkMode) { | 81 | if (trunkMode) { |
| 74 | // Trunk mode for VLAN to be removed. | 82 | // Trunk mode for VLAN to be removed. |
| 75 | - if (interfaceConfig.removeTrunkInterface(deviceId, portName, vlanId)) { | 83 | + if (interfaceConfig.removeTrunkInterface(deviceId, portName, vlanIds)) { |
| 76 | - print(REMOVE_TRUNK_SUCCESS, vlanId, deviceId, portName); | 84 | + print(REMOVE_TRUNK_SUCCESS, vlanIds, deviceId, portName); |
| 77 | } else { | 85 | } else { |
| 78 | - print(REMOVE_TRUNK_FAILURE, vlanId, deviceId, portName); | 86 | + print(REMOVE_TRUNK_FAILURE, vlanIds, deviceId, portName); |
| 79 | } | 87 | } |
| 80 | return; | 88 | return; |
| 81 | } | 89 | } |
| 82 | 90 | ||
| 83 | - // Interface to be removed from VLAN. | 91 | + // Access mode for VLAN to be removed. |
| 84 | - if (interfaceConfig.removeInterfaceFromVlan(deviceId, portName, vlanId)) { | 92 | + if (vlanIds.size() != 1) { |
| 85 | - print(REMOVE_VLAN_SUCCESS, vlanId, deviceId, portName); | 93 | + print(ONE_VLAN_ALLOWED, deviceId, portName); |
| 94 | + return; | ||
| 95 | + } | ||
| 96 | + VlanId accessVlanId = vlanIds.get(0); | ||
| 97 | + if (interfaceConfig.removeInterfaceFromVlan(deviceId, portName, accessVlanId)) { | ||
| 98 | + print(REMOVE_VLAN_SUCCESS, accessVlanId, deviceId, portName); | ||
| 86 | } else { | 99 | } else { |
| 87 | - print(REMOVE_VLAN_FAILURE, vlanId, deviceId, portName); | 100 | + print(REMOVE_VLAN_FAILURE, accessVlanId, deviceId, portName); |
| 88 | } | 101 | } |
| 89 | } | 102 | } |
| 90 | 103 | ... | ... |
| ... | @@ -19,6 +19,8 @@ import org.onlab.packet.VlanId; | ... | @@ -19,6 +19,8 @@ import org.onlab.packet.VlanId; |
| 19 | import org.onosproject.net.DeviceId; | 19 | import org.onosproject.net.DeviceId; |
| 20 | import org.onosproject.net.driver.HandlerBehaviour; | 20 | import org.onosproject.net.driver.HandlerBehaviour; |
| 21 | 21 | ||
| 22 | +import java.util.List; | ||
| 23 | + | ||
| 22 | /** | 24 | /** |
| 23 | * Means to configure interfaces on devices. | 25 | * Means to configure interfaces on devices. |
| 24 | */ | 26 | */ |
| ... | @@ -43,22 +45,22 @@ public interface InterfaceConfig extends HandlerBehaviour { | ... | @@ -43,22 +45,22 @@ public interface InterfaceConfig extends HandlerBehaviour { |
| 43 | boolean removeInterfaceFromVlan(DeviceId deviceId, String intf, VlanId vlanId); | 45 | boolean removeInterfaceFromVlan(DeviceId deviceId, String intf, VlanId vlanId); |
| 44 | 46 | ||
| 45 | /** | 47 | /** |
| 46 | - * Configures an interface as trunk for VLAN. | 48 | + * Configures an interface as trunk for VLANs. |
| 47 | * @param deviceId the device ID | 49 | * @param deviceId the device ID |
| 48 | * @param intf the name of the interface | 50 | * @param intf the name of the interface |
| 49 | - * @param vlanId the VLAN ID | 51 | + * @param vlanIds the VLAN IDs |
| 50 | * @return the result of operation | 52 | * @return the result of operation |
| 51 | */ | 53 | */ |
| 52 | - boolean addTrunkInterface(DeviceId deviceId, String intf, VlanId vlanId); | 54 | + boolean addTrunkInterface(DeviceId deviceId, String intf, List<VlanId> vlanIds); |
| 53 | 55 | ||
| 54 | /** | 56 | /** |
| 55 | - * Removes trunk mode configuration for VLAN from an interface. | 57 | + * Removes trunk mode configuration for VLANs from an interface. |
| 56 | * @param deviceId the device ID | 58 | * @param deviceId the device ID |
| 57 | * @param intf the name of the interface | 59 | * @param intf the name of the interface |
| 58 | - * @param vlanId the VLAN ID | 60 | + * @param vlanIds the VLAN IDs |
| 59 | * @return the result of operation | 61 | * @return the result of operation |
| 60 | */ | 62 | */ |
| 61 | - boolean removeTrunkInterface(DeviceId deviceId, String intf, VlanId vlanId); | 63 | + boolean removeTrunkInterface(DeviceId deviceId, String intf, List<VlanId> vlanIds); |
| 62 | 64 | ||
| 63 | /** | 65 | /** |
| 64 | * TODO Addition of more methods to make the behavior symmetrical. | 66 | * TODO Addition of more methods to make the behavior symmetrical. | ... | ... |
| ... | @@ -30,6 +30,7 @@ import org.slf4j.Logger; | ... | @@ -30,6 +30,7 @@ import org.slf4j.Logger; |
| 30 | 30 | ||
| 31 | import java.io.ByteArrayInputStream; | 31 | import java.io.ByteArrayInputStream; |
| 32 | import java.nio.charset.StandardCharsets; | 32 | import java.nio.charset.StandardCharsets; |
| 33 | +import java.util.List; | ||
| 33 | 34 | ||
| 34 | import static com.google.common.base.Preconditions.checkNotNull; | 35 | import static com.google.common.base.Preconditions.checkNotNull; |
| 35 | import static org.slf4j.LoggerFactory.getLogger; | 36 | import static org.slf4j.LoggerFactory.getLogger; |
| ... | @@ -168,14 +169,14 @@ public class InterfaceConfigCiscoIosImpl extends AbstractHandlerBehaviour | ... | @@ -168,14 +169,14 @@ public class InterfaceConfigCiscoIosImpl extends AbstractHandlerBehaviour |
| 168 | } | 169 | } |
| 169 | 170 | ||
| 170 | /** | 171 | /** |
| 171 | - * Configures an interface as trunk for VLAN. | 172 | + * Configures an interface as trunk for VLANs. |
| 172 | * @param deviceId the device ID | 173 | * @param deviceId the device ID |
| 173 | * @param intf the name of the interface | 174 | * @param intf the name of the interface |
| 174 | - * @param vlanId the VLAN ID | 175 | + * @param vlanIds the VLAN IDs |
| 175 | * @return the result of operation | 176 | * @return the result of operation |
| 176 | */ | 177 | */ |
| 177 | @Override | 178 | @Override |
| 178 | - public boolean addTrunkInterface(DeviceId deviceId, String intf, VlanId vlanId) { | 179 | + public boolean addTrunkInterface(DeviceId deviceId, String intf, List<VlanId> vlanIds) { |
| 179 | NetconfController controller = checkNotNull(handler() | 180 | NetconfController controller = checkNotNull(handler() |
| 180 | .get(NetconfController.class)); | 181 | .get(NetconfController.class)); |
| 181 | 182 | ||
| ... | @@ -183,10 +184,10 @@ public class InterfaceConfigCiscoIosImpl extends AbstractHandlerBehaviour | ... | @@ -183,10 +184,10 @@ public class InterfaceConfigCiscoIosImpl extends AbstractHandlerBehaviour |
| 183 | .data().deviceId()).getSession(); | 184 | .data().deviceId()).getSession(); |
| 184 | String reply; | 185 | String reply; |
| 185 | try { | 186 | try { |
| 186 | - reply = session.requestSync(addTrunkInterfaceBuilder(intf, vlanId)); | 187 | + reply = session.requestSync(addTrunkInterfaceBuilder(intf, vlanIds)); |
| 187 | } catch (NetconfException e) { | 188 | } catch (NetconfException e) { |
| 188 | log.error("Failed to configure trunk mode for VLAN ID {} on device {} interface {}.", | 189 | log.error("Failed to configure trunk mode for VLAN ID {} on device {} interface {}.", |
| 189 | - vlanId, deviceId, intf, e); | 190 | + vlanIds, deviceId, intf, e); |
| 190 | return false; | 191 | return false; |
| 191 | } | 192 | } |
| 192 | 193 | ||
| ... | @@ -195,12 +196,12 @@ public class InterfaceConfigCiscoIosImpl extends AbstractHandlerBehaviour | ... | @@ -195,12 +196,12 @@ public class InterfaceConfigCiscoIosImpl extends AbstractHandlerBehaviour |
| 195 | } | 196 | } |
| 196 | 197 | ||
| 197 | /** | 198 | /** |
| 198 | - * Builds a request to configure an interface as trunk for VLAN. | 199 | + * Builds a request to configure an interface as trunk for VLANs. |
| 199 | * @param intf the name of the interface | 200 | * @param intf the name of the interface |
| 200 | - * @param vlanId the VLAN ID | 201 | + * @param vlanIds the VLAN IDs |
| 201 | * @return the request string. | 202 | * @return the request string. |
| 202 | */ | 203 | */ |
| 203 | - private String addTrunkInterfaceBuilder(String intf, VlanId vlanId) { | 204 | + private String addTrunkInterfaceBuilder(String intf, List<VlanId> vlanIds) { |
| 204 | StringBuilder rpc = | 205 | StringBuilder rpc = |
| 205 | new StringBuilder("<rpc xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" "); | 206 | new StringBuilder("<rpc xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" "); |
| 206 | rpc.append("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">"); | 207 | rpc.append("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">"); |
| ... | @@ -217,7 +218,7 @@ public class InterfaceConfigCiscoIosImpl extends AbstractHandlerBehaviour | ... | @@ -217,7 +218,7 @@ public class InterfaceConfigCiscoIosImpl extends AbstractHandlerBehaviour |
| 217 | rpc.append("<switchport><trunk><encapsulation><dot1q/></encapsulation>"); | 218 | rpc.append("<switchport><trunk><encapsulation><dot1q/></encapsulation>"); |
| 218 | rpc.append("</trunk></switchport><switchport><trunk><allowed><vlan>"); | 219 | rpc.append("</trunk></switchport><switchport><trunk><allowed><vlan>"); |
| 219 | rpc.append("<VLANIDsAllowedVLANsPortTrunkingMode>"); | 220 | rpc.append("<VLANIDsAllowedVLANsPortTrunkingMode>"); |
| 220 | - rpc.append(vlanId); | 221 | + rpc.append(getVlansString(vlanIds)); |
| 221 | rpc.append("</VLANIDsAllowedVLANsPortTrunkingMode></vlan></allowed></trunk>"); | 222 | rpc.append("</VLANIDsAllowedVLANsPortTrunkingMode></vlan></allowed></trunk>"); |
| 222 | rpc.append("</switchport><switchport><mode><trunk/></mode></switchport>"); | 223 | rpc.append("</switchport><switchport><mode><trunk/></mode></switchport>"); |
| 223 | rpc.append("</ConfigIf-Configuration>"); | 224 | rpc.append("</ConfigIf-Configuration>"); |
| ... | @@ -232,14 +233,14 @@ public class InterfaceConfigCiscoIosImpl extends AbstractHandlerBehaviour | ... | @@ -232,14 +233,14 @@ public class InterfaceConfigCiscoIosImpl extends AbstractHandlerBehaviour |
| 232 | } | 233 | } |
| 233 | 234 | ||
| 234 | /** | 235 | /** |
| 235 | - * Removes trunk mode configuration for VLAN from an interface. | 236 | + * Removes trunk mode configuration for VLANs from an interface. |
| 236 | * @param deviceId the device ID | 237 | * @param deviceId the device ID |
| 237 | * @param intf the name of the interface | 238 | * @param intf the name of the interface |
| 238 | - * @param vlanId the VLAN ID | 239 | + * @param vlanIds the VLAN IDs |
| 239 | * @return the result of operation | 240 | * @return the result of operation |
| 240 | */ | 241 | */ |
| 241 | @Override | 242 | @Override |
| 242 | - public boolean removeTrunkInterface(DeviceId deviceId, String intf, VlanId vlanId) { | 243 | + public boolean removeTrunkInterface(DeviceId deviceId, String intf, List<VlanId> vlanIds) { |
| 243 | NetconfController controller = checkNotNull(handler() | 244 | NetconfController controller = checkNotNull(handler() |
| 244 | .get(NetconfController.class)); | 245 | .get(NetconfController.class)); |
| 245 | 246 | ||
| ... | @@ -247,10 +248,10 @@ public class InterfaceConfigCiscoIosImpl extends AbstractHandlerBehaviour | ... | @@ -247,10 +248,10 @@ public class InterfaceConfigCiscoIosImpl extends AbstractHandlerBehaviour |
| 247 | .data().deviceId()).getSession(); | 248 | .data().deviceId()).getSession(); |
| 248 | String reply; | 249 | String reply; |
| 249 | try { | 250 | try { |
| 250 | - reply = session.requestSync(removeTrunkInterfaceBuilder(intf, vlanId)); | 251 | + reply = session.requestSync(removeTrunkInterfaceBuilder(intf, vlanIds)); |
| 251 | } catch (NetconfException e) { | 252 | } catch (NetconfException e) { |
| 252 | log.error("Failed to remove trunk mode for VLAN ID {} on device {} interface {}.", | 253 | log.error("Failed to remove trunk mode for VLAN ID {} on device {} interface {}.", |
| 253 | - vlanId, deviceId, intf, e); | 254 | + vlanIds, deviceId, intf, e); |
| 254 | return false; | 255 | return false; |
| 255 | } | 256 | } |
| 256 | 257 | ||
| ... | @@ -259,12 +260,12 @@ public class InterfaceConfigCiscoIosImpl extends AbstractHandlerBehaviour | ... | @@ -259,12 +260,12 @@ public class InterfaceConfigCiscoIosImpl extends AbstractHandlerBehaviour |
| 259 | } | 260 | } |
| 260 | 261 | ||
| 261 | /** | 262 | /** |
| 262 | - * Builds a request to remove trunk mode configuration for VLAN from an interface. | 263 | + * Builds a request to remove trunk mode configuration for VLANs from an interface. |
| 263 | * @param intf the name of the interface | 264 | * @param intf the name of the interface |
| 264 | - * @param vlanId the VLAN ID | 265 | + * @param vlanIds the VLAN IDs |
| 265 | * @return the request string. | 266 | * @return the request string. |
| 266 | */ | 267 | */ |
| 267 | - private String removeTrunkInterfaceBuilder(String intf, VlanId vlanId) { | 268 | + private String removeTrunkInterfaceBuilder(String intf, List<VlanId> vlanIds) { |
| 268 | StringBuilder rpc = | 269 | StringBuilder rpc = |
| 269 | new StringBuilder("<rpc xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" "); | 270 | new StringBuilder("<rpc xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\" "); |
| 270 | rpc.append("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">"); | 271 | rpc.append("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">"); |
| ... | @@ -283,7 +284,7 @@ public class InterfaceConfigCiscoIosImpl extends AbstractHandlerBehaviour | ... | @@ -283,7 +284,7 @@ public class InterfaceConfigCiscoIosImpl extends AbstractHandlerBehaviour |
| 283 | rpc.append("<dot1q/></encapsulation></trunk></switchport>"); | 284 | rpc.append("<dot1q/></encapsulation></trunk></switchport>"); |
| 284 | rpc.append("<switchport><trunk operation=\"delete\"><allowed><vlan>"); | 285 | rpc.append("<switchport><trunk operation=\"delete\"><allowed><vlan>"); |
| 285 | rpc.append("<VLANIDsAllowedVLANsPortTrunkingMode>"); | 286 | rpc.append("<VLANIDsAllowedVLANsPortTrunkingMode>"); |
| 286 | - rpc.append(vlanId); | 287 | + rpc.append(getVlansString(vlanIds)); |
| 287 | rpc.append("</VLANIDsAllowedVLANsPortTrunkingMode></vlan></allowed>"); | 288 | rpc.append("</VLANIDsAllowedVLANsPortTrunkingMode></vlan></allowed>"); |
| 288 | rpc.append("</trunk></switchport></ConfigIf-Configuration>"); | 289 | rpc.append("</trunk></switchport></ConfigIf-Configuration>"); |
| 289 | rpc.append("</interface>"); | 290 | rpc.append("</interface>"); |
| ... | @@ -296,5 +297,23 @@ public class InterfaceConfigCiscoIosImpl extends AbstractHandlerBehaviour | ... | @@ -296,5 +297,23 @@ public class InterfaceConfigCiscoIosImpl extends AbstractHandlerBehaviour |
| 296 | return rpc.toString(); | 297 | return rpc.toString(); |
| 297 | } | 298 | } |
| 298 | 299 | ||
| 300 | + /** | ||
| 301 | + * Builds a string with comma separated VLAN-IDs. | ||
| 302 | + * @param vlanIds the VLAN IDs | ||
| 303 | + * @return the string including the VLAN-IDs | ||
| 304 | + */ | ||
| 305 | + private String getVlansString(List<VlanId> vlanIds) { | ||
| 306 | + StringBuilder vlansStringBuilder = new StringBuilder(); | ||
| 307 | + | ||
| 308 | + for (int i = 0; i < vlanIds.size(); i++) { | ||
| 309 | + vlansStringBuilder.append(vlanIds.get(i)); | ||
| 310 | + | ||
| 311 | + if (i != vlanIds.size() - 1) { | ||
| 312 | + vlansStringBuilder.append(","); | ||
| 313 | + } | ||
| 314 | + } | ||
| 315 | + return vlansStringBuilder.toString(); | ||
| 316 | + } | ||
| 317 | + | ||
| 299 | } | 318 | } |
| 300 | 319 | ... | ... |
-
Please register or login to post a comment